6714|38

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

str711地址问题 [复制链接]

菜鸟提问,希望得到帮助!!
最近刚使用STR711,看了DATASHEET和相关例程,收获不少,但是还是有些疑问:

将str711设置为内部FLASH启动,也就是说将FLASH的地址映射到0x0,那么当运用程序读FLASH的地址为什么要使用0x4****x,而不是0;写的时候我看到例程怎么两个地址都可以写,如写0X400c2100,可以用0X400c2100,也可以使用0X000c2100;而读必须使用0X400c2100。难道同一个物理单元同时拥有两个地址?
想了很久,查了很久,资料很少,没有搞明白。
此帖出自stm32/stm8论坛

最新回复

                                 哪位大侠能给小弟解释一下。。。。。。。  详情 回复 发表于 2009-8-14 09:10
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 没错,同一个物理单元同时拥有两个地址!
此帖出自stm32/stm8论坛
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
谢谢!
怪不得,这点跟其他芯片有太大的差别了,还是感觉st的资料少了,特别是中文的资料
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 我们目前主推的产品是STM32,如果你刚开始学,还是看STM32比较好。STM32的功能和性能比STR7有了全面的提升,对于客户作新设计,我们已经不推荐使用STR7了。
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
哦。这样子阿。不过我只设计软件,硬件不是我们公司负责,所以只能学习 STR7。
还有个问题,浏览了一下该论坛,说:flash第一次擦除写要在RAM中运行,是什么意思,每次上电都要这样吗?
好象没有这个必要吧.
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 每次上电都要这样。
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

7
 
好象我现在没有这么做都可以,所有程序都是在FLASH 中运行,照样可以读写BANK1,没有出错,
我在ADS中设置R0为0X40000000,程序下载到FLASH中,设置FLASH启动.应该所有程序都是在FLASH运行吧.但是就是没有出错!!!
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 好象现在有时候会开机无反应,应该是程序不执行还是跑飞掉,不知道是不是这个问题引起的,想请教一下,每次上电 要在RAM里运行第一次读写FLASH是如何做的?方法是怎么样的?谢谢!!
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
把需要操作的函数拷贝到RAM中,再调用RAM中的函数。

记得以前有一个例子,你找找看。
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 很遗憾,我在论坛中搜索了一下,没有找到该例子,那个例子是在论坛中吗?.那么想向版主请教一下,程序要实现从flash跳到ram,再从ram跳到FLASH是如何实现的是不是要在C语言中插入汇编使用LDR直接跳转,还是如何用C语言实现的?
此帖出自stm32/stm8论坛
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 o!!!!!!!!!
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

12
 


你到STR7的分类阅读区找找,我也回忆一下。

刚才好像找到一个,但是旧版换新版时链接丢了。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 有没有相关例子啊啊,或者稍微详细说明一下方法阿????
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 这个设置是根据编译器来设置的,不知道你使用的是什么开发软件。如果你使用的是IAR,我这里有相应的例程,里面有关于IAR方面的设置。如果你使用的是Keil(正版的),你可以咨询ARM或英蓓特。
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

15
 
谢谢,能发给我做的参考吗,邮箱是guwengchuixue@163.com
我是使用ADS1.2
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

16
 
                                 我想了想,就是不明白。程序执行如何从flash跳到ram又从ram跳回flash,而在ram中要运行的程序是如何复制过去,在flash中如何确定这段程序的开始复制地址和结束地址?
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

17
 
程序怎么跳,怎么拷贝都不是你关心的,是编译器完成的。

比如A在FLASH中运行,又调用B,B在RAM运行,B又调用C。你需要在写程序时指明A和C在flash中,B在RAM中(ADS怎么指定函数地址我不知道,你找找ADS的help文件吧),这样编译器会自动生成一段初始化代码,在main函数执行前自动拷贝B到RAM指定地址中。A在调用B时,会调用B在RAM中的地址,B去调用C,也是跳到C在flash中的地址,这些都不需要你关心。
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

18
 
                                 C语言里面程序可以分为code,RO,RW,ZI(每个程序可以有单独的,也可以公用)在link的时候根据链接脚本分配这些段的地址,在main函数初始化的时候把bin文件中的这些代码拷贝到相应的地址上。这些拷贝都不需要人工的干预
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

19
 
                                 这个有点明白,比如:main函数是在FLASH中运行,LINK时地址为FLASH地址,如定义函数runram();其连接为RAM地址.当开机时自动将runram()相关代码拷贝到RAM中,这个是明白的.不明白的地方是:当main函数调用runram()函数时,会自动跳转到RAM运行吗?如果会,那么当该函数结束时,会自动跳转回main函数继续运main函数的代码?
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

20
 
                                 当然可以阿
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表