打印

Keil uVision4 如何修改分散加载文件

[复制链接]
8095|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leebai_001|  楼主 | 2012-11-26 09:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
环境:STM32单片机,使用Keil for arm编译器。
目的:将几个C文件的内容固定在程序FLASH的指定地址上。
例如:
1. Init.c    设置在FLASH的扇区0上,该扇区为本文件独占扇区。
2. Para.c   设置在FLASH的扇区1上,该扇区也是文件独占扇区。
3.其余.c 不止一个,设置在FLASH的扇区2开始的位置,顺序不限,依次排序。
沙发
leebai_001|  楼主 | 2012-11-26 13:06 | 只看该作者
如何将STM32的FLASH 单独分出2个扇区,不写任何程序代码,留出来做参数区来用呢?

使用特权

评论回复
板凳
leebai_001|  楼主 | 2012-11-26 17:19 | 只看该作者
在不修改分散加载文件的前提条件下,能够实现将STM32的FLASH分出2个扇区来,只进行参数备份,不存储运行代码。

使用特权

评论回复
地板
inurl| | 2012-11-27 08:50 | 只看该作者
Init.c 上右键,options for file

使用特权

评论回复
5
leebai_001|  楼主 | 2012-11-27 13:24 | 只看该作者
Keil开发环境,可以把芯片内部ROM分成2部分:IROM1和IROM2.
由于STM32的FLASH设计的是,开头小,越往后扇区越大。
以STM32F407为例:扇区1:16K,扇区2:16K,扇区3:16K,扇区4:16K,扇区5:64K,扇区6:128K,。。。。实际使用中,不可能用64K或128K扇区来存储数据,太浪费,并且扇区过大,还存在擦除时间等问题,这就只能选择前面几个扇区。由于单片机加载扇区从零开始,扇区1需要单独使用,上述的应用,需要把FLASH分为3部分:启动扇区;参数扇区;程序区。
所以:4楼的方法不太适用。

使用特权

评论回复
6
leebai_001|  楼主 | 2012-11-29 13:18 | 只看该作者
上面的应用也算是比较典型的吧。
大家都很少这么用吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

93

帖子

0

粉丝