[STM32F4] 如何让程序从指定的flash地址开始运行?

[复制链接]
 楼主| lsdavid 发表于 2015-1-8 16:13 | 显示全部楼层 |阅读模式
我需要在F407内部flash里保存一些数据,所以希望能把程序存在sector11的128K,这样sector0~sector10就可以做存储用。不过从网上查了一下,好像sector0的开始部分一定会保留给向量跳转语句。哪位高人给指点一下是否是这样?如果是的话,是不是我设置target里的IROM1地址就可以指定程序从哪里开始了(也就是程序存储从那里开始)?有没有可能把向量跳转部分一起指定到其他地方?请高手赐教!
airwill 发表于 2015-1-8 19:50 | 显示全部楼层
由于 mcu 的硬件已经设置了程序入口地址和中断向量表地址, 所以 MCU 复位后自动会到sector0的开始部分获得堆栈指针和程序复位起始地址, 所以在 sector0 一定会保留给向量跳转语句。
 楼主| lsdavid 发表于 2015-1-12 08:27 | 显示全部楼层
多谢版主回复,那是不是说除了sector0,其他的就可以随意用了?如果我需要程序存储在sector11,是不是我设置target里的IROM1地址就可以指定程序从那里开始了?
diweo 发表于 2015-1-12 08:42 | 显示全部楼层
本帖最后由 diweo 于 2015-1-12 08:45 编辑
lsdavid 发表于 2015-1-12 08:27
多谢版主回复,那是不是说除了sector0,其他的就可以随意用了?如果我需要程序存储在sector11,是不是我设 ...

是的。
不过,在Keil里面怎么设置,我不太清楚,应该也是可以的。
bing50200214 发表于 2015-5-11 16:52 | 显示全部楼层
求教, keil mdk中怎么设置
gmm2015 发表于 2015-5-11 18:22 | 显示全部楼层
这种应用,一般都会把要存放的数据存放到最后的一个或者几个sector中
 楼主| lsdavid 发表于 2015-5-18 14:16 | 显示全部楼层
gmm2015 发表于 2015-5-11 18:22
这种应用,一般都会把要存放的数据存放到最后的一个或者几个sector中

后面的几个sector比较大,每次擦除的时间太长,因为数据量不是很多,所以我觉得放在前面的sector好像更好一些。
wowow 发表于 2015-5-18 16:31 | 显示全部楼层
设置target里的IROM1为sector0的地址范围,IROM2为SectorX至flash未尾,这样secotor1到sectorX-1就空出来了,想干啥随便。
 楼主| lsdavid 发表于 2015-5-19 12:23 | 显示全部楼层
wowow 发表于 2015-5-18 16:31
设置target里的IROM1为sector0的地址范围,IROM2为SectorX至flash未尾,这样secotor1到sectorX-1就空出来了 ...

这个方法应该可行,我试验一下,多谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

62

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部