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

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

我用的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

赞(0)
未经允许不得转载:TI中文支持网 » 28035 使用CLA时用BIOS写代码空间不够用
分享到: 更多 (0)