打印

STM32 如何定位变量?

[复制链接]
5343|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个字节。

使用特权

评论回复
5
juanhao|  楼主 | 2012-4-5 17:21 | 只看该作者
比如,我要把IAP要用的变量
u8 *ReceivedData;
u8 DataBuffer[130];
放在0X20000000~0X20000200,应用程序变量放在0X20000200之后。具体要怎么写?

使用特权

评论回复
6
香水城| | 2012-4-5 17:28 | 只看该作者
7
dfsa| | 2012-4-5 18:12 | 只看该作者
论坛里相关资料的确是很多,LZ自己搜搜

使用特权

评论回复
8
juanhao|  楼主 | 2012-4-5 18:33 | 只看该作者
香主,你所推荐的贴子,看完不得要领,能否针对我的问题,给个明确详细的做法?

比如,我要把IAP要用的变量
u8 *ReceivedData;
u8 DataBuffer[130];
放在0X20000000~0X20000200,应用程序变量放在0X20000200之后。具体要怎么写?

使用特权

评论回复
9
香水城| | 2012-4-5 18:48 | 只看该作者
香主,你所推荐的贴子,看完不得要领,能否针对我的问题,给个明确详细的做法?

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


不要问我,我也不会。

那些帖子不是我推荐的,是我搜出来的一部分,作为例子让你知道相关的讨论很多,让你自己继续,就算是抛砖引玉吧。

使用特权

评论回复
10
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之后?

有哪位做过的朋友,给个明确的答案。

使用特权

评论回复
11
juanhao|  楼主 | 2012-4-5 18:58 | 只看该作者
我做的产品架构是有一个ARM11跑WINCE通过串口与STM32F105联系。STM32负责底层一些控制和电源管理,STM32的程序转换成BIN档放在SD卡里,ARM11抓取数据通过UART送到STM32升级。

使用特权

评论回复
12
nongfuxu| | 2012-4-6 07:27 | 只看该作者
标记.

使用特权

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

本版积分规则

91

主题

187

帖子

0

粉丝