我的DSP為C6657, 工作時脈1GHz, ccs5.5
1. C6657的sys/bios project燒在SPI nor flash內,RTSC的platform設定到DDR上,會boot不成功。後來我發現把linker.cmd檔的幾個section(.cinit .pinit .init_array .const )改到L2上,就可以boot成功。但這樣很麻煩,linker.cmd是由RTSC的platform自動產生,容易被複蓋。請問我該如何
2.0x8ffd20有放二次RBL的DDR parameter Table,ccs project的map檔有看到在0x8ffd20有存在我宣告的DDR table,但在non boot mode時load program或spi nor flash boot,在0x8ffd20的位址的parameter table會被sys/bios重寫成0xBEBEBEBE或0x00000000。如果只有一個task的時候,還會看的到一半的parameter table,並有機會boot成功,但宣告兩個以上或有mailbox。parameter table被復蓋更多地方,就沒辦法boot成功。請問我該怎麼辦?
謝謝
Andy Yin1:
1 sysbios user guide中有讲可以增加一个额外的cmd文件指定memory section的位置;
2 可能是你存放ddr parameter table的memory段与bios有冲突被覆盖了,调整memory存放位置,避免冲突;或者先加载一个小的程序初始完DDR后,再加载应用程序,分成两次加载。
eric chen3:
回复 Andy Yin1:
1.是的,我有增加一個額外的cmd文件如下,但是是針對parameter table(0x8ffd20)用的,sysbios的部份,我有試過將sys/bios init section寫在我的cmd檔,但因為會跟linker.cmd有重複,最後map檔看到的還會是在DDR上,而不是我要的L2上
MEMORY{
DDR_CFG : origin=0xxf20, length-0x180
}
SECTIONS{
.emif4Cfg > DDR_CFG
}
2. 我在CCS debug perspective做 load program動作時,觀察memory browser在0x8ffd20的行為,有看到emif4Cfg有被放上去,隨後就被蓋掉了。
我看我的map檔案,除了emif4Cfg外,並無其他section有用到L2位址,為什麼還會被複蓋?
我有想過兩次加載的方式,hex6x.exe轉換out檔輸出成btbl檔後,再把parameter Table掛在btbl檔後面,但不知道btbl檔的檔案格式
eric chen3:
回复 eric chen3:
請問有沒有C6657啟動後的bootloader範例,因為在c6657 evm板上燒錄我的sysbios完整的程式,看起來是可以在DDR上正常執行的,但是在我的板子上不行,但是DDR確認是有初始化成功,因為我在spi nor boot後,直接用jtag program我的.out檔,又可以正常執行。想先自己寫一個bootloader先初始化PLL及DDR後,再轉移到我自己的程式。