我用的80脚的28035做控制,控制代码都放在CLA中,现在改用BIOS来处理通信等任务,CLA代码占了L3DPSARAM空间,数据用的L2DPSARAM空间,剩下5K的ram空间,完全不够用,有没有什么办法把BIOS编译出来的代码减小,把一些没用的功能精简掉。
Gavin J:
是否自己做一个简单的状态机来代替BIOS?可以参考一些开发板的例程,例如:
C:\ti\controlSUITE\development_kits\DRV8312-C2-KIT_v128\BLDC_Sensored
// State Machine function prototypes
//————————————// Alpha statesvoid A0(void); //state A0void B0(void); //state B0void C0(void); //state C0
// A branch statesvoid A1(void); //state A1void A2(void); //state A2void A3(void); //state A3
// B branch statesvoid B1(void); //state B1void B2(void); //state B2void B3(void); //state B3
// C branch statesvoid C1(void); //state C1void C2(void); //state C2void C3(void); //state C3
// Variable declarationsvoid (*Alpha_State_Ptr)(void); // Base States pointervoid (*A_Task_Ptr)(void); // State pointer A branchvoid (*B_Task_Ptr)(void); // State pointer B branchvoid (*C_Task_Ptr)(void); // State pointer C branch
我用的80脚的28035做控制,控制代码都放在CLA中,现在改用BIOS来处理通信等任务,CLA代码占了L3DPSARAM空间,数据用的L2DPSARAM空间,剩下5K的ram空间,完全不够用,有没有什么办法把BIOS编译出来的代码减小,把一些没用的功能精简掉。
Xinxi Tang:
回复 Gavin J:
我把只跟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
我用的80脚的28035做控制,控制代码都放在CLA中,现在改用BIOS来处理通信等任务,CLA代码占了L3DPSARAM空间,数据用的L2DPSARAM空间,剩下5K的ram空间,完全不够用,有没有什么办法把BIOS编译出来的代码减小,把一些没用的功能精简掉。
Xinxi Tang:
回复 Xinxi Tang:
错误信息发错了,应该是:
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
我用的80脚的28035做控制,控制代码都放在CLA中,现在改用BIOS来处理通信等任务,CLA代码占了L3DPSARAM空间,数据用的L2DPSARAM空间,剩下5K的ram空间,完全不够用,有没有什么办法把BIOS编译出来的代码减小,把一些没用的功能精简掉。
Xinxi Tang:
回复 Xinxi Tang:
犯2看错了
我用的80脚的28035做控制,控制代码都放在CLA中,现在改用BIOS来处理通信等任务,CLA代码占了L3DPSARAM空间,数据用的L2DPSARAM空间,剩下5K的ram空间,完全不够用,有没有什么办法把BIOS编译出来的代码减小,把一些没用的功能精简掉。
shuang deng:
回复 Xinxi Tang:
你好,我想咨询下
RAML3 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L3 */
这个CLA的起始地址是否可以更改?因为我最近在用的时候发现RAML0不够用,但CLA执行的代码很少,所以想分点RAML3的空间给RAML0
我用的80脚的28035做控制,控制代码都放在CLA中,现在改用BIOS来处理通信等任务,CLA代码占了L3DPSARAM空间,数据用的L2DPSARAM空间,剩下5K的ram空间,完全不够用,有没有什么办法把BIOS编译出来的代码减小,把一些没用的功能精简掉。
Gavin J:
回复 shuang deng:
不可以。
如果你是CPU的RAM不够用,可以考虑把L1, L2的某一个划给CPU用。而L3这块区域如果被分配给CLA后,CPU也已经把访问权限交给CLA了。
如果你是CLA的RAM不够用,L3是分配给CLA做Prog RAM的。只有L1, L2才可以作为CLA的Data RAM。
我用的80脚的28035做控制,控制代码都放在CLA中,现在改用BIOS来处理通信等任务,CLA代码占了L3DPSARAM空间,数据用的L2DPSARAM空间,剩下5K的ram空间,完全不够用,有没有什么办法把BIOS编译出来的代码减小,把一些没用的功能精简掉。
shuang deng:
回复 Gavin J:
谢谢你的回答。确实是这样的,这就相当于CLA的程序映射地址是固定的,不能更改。之后我把一些对时间要求不高的程序放在了Flash里面跑,这样CPU需要的RAML0空间就小了
我用的80脚的28035做控制,控制代码都放在CLA中,现在改用BIOS来处理通信等任务,CLA代码占了L3DPSARAM空间,数据用的L2DPSARAM空间,剩下5K的ram空间,完全不够用,有没有什么办法把BIOS编译出来的代码减小,把一些没用的功能精简掉。
Xinxi Tang:
回复 Gavin J:
请问一下,关于CLA的堆栈问题,官方给的cmd文件中,scratchpad和 CLAscratch都有定义,但是,我在cla的介绍里看到说这两个是对应不同软件版本的语句,是不是只要用一个就行了
.scratchpad : > L2DPSARAM, PAGE = 1
CLAscratch :
{ *.obj(CLAscratch) . += CLA_SCRATCHPAD_SIZE; *.obj(CLAscratch_end) } > L2DPSARAM, PAGE = 1