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

关于evm6678开发板SPIflash启动的问题:按照例程的步骤做未能启动成功,而且在SPI启动模式下连接不上仿真器。见详细问题描述

我用evm6678开发板验证spiflash启动过程,按以下步骤作的:

1.打开spi_boot_suit\2_ledtestprj\LedTest\6678下的8个测试工程,成功编译并生成8个.out文件,
     生成.out 文件命名为simple0.out 、simple1.out、 simple2.out 、simple3.out ……

2. 将8个.out文件拷贝到spi_boot_suit\1_utilities\multicore_boot_8cores路径下,双击spiboot_multi_8cores.bat批处理文件,开始生成文件,得到spirom_le.dat

3. 将evm板调成no-boot 模式,拨码开关对应 SW3~SW6 1000  0000  0000  1100 (0 对应on  1对应off)

4. 打开MCSDK自带的nor-writer工程,将工程bin文件夹下的nor_writer_input.txt 打开,修改"app.bin"为"spirom_le.dat" 并将spirom_le.dat拷贝到mcsdk_xxxx\tools\writer\nor\evmc6678l\bin路径下

5. 链接工程,等PC指针停在main函数入口,打开view–memory browser,输入0x80000000,load memory 选择spirom_le.dat,(自动)勾上Use the header…    再次确认start address 为0x80000000,length为spirom_le.dat的长度(单位是word) 开始往DDR里灌数。
  6. 烧写工程run,console输出 ,烧写成功。
    NOR programming completed successfully
  7.断电,将evm修改拨码开关为spi-boot模式,SW3~SW6:1011  0000  0010  1000 (0 对应on  1对应off)

8.上电重启,发现所有led灯一直亮没有闪烁,打开spi_boot_suit\2_ledtestprj\LedTest\6678下的8个测试工程连接开发板连接不上,显示:error initializing emulator:(error -2083 @0x0)……

烧写成功了但是没有boot起来,而且这种模式下无法连接仿真器,无法观察指针的状态。还请大神来指点一下

striker Qian:

jim jim,

应该boot成功了,只是亮灯程序跑死了。亮灯程序只是为了给出一个明显的boot成功的标识,但是不亮灯未必没有boot起来。

修改策略:

1. 注释掉亮灯部分,改成while(1)

2.先尝试单核,再尝试多核boot

3.先尝试不带DDR的启动,所有代码数据段放在L2SRAM。

总之就是先尝试单核不涉及DDR的boot,注释掉亮灯程序后改为while(1),boot 之后连仿真器看下PC指针。在合理范围内便说明成功boot。此时如果load_symbol 选被烧写的.out 文件就可以看到代码。

 

striker

 

 

jim jim3:

回复 striker Qian:

非常感谢你细致的解答,在no boot 模式下我直接把6735.spi_boot_suit_v2.3.1_8corepatch.zip\spi_boot_suit_v2.3.1_8corepatch\1_utilities\1.6678\multicore_boot_1cores下的spirom_le.dat通过SPI烧写到flash中,在烧写过程中用示波器测量flash芯片的clk管脚测到有时钟输入,烧写完成后断电将拨码开关调整为SPI启动模式,重新上电,同时用示波器测量flash的clk管脚,没有测到时钟信号,连接仿真器发现PC指针指在0x20BC0954.

烧写其他多核文件夹下的dat文件也是一样的现象。

感觉片上boot loader没有起作用,例程中的dat文件能直接用吧?

striker Qian:

回复 jim jim3:

jim

0x20B 开头的地址就是没有启动起来,代码还是处于RBL 。

两种可能,一种是被烧写的镜像格式不对(目录下.dat 可以使用),另外一种可能是eeprom里的镜像被清除了 。 EVM 板需要eeprom里的IBL做workaround。如果是这样需要重新烧写eeprom.

striker

 

jim jim3:

回复 striker Qian:

您好 striker:

        SPI启动时dat文件从flash搬移到内存不是有DSP bootrom 中的RBL完成的么,那么这个IBL是做什么用的呢?

        有没有烧写eeprom IBL的例程或步骤呢?

       期待您的答复

jim

striker Qian:

回复 jim jim3:

jim,

6678 evm 自带IBL在EEPROM里,只要没有被破坏就不需要重新烧写。烧写的例程在mcsdk里有。

只有evm板卡在进行SPI BOOT 时需要IBL 绕开PLL bug,用户自己制作的板卡不需要。为什么这样,因为为了避开这个bug,即使你选择了SPI boot,EVM板卡也会强制板卡进入I2C boot , 再进SPI flash 。

