工程中采用SPI boot的方式对C6670进行程序的加载启动,使用官网上提供的编译工具链将.out文件做成boottable后,通过spi接口将数据boot进dsp中。现在遇到的问题是DSP偶尔有启动失败的现象,连上仿真器后发现程序停留在了bootrom中。查阅资料得知boot参数表的位置为:
start address : 0x008F 2DC0 //6670
end address : 0x008F FFFF//6670
当出现DSP启动失败的现象时,连接仿真器,使用Memory Broser工具观察Boot Parameter table中的128个字节,与我们在编译工具链中设置的参数表Parameter.map的值是一致的。但是后面的Clear text packet scratch中的头四个字节被清零了,如图1所示,而启动成功的DSP的Clear text packet scratch中的头四个字节是有十六进制数的,如图2所示:
图1 DSP启动失败时的Clear text packet scratch的内存信息
图2 DSP启动成功时的Clear text packet scratch的内存信息
现在想咨询以下两个问题:
- Clear text packet scratch的0x3600字节的定义是什么,它对bootrom中的程序起到了什么作用?
- 出现上述该现象的原因是什么?或者我们可以从哪个方面继续进行排查?
如有指教,不胜感激。
Anni Zhang:
你的spi boot参数表中的mode=0,这个值需要与你Boot Mode bins(也就是GPIO bin)的设置一致,通常等于1或者2.
另外spi boot参数表中CPU频率的值为0x3D0,也就是976MHz,和前面boot参数表的PLL部分能对应上吗?不过这条不太关键。