打印
[微控制器/MCU]

问一下,KEIL下(LPC17XX),如何手动初始化RW段?

[复制链接]
2922|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ZorroCN|  楼主 | 2013-8-12 11:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,因为软件分成BOOT和FIRMWARE两层,在FIRMWARE层不希望调用KEIL封装的初始化,所以需要手动初始化RW和ZI区。
编译器导出的变量Image$$EWRAM$$ZI$$Base和Image$$EWRAM$$ZI$$Length这两个(只需要extern声明一下)可以用来手动清零ZI区,但是没有找到RW区的相应的变量,像Image$$ER$$RW$$Base ,Load$$ER$$RW$$Base和Load$$ER$$RW$$Length这三个变量都显示“Undefined symbol”之类的错误。
忘了说,我的是KEIL FOR ARM 4.60版本。

相关帖子

沙发
ZorroCN|  楼主 | 2013-8-12 11:54 | 只看该作者
KEIL的HELP文档里面有这么可能和这个问题有关,但是,其中的region_name如果不是EWRAM,那么是什么?
Load$$region_name$$Base Load address of the region.
Load$$region_name$$Length Region length in bytes.
Load$$region_name$$Limit Address of the byte beyond the end of the execution region.
Load$$region_name$$RO$$Base Address of the RO output section in this execution region.
Load$$region_name$$RO$$Length Length of the RO output section in bytes.
Load$$region_name$$RO$$Limit Address of the byte beyond the end of the RO output section in the execution region.
Load$$region_name$$RW$$Base Address of the RW output section in this execution region.
Load$$region_name$$RW$$Length Length of the RW output section in bytes.
Load$$region_name$$RW$$Limit Address of the byte beyond the end of the RW output section in the execution region.
Load$$region_name$$ZI$$Base Load address of the ZI output section in this execution region.
Load$$region_name$$ZI$$Length Load length of the ZI output section in bytes.

The Load Length of ZI is zero unless region_name has the ZEROPAD scatter-loading keyword set. If ZEROPAD is set then:

Load Length = Image$$region_name$$ZI$$Length

Load$$region_name$$ZI$$Limit Load address of the byte beyond the end of the ZI output section in the execution region.

使用特权

评论回复
板凳
ZorroCN|  楼主 | 2013-8-12 14:32 | 只看该作者
明白了,直接RW_IRAM1就可以(分散加载文件里面的region的命名)。

使用特权

评论回复
地板
古事东流| | 2014-4-13 23:09 | 只看该作者
ZorroCN 发表于 2013-8-12 11:54
KEIL的HELP文档里面有这么可能和这个问题有关,但是,其中的region_name如果不是EWRAM,那么是什么?
Load$ ...

您能帮我解决LPC1227FBD64板子和LPCXpresso软件的连接问题吗??上面提示;Connect to emulator :NXP LPC12xx。板子的驱动是没有问题的,十分感谢您。。。

使用特权

评论回复
5
duanchen945| | 2015-1-5 09:48 | 只看该作者
楼主,我想请教个问题啊,你是直接
extern unsigned int Image$$RW_IRAM1$$ZI$$Length;
然后使用Image$$RW_IRAM1$$ZI$$Length变量就是长度吗?我引用这个变量的值是个非常不合理的数啊,求教!
同理还有Image$$RW_IRAM1$$ZI$$Base和Image$$RW_IRAM1$$ZI$$Limit,我得到的值都很不合理,但是如果对这两个取地址再强制转换成unsigned int的话就能得到ram区域的两个地址,不知道是不是该这么用呢?

使用特权

评论回复
6
ZorroCN|  楼主 | 2015-3-9 14:12 | 只看该作者
duanchen945 发表于 2015-1-5 09:48
楼主,我想请教个问题啊,你是直接
extern unsigned int Image$$RW_IRAM1$$ZI$$Length;
然后使用Image$$RW ...

你可以把这些数值用串口打出来,和.map文件里面的相关信息进行对比。确实是几个变量的地址才是所需要的数据。我现在就是类似的做法。

使用特权

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

本版积分规则

29

主题

84

帖子

0

粉丝