TI中文支持网
TI专业的中文技术问题搜集分享网站

【资料共享】SPI flash boot for C66X

附件是单核spi flash boot例子及相关使用说明,使用过程中注意如下几点:

1. Booting from the SPI NOR on C6670中起到的image生成步骤集成在批处理文件spiboot.bat,双击该批处理文件依次会执行文档中所述各个步骤,如文档所述在完成前4步生成i2crom.ccs后需要修改该文件中对应位置51->00;

2. spi boot parameter参数在nysh.spi.map中,具体参数定义说明在tiboot.h中可以参考boot_params_spi_s;

3. 在不同板子做flash boot时,需要修改spiboot.bat处理文件中的相关输入out,其他输出文件也可以修改,另外可能nysh.spi.map中的参数也需要根据硬件板子作出调整;

4. 例程只做了单核加载,对于多核加载,如附件中spibootMulticore.bat添加了使用mergebtbl将多个boot table合成,请大家根据自己的文件名作出修改。

h l:

谢,Andy!

fei xiao1:

Andy,你好! 我也是在6670EVM板上进行SPI Nor Flash加载,是通过IBL二次加载。我看了一下IBL的源码,好像加载的数据格式必须是elf格式的。我的问题是:对于多个out文件的情况,这个out文件本身是elf格式,我如何才能将多个out文件按照elf格式连接成1个文件,而且能够加载到不同的核里面。按照你的例程,是先将out文件转成table表,然后通过mergebtbl把多个table表连成一个table,但是我看table文件和本身的elf格式已经发生了变化,IBL在加载时首先判别文件格式时就通不过,无法完成加载。不知道是我理解不对,还是有其它办法?!

fei xiao1:

回复 fei xiao1:

通过重新配置IBL,使得IBL直接加载table文件,已经成功加载。到目前为止,还是不知道怎么实现elf文件的多核启动。不过至少掌握了一种方法。

Mr.a.mike:

太好了,我正在找这个方面的资料呢。

另外我想知道下,不知道各位大虾是否有C6678的技术参考手册呢?看官方6678页面上,没有发现这个手册,而我之前在调试OMAP L137、L138时,都是有一个专门的技术参考手册可看的,不太清楚为什么6678没有提供相关的资料呢?

比如查看寄存器定义,或是内部集成器件的寄存器使用定义等等?

striker Qian:

回复 fei xiao1:

C66x SPI 多核启动的例程,你可以参照我的附件,也是根据工具链修改过的。

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/8065.aspx

 

leeen:

回复 striker Qian:

你好,我用andy提供的例程在6678开发板上进行试验不成功:

我按照操作步骤生成.bat文件并下载到flash里,在引导的时候dsp不能把数据读进去,我用示波器观察引导的过程,dsp一直重复的读取flash的前4byte,读出来的值为0x00005000,也就是引导参数的第一个32bit经过byteswap后的数据,是什么原因导致它不能正常的读取整个空间的数据呢?

fei xiao1:

回复 leeen:

如果你是用IBL加载,建议你确认一下加载的数据格式。

leeen:

回复 fei xiao1:

我是用spi直接加载,在6678开发板上,我设置为SPI引导模式,

上电后我立刻用JTAG连接DSP,提示为dsp为I2C引导模式。

上电后过一段时间再用JTAG连接DSP,提示dsp为SPI引导。

所以在开发板上,即便是我设置为SPI引导模式,在上电后它也默认用I2C进行一次引导,然后再进入SPI引导。

(1)这时候我的数据格式是不是就按照楼主提供的转换工具进行转换就行了?

(2)我用的开发板是TMDXEVM6678LE.,

生成的Boot parremeter TABLE 为:

1651 1 10000 1 19c80x005000000x003200000x401300020x000100180x000400000x000100000x03e800000x01f400510x040000000x000000000x000000000x000000000x000000000x00000000…………第256行0x0080c7f60x108000000x000000700x00873500…………

之后改变51为00后,进行bytes小大端转换的数据为:

1651 1 80000000 1 19c80x000050000x000032000x020013400x180001000x000004000x000001000x0000e8030x0000f4010x000000040x000000000x000000000x000000000x000000000x000000000x000000000x000000000x000000000x00000000…………第256行0xf6c780000x000080100x700000000x00358700…………

我用mcsdk提供的norwrite将文件写入norflash,拨码开关设置为:sw3.1 -sw6.2:1011 0000 0010 1000 10 程序不能正常引导。

(2)首先我证明norflash写是没有问题的,因为我用mcsdk提供的基于i2c二次引导spi引导能够正常引导,写flash没有问题,eeprom里固化的IBL也没有问题。(3)我观察bootaddress的值为0x20b00001,是Bootloader的初始地址?我看了其他内存,里面没有要下载的代码,说明程序没加载。(3)在引导过程中,我用示波器观察spi总线上的信号,dsp一直重复的从spi读取第一个32为数,读出的数据为0x00005000,这个数据与我写进去的数据一致。是说明原因导致dsp不能继续读取接下来地址的数据呢?

jian zong1:

你好,看了下你的PDF文件里面第一步就是在cmd窗口下运行hex6x.exe 文件,但是在我的电脑上运行hex6x.exe的时候,结果提示:

fatal error: no input file provided

请问这是什么意思?事先要做哪些准备工作??谢谢

chen xie:

您好!

按照帖子中第一楼的方法,第六步下载文件的时候:

Flashing sector 0 (0 bytes of 28480)

Reading and verifying sector 0 (0 bytes of 28480)

NOR programming completed successfully

应该是没有下载文件成功。.我不知道是不是这里错了,也不知道该怎么改?

不清楚其他人按照这个帖子是怎么成功的?

谢谢

赞(0)
未经允许不得转载:TI中文支持网 » 【资料共享】SPI flash boot for C66X
分享到: 更多 (0)