我们自己设计的板子上没有用其他的方式挂载FLASH,只通过SPI挂载了一个和6678开发板上一样的SPI FLASH,可是我尝试了好多次直接通过SPI加载都没有成功,这个版块当中的关于SPI加载的那个帖子我也翻了好多遍了,可是现在我依然没有通过SPI把我的程序BOOT起来,现在将我的流程发上来 ,麻烦各位高手给指点指点,不甚感激!!!!
1 制作应用程序的烧写文件
我首先做了一个通过GPIO管脚发出一个矩形波形的工程,生成app.out文件后,然后通过mcsdk目录下面自带的工具bin2ccs将out文件转化为dat文件。
2 烧写
我首先尝试了直接烧写我的程序到开发板上的N25Q128这个flash的sector 0的位置,然后通过设置为SPI启动,可是我发现没有启动。
然后我尝试制作了一个boot table,将boot table放在flash的sector 0的位置,然后将我的应用程序的数据烧写在sector 1的位置,也就是如下所示的地址0x10000,具体的boot table的内容如下:
0x0022 //length=34B
0x0000 //checksum disabled
0x0006 //spi boot
0x0000 //device port number
0x0000 //pll configuration msw
0x0000 //pll configuration lsw
0x0001 //options
0x0001 //spi mode: polarity=0 phase=1
0x0003 //address width=24bit
0x0008 //data width=8bit
0x0004 //4 pin
0x0000 //chip select=0
0x0001 //the first address to read from msw
0x0000 //the first address to read from lsw
0x3e8 //CPU frequency=1000MHz
0x0010 //spi bus frequency=16MHz
0x1400 //spi buf frequency
烧写进去之后,我发现依然没有boot起来,我发现我的spi的数据总线上一直有数据在出来,但是属于周期性的数据,我利用示波器去抓MOSI线上的数据,发现一直读取的是0x000000地址的数据。
然后我利用仿真器进去看我的程序所在的位置处于bootrom的位置,程序一直停在0x20b0a050的位置,此处的语句为:
SPKERNEL 0,0
我翻看了汇编语言的文档 ,实在没有看懂此命令代表的意思,惭愧!
然后大家说看看BOOT_MAGIC_ADDRESS,我查了资料,看到资料上说6678的BOOT_MAGIC_ADDRESS应该是0x807fff,但是我不清楚到底是从memory browser中输入这个地址,还是从打开的那个汇编语言的那个窗口中输入,我两个都看了,都不为0
其中,在memory中看到此地址处的值为:0x3bd1dcf5
在汇编中看到此地址处的值为:0x7a3b
目前的现象就这么多,求各位高人指点迷津!
xing wang1:
关注,怎么没有人回答啊,楼主解决了么
?
Eric:
解决了,建议你阅读bootloader的原始代码,不知道现在的手册更新了没有,方正我看的pdf的版本是和bootloader当中的代码是不吻合的,如果只用pdf文档,我估计很难启动起来你的SPI加载
Bruce Yang:
回复 Eric:
Eric,你好
我也遇到了你所说的问题,请问你是怎么解决的呢?能不能详细说明一下,十分感谢!