TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F280049C: cmd配置

Part Number:TMS320F280049C

我在查阅代码时发现

memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

这个函数是把flash的代码复制到ram执行,我也看到了cmd里面又对应的代码:

.TI.ramfunc : LOAD = FLASH_BANK0_SEC1,
RUN = RAMLS0,
LOAD_START(RamfuncsLoadStart),
LOAD_SIZE(RamfuncsLoadSize),
LOAD_END(RamfuncsLoadEnd),
RUN_START(RamfuncsRunStart),
RUN_SIZE(RamfuncsRunSize),
RUN_END(RamfuncsRunEnd),
PAGE = 0, ALIGN(4)

但是我有个疑惑,这里面的的RamfuncsRunStart从未在任何文件中使用,只是声明了。请问在编译的时候是怎么获得函数的起始地址的呢?

Green Deng:

你好,这个函数的问题我在英文E2E上咨询了一下,你可以参考一下那边的回复:e2e.ti.com/…/tms320f280049-introduction-to-memcpy-function

,

user6057760:

您好,我仔细看了连接中的文档,对CMD认识更加深刻了,但是我还是不明白

memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

这个函数的用法,如果说是把函数的起始地址等给到cmd中定义的段如:

.TI.ramfunc : LOAD = FLASH_BANK0_SEC1, RUN = RAMLS0, LOAD_START(RamfuncsLoadStart), LOAD_SIZE(RamfuncsLoadSize), LOAD_END(RamfuncsLoadEnd), RUN_START(RamfuncsRunStart), RUN_SIZE(RamfuncsRunSize), RUN_END(RamfuncsRunEnd), PAGE = 0, ALIGN(4)

但是我并没有指定哪些函数要传入这个段,我只看到在初始化函数中调用了memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);这个函数…

另我还有个问题:在cmd中这段代码

#if defined(__TI_EABI__) .TI.ramfunc : LOAD = FLASH_BANK0_SEC1, RUN = RAMLS0, 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, LOAD_START(_RamfuncsLoadStart), LOAD_SIZE(_RamfuncsLoadSize), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), RUN_SIZE(_RamfuncsRunSize), RUN_END(_RamfuncsRunEnd), PAGE = 0, ALIGN(4)#endif

我并没有看到有任何函数定义__TI_EABI__,是不是在ccs中选这个选项来决定的?

您好,我仔细看了连接中的文档,对CMD认识更加深刻了,但是我还是不明白

memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

这个函数的用法,如果说是把函数的起始地址等给到cmd中定义的段如:

.TI.ramfunc : LOAD = FLASH_BANK0_SEC1,RUN = RAMLS0,LOAD_START(RamfuncsLoadStart),LOAD_SIZE(RamfuncsLoadSize),LOAD_END(RamfuncsLoadEnd),RUN_START(RamfuncsRunStart),RUN_SIZE(RamfuncsRunSize),RUN_END(RamfuncsRunEnd),PAGE = 0, ALIGN(4)

但是我并没有指定哪些函数要传入这个段,我只看到在初始化函数中调用了memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);这个函数…

另我还有个问题:在cmd中这段代码

#if defined(__TI_EABI__).TI.ramfunc : LOAD = FLASH_BANK0_SEC1,RUN = RAMLS0,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,LOAD_START(_RamfuncsLoadStart),LOAD_SIZE(_RamfuncsLoadSize),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),RUN_SIZE(_RamfuncsRunSize),RUN_END(_RamfuncsRunEnd),PAGE = 0, ALIGN(4)#endif

我并没有看到有任何函数定义__TI_EABI__,是不是在ccs中选这个选项来决定的?

您好,我仔细看了连接中的文档,对CMD认识更加深刻了,但是我还是不明白

memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

这个函数的用法,如果说是把函数的起始地址等给到cmd中定义的段如:

.TI.ramfunc : LOAD = FLASH_BANK0_SEC1,RUN = RAMLS0,LOAD_START(RamfuncsLoadStart),LOAD_SIZE(RamfuncsLoadSize),LOAD_END(RamfuncsLoadEnd),RUN_START(RamfuncsRunStart),RUN_SIZE(RamfuncsRunSize),RUN_END(RamfuncsRunEnd),PAGE = 0, ALIGN(4)

但是我并没有指定哪些函数要传入这个段,我只看到在初始化函数中调用了memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);这个函数…

另我还有个问题:在cmd中这段代码

#if defined(__TI_EABI__).TI.ramfunc : LOAD = FLASH_BANK0_SEC1,RUN = RAMLS0,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,LOAD_START(_RamfuncsLoadStart),LOAD_SIZE(_RamfuncsLoadSize),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),RUN_SIZE(_RamfuncsRunSize),RUN_END(_RamfuncsRunEnd),PAGE = 0, ALIGN(4)#endif

我并没有看到有任何函数定义__TI_EABI__,是不是在ccs中选这个选项来决定的?

,

Green Deng:

问题有点多,好像有重复的内容?

1、一般会在程序里定义一个段,类似:#pragma CODE_SECTION(Timer0IntIsr, ".TI.ramfunc");就是将Timer0IntIsr内的程序从flash搬移到ram,你可以看一下这个帖子,介绍具体复制什么内容到ram的:https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/208434/faq-tms320f280049-c-ram?tisearch=e2e-sitesearch&keymatch=.TI.ramfunc#

2、__TI_EABI__是对工程格式的预定义,新建工程的时候是什么格式就会运行到对应格式的预定义下。这边有个文档可以参考一下:https://e2echina.ti.com/support/microcontrollers/msp430/f/msp-low-power-microcontroller-forum/200006/faq-ti?tisearch=e2e-sitesearch&keymatch=%2522EABI%2522#

,

user6057760:

非常谢谢您,我的疑惑已经完全解开了!

,

Green Deng:

感谢你的认可

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280049C: cmd配置
分享到: 更多 (0)