如題,我嘗試將Sub Function複製到ClaCpu.cla,編譯器會跳錯。
在外面的.c檔宣告#pragma CODE_SECTION(SEQ_MCP3301_DA7612, "Cla1Prog");
會跳出
"../28377S_FLASH_lnk.cmd", line 109: fatal error #10295: output section "Cla1Prog" has both CLA and non-CLA sections; such mixing in the same output section is illegal; could not link section "Cla1Prog:Contorl.obj"
請問CLA的副程式該如何設置?
Green Deng:
CLA task中应该使用了函数调用,Cla1Prog中存储的是被调用函数的代码。
你使用的是什么版本的cmd文件?尝试更换其他cmd文件呢?
Li Robert:
回复 Green Deng:
找到問題了!!原來是因為我的執行程序由CPU1編輯的時候大小只有:
轉移到CLA編譯出來的大小變成:
這是我的程式碼,請教如何解決編譯檔案變大的問題,感謝!!下列是我的程序碼:
void SEQ_74HC4094_to_IO(Uint16 Serial_IO_data,Uint16 step){
switch(step) { case 1: //set STRB is L _74HC4094_CS_0 break;
case 2:case 4:case 6:case 8:case 10:case 12:case 14:case 16: //set CLK is L _74HC4094_CLK_0 //set Data _74HC4094_SDI=Serial_IO_data>>((step>>1)-1); break;
case 3:case 5:case 7:case 9:case 11:case 13:case 15:case 17: //set CLK is H _74HC4094_CLK_1 //shift data //Serial_IO_data=Serial_IO_data>>1; break;
case 18: //set STRB is H _74HC4094_CS_1 break;
case 19: //set STRB is L _74HC4094_CS_0 break;
}}
Green Deng:
回复 Li Robert:
你好,你的问题中提到“我嘗試將Sub Function複製到ClaCpu.cla”,这跟你说的
Li Robert只需將副程序放置到 .cla裡面
是不同的.cla文件吗?
Li Robert:
回复 Green Deng:
是的,經過實驗只需要執行程序 放置到 xxxFunction.cla編譯器自動會將裡面的程序放置到Cla1Prog裡面。
但因為指令的差異主CPU跟CLA的指令容量差了2~30倍,CLA用到大量類似NOP的指令這點比較可惜。
Green Deng:
回复 Li Robert:
好的,非常感谢你的分享