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.

28035 使用CLA时用BIOS写代码空间不够用

Other Parts Discussed in Thread: CONTROLSUITE

我用的80脚的28035做控制,控制代码都放在CLA中,现在改用BIOS来处理通信等任务,CLA代码占了L3DPSARAM空间,数据用的L2DPSARAM空间,剩下5K的ram空间,完全不够用,有没有什么办法把BIOS编译出来的代码减小,把一些没用的功能精简掉。

  • 是否自己做一个简单的状态机来代替BIOS?可以参考一些开发板的例程,例如:

    C:\ti\controlSUITE\development_kits\DRV8312-C2-KIT_v128\BLDC_Sensored

    // State Machine function prototypes

    //------------------------------------
    // Alpha states
    void A0(void); //state A0
    void B0(void); //state B0
    void C0(void); //state C0

    // A branch states
    void A1(void); //state A1
    void A2(void); //state A2
    void A3(void); //state A3

    // B branch states
    void B1(void); //state B1
    void B2(void); //state B2
    void B3(void); //state B3

    // C branch states
    void C1(void); //state C1
    void C2(void); //state C2
    void C3(void); //state C3

    // Variable declarations
    void (*Alpha_State_Ptr)(void); // Base States pointer
    void (*A_Task_Ptr)(void); // State pointer A branch
    void (*B_Task_Ptr)(void); // State pointer B branch
    void (*C_Task_Ptr)(void); // State pointer C branch

  • 我把只跟BIOS有关的东西都放到FLASH中去了,现在能够编译出来,空间已经够用了,但是还有个问题,我直接用FLASH_CLA_C.cmd这个cmd文件修改得到我要的cmd,下面这段函数中有个group段,cla的mathtables加载存在问题,请问下这个问题怎么解决

    GROUP : LOAD = FLASH_ABCDEFGH,
    RUN = L2DPSARAM,
    LOAD_START(_Cla1mathTablesLoadStart),
    LOAD_END(_Cla1mathTablesLoadEnd),
    RUN_START(_Cla1mathTablesRunStart),
    LOAD_SIZE(_Cla1mathTablesLoadSize),
    PAGE = 1

    {
    CLA1mathTables
    .const_cla
    }

    错误信息:

    Description Resource Path Location Type
    #10265 no valid memory range(NULL) available for placement of "CLA1mathTables" F28035_CLA_BIOS_C.cmd /15KW_EVCHARGER_BIOS/cmd line 132 C/C++ Problem

  • 错误信息发错了,应该是:

    Description Resource Path Location Type

    #10265 no valid memory range(NULL) available for placement of "GROUP_2" F28035_CLA_BIOS_C.cmd /15KW_EVCHARGER_BIOS/cmd line 144 C/C++ Problem

  • 你好,我想咨询下

    RAML3       : origin = 0x009000, length = 0x001000     /* on-chip RAM block L3 */

    这个CLA的起始地址是否可以更改?因为我最近在用的时候发现RAML0不够用,但CLA执行的代码很少,所以想分点RAML3的空间给RAML0

  • 不可以。

    如果你是CPU的RAM不够用,可以考虑把L1, L2的某一个划给CPU用。而L3这块区域如果被分配给CLA后,CPU也已经把访问权限交给CLA了。

    如果你是CLA的RAM不够用,L3是分配给CLA做Prog RAM的。只有L1, L2才可以作为CLA的Data RAM。

  • 谢谢你的回答。确实是这样的,这就相当于CLA的程序映射地址是固定的,不能更改。之后我把一些对时间要求不高的程序放在了Flash里面跑,这样CPU需要的RAML0空间就小了

  • 请问一下,关于CLA的堆栈问题,官方给的cmd文件中,scratchpad和 CLAscratch都有定义,但是,我在cla的介绍里看到说这两个是对应不同软件版本的语句,是不是只要用一个就行了

    .scratchpad : > L2DPSARAM, PAGE = 1

    CLAscratch :

    { *.obj(CLAscratch)
    . += CLA_SCRATCHPAD_SIZE;
    *.obj(CLAscratch_end) } > L2DPSARAM,
    PAGE = 1