C6678 NOR Flash烧写成功,但SPI启动不了!!!
自制的6678板卡,有一个小FPGA提供上电顺序和时钟。现在按照论坛里的例程通过SPI启动,NOR Flash型号是NORN25Q128。采用NoDDR的方式,单核,使用ti的nor-writer工程能成功烧写,断电重启,SPI却无法启动。
由于我们的板子硬件设计为固定的SPI mode,不能通过FPGA或者拨码开关方式切换启动模式,所以所有步骤均在SPI Mode下进行,在开发板上试过该方法可行。
具体步骤如下:
1、准备应用程序,板子上没有LED灯,所以应用程序中每隔3ms翻转GPIO7电平。
应用程序主函数部分如下,程序裸跑,用示波器测试可以实现功能:
void main()
{
int i;
/*enable TSC, memory protection interrupts, EDC for internal RAM;
clear cache; protect L1 as cache*/
KeyStone_common_CPU_init();
/*print device information.
Enable memory protection interrupts, EDC for MSMC RAM*/
KeyStone_common_device_init();
//enable exception handling
KeyStone_Exception_cfg(TRUE);
KeyStone_main_PLL_init(50, 20, 1);//Core输入时钟为50MHz,产生1G主频
/*GPIO使能模块*/
//打开CSL GPIO模块0
hGpio = CSL_GPIO_open(0);
//设置GPIO管脚为一个输出
CSL_GPIO_setPinDirOutput(hGpio,7);
for(i = 0;i < 1000;i ++)
{
//将GPIO7拉高,测试SPI烧写成功
CSL_GPIO_setOutputData(hGpio,7);
//延时3ms后将电平拉低
TSC_delay_ms(3);
CSL_GPIO_clearOutputData(hGpio,7);
//延时3ms后将电平拉高
TSC_delay_ms(3);
CSL_GPIO_setOutputData(hGpio,7);
//将GPIO7拉低
TSC_delay_ms(3);
CSL_GPIO_clearOutputData(hGpio,7);
}
return ;
}
2、成功编译GPIO应用程序,生成一个.out文件,重命名为simple.out,将该文件拷贝到spi_boot_suit\1_utilities\1.6678\singlebore_boot_not_support_large_binary文件夹下,双击spiboot_single_noddr.bat批处理文件,得到siprom_le.dat,该文件见附件1。
3、打开MCSDK自带的nor-writer工程,将工程bin文件夹下的nor_writer_input.txt 打开,修改输入文件名为spirom_le.dat 并将spirom_le.dat拷贝到mcsdk_xxxx\tools\writer\nor\evmc667xl\bin路径下
4、由于我的板子和开发板不同,DDR参数不同,不能使用开发板的gel文件,所以我在此先执行一个应用程序,进行DDR初始化,测试过SYSCLKOUT正确,观察memory空间里的数据也正确,初始化成功。
5、链接nor-writer工程,等PC指针停在main函数入口,打开view–memory browser,输入0x80000000,load memory 选择spirom_le.dat,(自动)勾上Use the header…
再次确认start address 为0x80000000,length为spirom_le.dat的长度(单位是word) 开始往DDR里灌数。观察到memory空间里的数据正确。
6、烧写nor-writer工程run,观察console输出如下:
说明烧写成功
7、断电后重新上电重启,用示波器观察GPIO7引脚无反应,测试SYSCLKOUT=8.3MHz,说明SPI未启动。
该问题已经持续了两周,实在找不到原因。请各位大神帮忙看看,是我们的配置或流程有哪些不对吗??或者我们需要测试哪些来定位问题??
附件1

上述附件的Boot Parameter Table中,(1)SPI mode试过1或0都不行;(2)PLL看手册说明是bypass,应该没有关系。同时,我也按照我们的PLL配置过,还是不行,PLL配置如下:

我们的板子BOOTMODE[12:10]的硬件设计为0b000,所以按照如下手册
我的Boot Parameter Table中PLL配置为0x02002740(大端表示)。
(3)上述附件.dat的参数表是大端表示,我也按照小端表示更改过,如下附件2,无法启动。

另外,我们的工程都是小端的,为什么例程里用的boot parameter table要用大端呢??
user4962317:
这是上文中提到的dat文件。
user4962317:
我们在自己的板子上进行spi nor flash烧录,显示成功但spi启动不了,具体见附件,请各位大神帮忙!
该问题已经持续了两周,实在找不到原因。请各位大神帮忙看看,是我们的配置或流程有哪些不对吗??或者我们需要测试哪些来定位问题??
附件1
上述附件的Boot Parameter Table中,(1)SPI mode试过1或0都不行;(2)PLL看手册说明是bypass,应该没有关系。同时,我也按照我们的PLL配置过,还是不行,PLL配置如下:
按照如下文档描述:
我们的板子BOOTMODE[12:10]的硬件设计为0b000,所以按照如下手册
我的Boot Parameter Table中PLL配置为0x02002740(大端表示)。
(3)上述附件.dat的参数表是大端表示,我也按照小端表示更改过,如下附件2,无法启动。
另外,我们的工程都是小端的,为什么例程里用的boot parameter table要用大端呢??
user5801771:
回复 user4962317:
您好,我目前也遇到了和您一样的问题,也是在自己的板子上实现spi nor flash启动,我这边用创龙给的NORflashwriter可以烧写,但是用ti官方的norwriter却不能烧写。虽然用创龙的NORflashwriter烧写成功,但是启动不了。请问您后面问题解决了吗?期待得到您的答复,谢谢了。