打印
[MCU]

有关CMD文件的一个问题请教

[复制链接]
703|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
328404042|  楼主 | 2019-10-24 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#if defined(__TI_EABI__)
   .TI.ramfunc      : LOAD = FLASH_BANK0_SEC1,
                      RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
                      LOAD_START(RamfuncsLoadStart),
                      LOAD_SIZE(RamfuncsLoadSize),
                      LOAD_END(RamfuncsLoadEnd),
                      RUN_START(RamfuncsRunStart),
                      RUN_SIZE(RamfuncsRunSize),
                      RUN_END(RamfuncsRunEnd),
                      PAGE = 0, ALIGN(4)
#else                                          
   .TI.ramfunc      : LOAD = FLASH_BANK0_SEC1,
                      RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
                      LOAD_START(_RamfuncsLoadStart),
                      LOAD_SIZE(_RamfuncsLoadSize),
                      LOAD_END(_RamfuncsLoadEnd),
                      RUN_START(_RamfuncsRunStart),
                      RUN_SIZE(_RamfuncsRunSize),
                      RUN_END(_RamfuncsRunEnd),
                      PAGE = 0, ALIGN(4)
#endif


CMD预编译有两种情况,一种变量EABI输出格式,一种COFF输出格式。
我看头文件定义的变量是不带下划线的,如下:
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsLoadSize;
extern Uint16 RamfuncsRunStart;
extern Uint16 RamfuncsRunEnd;
extern Uint16 RamfuncsRunSize;

但是为何在COFF调用类似LOAD_START指令时,里面的变量需要加下划线,变成_RamFuncsLoadSize
不加的话编译会报错。

使用特权

评论回复

相关帖子

沙发
equivalent| | 2019-10-24 15:46 | 只看该作者
应该是预编译的环境不同导致的吧

使用特权

评论回复
板凳
328404042|  楼主 | 2019-10-25 11:31 | 只看该作者
equivalent 发表于 2019-10-24 15:46
应该是预编译的环境不同导致的吧

主要想了解这两个预编译环境的区别

使用特权

评论回复
地板
zhangmangui| | 2019-10-26 22:46 | 只看该作者
找找其他文件中关于#if defined(__TI_EABI__) 的宏定义

使用特权

评论回复
5
328404042|  楼主 | 2019-10-27 16:27 | 只看该作者
zhangmangui 发表于 2019-10-26 22:46
找找其他文件中关于#if defined(__TI_EABI__) 的宏定义

您好,我搜索过没找到,可以给个相关文件链接么?

使用特权

评论回复
6
328404042|  楼主 | 2019-10-27 16:37 | 只看该作者
zhangmangui 发表于 2019-10-26 22:46
找找其他文件中关于#if defined(__TI_EABI__) 的宏定义

我看过您2015发的一个帖子,链接如下:https://bbs.21ic.com/icview-882026-1-1.html
里面也描述到了LOAD_START, LOAD_END, RUN_START等相关指令,就是不知为何CMD用的_RamfuncsLoadStart等指向段地址变量名用了下划线,而在·C文件中调用Memcpy函数的时候没有下划线。
是输出格式的原因么?

使用特权

评论回复
7
sensitivity| | 2019-10-28 11:18 | 只看该作者
不太清楚,支持一下

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