This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8388万D:编译器如何将.CLA源代码保留在特定部分

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1092492/tms320f28388d-how-compiler-keeps-cla-source-code-at-a-specific-section

部件号:TMS320F2.8388万D

尊敬的各位:

对于闪存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)

谢谢,此致,

Stevin Martine2e.ti.com/.../cla_5F00_cmd.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    2.8388万 section"]我们如何将代码加载到LS ram中?

    您需要一些类似的初始化代码:

        extern uint32_t Cla1funcsRunStart, Cla1funcsLoadStart, Cla1funcsLoadSize;
        //
        // Copy over code from FLASH to RAM
        //
        memcpy((uint32_t *)&Cla1funcsRunStart, (uint32_t *)&Cla1funcsLoadStart,
               (uint32_t)&Cla1funcsLoadSize);

    2.8388万 section"]编译器如何知道它应该保留.ca源文件中的函数

    CLA文件中的程序代码将自动分配给输出节Cla1Prog。 然后,您可以选择位置(即哪个闪存扇区)。在链接程序文件中查找Cla1Prog。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Stevin,

    编译器将负责将CLA代码/数据/ const放置到单独的部分,如 Cla1Prog, BSS_CLA, const_CLA等。所有扩展名为.CLA的文件都由CLA编译器编译,并相应地定义部分。

    此致,

    Veena

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们是否应该通过某些方法(如
    指定部分)

    不需要#pragma节,因为CLA编译器始终使用输出节"Cla1Prog"。 段名称是硬连线到编译器中的,因此您不需要指定任何内容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好,

    非常感谢您的快速响应,我现在就明白了。

    谢谢,此致,

    斯泰文·马丁