Hi, 我最近在调试EVM6678L的SPI boot,根据技术文档的描述,FPGA已固化代码强制DSP从I2C启动,而不能直接从spi启动。故设计由I2C引导spi启动,
即首先执行i2c启动,加载i2c启动参数表,然后引导加载spi参数表(该参数表存放在eeprom中),我期望的是DSP此时可以转向二级SPI启动,读取NOR flash里的应用程序代码,并加载至内部对应RAM空间,加载完毕即跳转到入口地址执行。
spi boot参数表的内容如下:
Uint8 spi_boot_param_table[34] = //addr:0x80
{
0x00, 0x22, // 0 Block length (34 bytes)
0x00, 0x00, // 2 Checksum disabled
0x00, 0x32, // 4 Boot mode,50,spi boot
0x00, 0x00, // 6 Physical port number
0x00, 0x00, // 8 SW PLL factor(MSW)
0x00, 0x00, // 10 SW PLL factor(LSW)
0x00, 0x01, // 12 option:load boot records from spi(boot tables)
0x00, 0x00, // 14 Mode: 00
0x00, 0x03, // 16 address width;2-16bit,3-24bit
0x00, 0x08, // 18 data width:8 or 16 bits
0x00, 0x04, // 20 Npin;3 or 4
0x00, 0x00, // 22 chip select
0x00, 0x00, // 24 read address MSW
0x00, 0x00, // 26 read address LSW
0x03, 0x20, // 28 CPU freq MHz
0x00, 0x19, // 30 the MHz portion of the spi bus freq,default:5MHz
0x00, 0x00 // 32 the kHz portion of the spi bus freq,default:0
};
boot代码已经正确写入flash,dsp拨码开关选择为I2C启动,上电一段时间后,连接仿真器,查看某些内存,发现我存放在flash中的应用程序并没有执行。此时:
0、spi boot parameter table已经成功加载;
1、查看寄存器,spi接口的状态为复位状态;
2、boot magic address的值为0。
请各位帮忙看看这种方案设计是否合理?如果合理,flash代码加载失败的原因可能是什么?boot参数表设置正确吗?