参考http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/8065.aspx将6678固化到SPI nor flash中。
之前使用GPIO+UART程序测试过,固化后可以正常工作,该程序通过中断方式接收上位机的串口信息,控制GPIO,去点亮led。
但是将SRIO的工程固化后,上电后,UART可以打印hello信息,但是srio不能工作。该工程在no boot下是可以工作的。工程中使用了GPIO中断:fpga通过srio发给dsp内容,然后报一个GPIO中断。
原来的cmd文件为
VECTORS: o = 0x00800000 l = 0x00000400
LL2_RW_DATA: o = 0x00800400 l = 0x0002FC00
后来参考上述链接,在cmd文件中添加了boot core0段
BOOT_CORE0: o = 0x10800000, l = 0x000000C0
VECTORS: o = 0x10800400 l = 0x00000400
LL2_RW_DATA: o = 0x10800800 l = 0x0002F800
修改后,在no boot下测试,只要fpga一向dsp发数据,dsp就会重新初始化。
然后将bootcore0的段注释掉,修改为
VECTORS: o = 0x10800400 l = 0x00000400
LL2_RW_DATA: o = 0x10800800 l = 0x0002F800
这个时候fpga发数据后,dsp打印如下
memory protection exception caused by master with ID 8 at 0x94221b3b
同时提示No source available for "0x80000020"
后来更改vector的地址,改回为
VECTORS: o = 0x10800000 l = 0x00000400
LL2_RW_DATA: o = 0x10800400 l = 0x0002FC00
这个时候可以。
感觉好像是 VECTORS只能指定到起始地址,是不是有这个要求?如果有的话,那boot core0的段是否要指定到别的地方?
另外看到有L2尾部留空的要求,具体要留多大的空间?
Allen35065:
上电时中断向量表是在0x10800000,启动以后中断向量表可以修改到其它位置,修改ISTP寄存器指向即可;
你的FPGA写的0x94221b3b这个地址是能被写的吗?
L2留空只是在启动时需要一块buffer做缓存,启动完成以后就释放了。
Allen35065:
For the C667x, the reserved L2 memory ranges from 0x872E00 to 0x87FFFF in all the cores.
Stephen chen:
回复 Allen35065:
谢谢Allen!
1、请问有修改ISTP寄存器的例程吗?
2、0x94221b3b这个地址对与FPGA是可写的。但是FPGA端只是写了0x8000_0000为起始,64K大小的空间。理论上不会写到这个地址
3、现在要用的L2比较多,L2尾部留空的空间也想用。在cmd分配时,都有哪些段可以放在这个区域呢?是不是只能放不需要初始化的变量?
谢谢!