STM32 如何定位变量?

[复制链接]
6222|11
 楼主| juanhao 发表于 2012-4-5 11:25 | 显示全部楼层 |阅读模式
我做IAP功能,IAP部分的变量放在0X20000000~0X20000200 ,0X20000200之后的放应用程序变量。不知道如何实现?
sjnh 发表于 2012-4-5 11:40 | 显示全部楼层
如果是IAR,可以用#pragma location定义位置,可以直接定义位置#pragma location=0xaddr;
也可以与icf文件结合定义

keil用过一点,不知道怎么定义
 楼主| juanhao 发表于 2012-4-5 12:01 | 显示全部楼层
谢谢!希望有朋友指条跟详细的方法。
hjiongh 发表于 2012-4-5 15:35 | 显示全部楼层
#pragma location ="ABC"
__root const char abc[3] = "ABC";

icf 文件中定义
place at address mem:0xaaaabbbb { readonly section ABC};

那么系统会自动在0xaaaabbbb地址写入"ABC",大小为3个字节。
 楼主| juanhao 发表于 2012-4-5 17:21 | 显示全部楼层
比如,我要把IAP要用的变量
u8 *ReceivedData;
u8 DataBuffer[130];
放在0X20000000~0X20000200,应用程序变量放在0X20000200之后。具体要怎么写?
香水城 发表于 2012-4-5 17:28 | 显示全部楼层
dfsa 发表于 2012-4-5 18:12 | 显示全部楼层
论坛里相关资料的确是很多,LZ自己搜搜
 楼主| juanhao 发表于 2012-4-5 18:33 | 显示全部楼层
香主,你所推荐的贴子,看完不得要领,能否针对我的问题,给个明确详细的做法?

比如,我要把IAP要用的变量
u8 *ReceivedData;
u8 DataBuffer[130];
放在0X20000000~0X20000200,应用程序变量放在0X20000200之后。具体要怎么写?
香水城 发表于 2012-4-5 18:48 | 显示全部楼层
香主,你所推荐的贴子,看完不得要领,能否针对我的问题,给个明确详细的做法?

比如,我要把IAP要用的变量
u8 *ReceivedData;
u8 DataBuffer[130];
放在0X20000000~0X20000200,应用程序变量放在0X20000200之后。具体 ...
juanhao 发表于 2012-4-5 18:33


不要问我,我也不会。

那些帖子不是我推荐的,是我搜出来的一部分,作为例子让你知道相关的讨论很多,让你自己继续,就算是抛砖引玉吧。
 楼主| juanhao 发表于 2012-4-5 18:51 | 显示全部楼层
我在做IAP功能,具体思路是:
把IAP程序放在0x08000000~0x08004000里,把应用程序放在0x08004000之后。另外,IAP程序里需要开辟一组数组用来存放收到的UART数据,所以这部分变量我想应该放在0x20000000~0x20000200里面,而应用程序变量则在0x20000200之后。我之前做STM8 IAP就是这么做的。现在换到STM32上,有几点不知道如何实现:
1:IAP程序如何定位到0x08000000~0x08004000里面?应用程序又如何定义到0x08004000之后的FLASH空间。注:我的IAP和应用程序是再一起的。
2:IAP的变量如何放在0x20000000~0x20000200,应用程序变量又如何放到0x20000200之后?

有哪位做过的朋友,给个明确的答案。
 楼主| juanhao 发表于 2012-4-5 18:58 | 显示全部楼层
我做的产品架构是有一个ARM11跑WINCE通过串口与STM32F105联系。STM32负责底层一些控制和电源管理,STM32的程序转换成BIN档放在SD卡里,ARM11抓取数据通过UART送到STM32升级。
nongfuxu 发表于 2012-4-6 07:27 | 显示全部楼层
标记.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

91

主题

187

帖子

0

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