尊敬的各位:
对于闪存Build C28x-CLA1程序, 我了解到,在我们运行CLA之前,我们需要将CLA程序复制到配置的内存RAM中。使用memcpy()函数的复制在以前是通过使用pragma命令来指定代码应驻留到哪个闪存部分以及RAM的哪个部分来看到的 将在运行时加载。 但在cLA示例中,ePWM无法在.CLA源文件中找到Ca1Prog部分规范的用法。
我们如何将CLA代码加载到LS RAM中? 如果不是,我们可以通过类似的方法指定部分
__interrupt void cpuTimer0ISR(void);
#pragma code_section (cpuTimer0isr,"isrfunc")
在上述代码中,我们为timerisr函数指定了isrfunc部分。
此链接器字将使其在RAMGS15上运行
isrfunc : load = FLASH0| FLASH1,
RUN = RAMGS15,
load_start (isrfuncLoadStart),
load_end (isrfuncLoadEnd),
run_start (isrfuncRunStart),
load_size (isrfuncLoadSize)
但在C2000的PWM CLA示例中,找不到任何此类pragma用法方法用于Cla1Prog部分。
编译器如何知道它应该只在FLASH4中保留.CLA源文件中的函数
Cla1Prog:负载= FLASH4,
RUN = RAMLS5,
load_start (Cla1funcsLoadStart),
Load_End (Cla1funcsLoadEnd),
run_start (Cla1funcsRunStart),
load_size (Cla1funcsLoadSize),
对齐(8)
另外,请说明cmd文件中的以下代码
/* CLA C编译器部分*/
//
//必须分配给CLA具有写入访问权限的内存
//
CLAskatch:
{*。obj (CLAskatch)
。 += CLA_ScratchPad_Size;
*.obj(CLAScatch_end)}> RAMLS1
.scratchpad:> RAMLS1
.bss_CLA :> RAMLS1
CLA_SHARED:> RAMLS1
#IF已定义(__TI_EABI__)
.const_CLA:LOAD = FLASH2,
RUN = RAMLS1,
RUN_START (Cla1ConstRunStart),
load_start (Cla1ConstLoadStart),
Load_Size (Cla1ConstLoadSize)
#否则
.const_CLA:LOAD = FLASH2,
RUN = RAMLS1,
Run_start(_Cla1ConstRunStart),
load_start (_Cla1ConstLoadStart),
Load_Size (_Cla1ConstLoadSize)
谢谢,此致,