不用修改任何FPGA程序。

如果不放心可以重新烧写一下eeprom的IBL。

striker

 

 

Dan Jia:

回复 striker Qian:

striker striker ,您好,我看到您的历程里多核烧写的.text都是放在L2RAM,如果.text段太大,只能放在DDR3怎么烧写呢?还有在cfg文件中,定义的platform数据段和代码段应该放在那儿?

jim jim3:

回复 striker Qian:

striker,

根据您的建议,我向IIC EEPROM中重新烧写了IBL,烧写步骤是这样的:

 (1) 将目标板(EVM或用户板)设置在no boot/EMIF16    模式

        (pin1, pin2, pin3, pin4)       SW3(off, on, on, on),       SW4(on, on, on, on),       SW5(on, on, on, off),      SW6(on, on, on, on),连接Jtag并加电。

(2) 在CCS环境连接目标Core0:采用evmc6678l.gel配置文件并初始化DDR。

(3) 调入在CCS环境下的编程工具:program writer \eeprom \evmc66xxl \bin \eepromwriter_evm6678l.out。

 (4) 在CCS下打开内存观察窗口(view->Memory Browser):观察0x0C000000(这是共享MSM内存的首地址)下的地址。

 (5) 将IBL程序i2crom_0x51_c6678_le.bin copy到目录:writer\eeprom\evmc6678l\bin 下,同时调入CCS的内存0x0C000000处。具体方法:在CCS的内存观察窗口中按鼠标右键→调入文件“load memory” →选择文件i2crom_0x51_c6678_le.bin→不需要使用选项:“Use the file header information to set the start address and size of the memory block to be loaded”(32位宽,无交换)→按“next”即可完成。

(6) 设置配置文件:writer\eeprom\evmc66xxl\bin\eepromwriter_input.txt(注意:对这些参数进行修改时,字符的大小写,空格均不改变原文件中的格式)   file_name = i2crom_0x51_c6678_le.bin     

bus_addr = 0x51      

start_addr = 0         

swap_data = 0

 (7) 在CCS环境下运行:按F5。编程正确结束,console终端中显示“EEPROM programming completed successfully”。

 (二)配置IBL

 (8)、运行程序mcsdk_2_00_04_16\tools\boot_loader\ibl\src\make\bin\i2cparam_0x51_c6678_le_0x500.out

 (9)、加载文件 i2cConfig.gel然后在CCS的DEBUG界面上点击,Srcipts->EVM c6678 IBL -> setConfig_c6678_main

 (10)、几秒钟以后,在console界面上敲击回车键  显示配置成功

烧写并配置完成后,依照之前的步骤烧写SPI flash,完成后将拨码开关拨到SPIflash启动模式,上电出现下面的现象:

(1)用示波器测量IIC eeprom的clk和data 发现一直有波形,等了好久一直这样。

(2)用示波器测量SPI flash时钟发现没有反应。

请问这是怎么回事呢,为什么启动时DSP一直在对IIC EEPROM进行操作,是不是我IBL烧写有问题?期待您的指点

striker Qian:

回复 jim jim3:

Jim,

流程看上去没有问题,你能附上你的spirom_le.dat 文件吗?

striker

jim jim3:

回复 striker Qian:

striker

感谢您耐心的回答,我将spirom_le.dat附在附件里了,麻烦您看下是否有问题。

再请教几个问题:

(1)是不是第一版的6678芯片有bug,所以必须借助IIC EEPROM中的IBL启动?新版的芯片可以直接通过RBL从SPI flash中启动吧?

(2)在芯片有bug的情况下,将开发板设置成SPI启动模式,它的启动流程是不是这样的:

            1、芯片复位时检测到启动模式为SPI启动,运行相应的RBL。

            2、RBL从IIC EEPROM中读取IBL到片内。

            3、IBL配置PLL完成。

            4、RBL再从SPI中读取应用程序代码到片内。boot完成。

(3)在新版芯片无bug的情况下,将开发板配置成SPI启动模式,它的启动流程是不是这样:

            1、芯片启动时检测到启动模式为SPI启动,运行相应的RBL。

            2、RBL将应用程序代码读入芯片内部。boot完成。

jim

striker Qian:

回复 jim jim3:

jim,

流程很对,但是没看到你的附件。不知道你问题解决没

striker

赞(0)
未经允许不得转载:TI中文支持网 » 关于evm6678开发板SPIflash启动的问题:按照例程的步骤做未能启动成功,而且在SPI启动模式下连接不上仿真器。见详细问题描述
分享到: 更多 (0)