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

[复制链接]
1037|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__) 的宏定义
 楼主| 328404042 发表于 2019-10-27 16:27 | 显示全部楼层
zhangmangui 发表于 2019-10-26 22:46
找找其他文件中关于#if defined(__TI_EABI__) 的宏定义

您好,我搜索过没找到,可以给个相关文件链接么?
 楼主| 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函数的时候没有下划线。
是输出格式的原因么?
sensitivity 发表于 2019-10-28 11:18 | 显示全部楼层
不太清楚,支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

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