我用的6678evm板,想请问怎样实现多核启动, 比如启动demon中的image processing。如果用i2c从nor或者nand
flash二次启动,需要更改哪些文件的什么地方。如果直接从nor flash启动呢。
Yue Cao:
你好,
通过IBL加载nandflash你可以参考如下步骤
建议你重新烧写下程序按以下步骤:
以下步骤都是boot 模式为 no boot/EMIF16 模式,请先核对拨码开关!!!
1.将<MCSDK INSTALLDIR>tools\writer\eeprom\src目录下的eepromwriter.c中的第64行
#define WRITE_DATA_ADDRESS 0x0c000000
改为:
#define WRITE_DATA_ADDRESS 0x80000000
然后重新编译eepromwrite生成.out文件,拷进\mcsdk_2_00_09_21\tools\writer\eeprom\evmc6678l\bin文件夹中将原文件替代。
按照烧写IBL的过程重新烧写EEPROM
2.按照你之前的步骤将你的工程.out文件烧写进Nandflash(这个如果有错请把错贴出来)
3.文件\mcsdk_2_00_09_21\tools\boot_loader\ibl\src\make\bin中的i2cparam_0x51_c6678_le_0x500.out烧写IBL configuration
方法如下:
a. 确保boot 模式为 no boot/EMIF16 模式
b. 打开CCSv5, evmc66xx emulator target configuration, 并连接到core 0
c. 加载i2cparam_0x51_c6678_le_0x500.out 到CCS
d. 运行,CCS 终端上将显示Run the GEL for the device to be configured,
press return to program the I2C
e. 加载i2cConfig.gel
f. 运行脚本EVM c6678 IBL"->setConfig_c6678_main,这将设置好从
NOR/NAND/Ethernet 启动的默认参数
g.在CCS 终端参数中按Enter 键,把boot 的参数表写入到EEPROM 中,一旦成
功将显示信息I2c table write complete
以上三步完成后更改拨码开关更改boot模式为nandflash且image为0,重新复位即可!
如果你想通过SPI的norflash直接启动
请参考如下网页
www.deyisupport.com/…/7411.aspx
pengpeng hao:
回复 Yue Cao:
我记得好像还有magic address的配置及核间中断的触发,不知这些在哪更改。
Yue Cao:
回复 pengpeng hao:
你好,
是的magic address是要在主程序中设一下的,上面我所讲的是多核启动的操作过程,而要实现多核的运行需要你在你的程序中添加core0设置magic address的语句,并通过IPC进行多核的触发,使其他核从magic address的设置的地址开始运行程序!
pengpeng hao:
回复 Yue Cao:
你好,我还有几个问题,1,对于多核启动,ibl代码还需要更改吗。2,拿demon中的image processing来说,核0执行一个代码,其余核执行另一个代码,两个out文件如何合并为一个加载到flash中。3,flash中的程序应该是搬到0x80000000处,也就是ddr中,那各核的magic address值为多少,怎么确定。另外,比如启动image processing,是不应该在主核的原有main函数中加入8个magic address的配置及7个ipc寄存器的写入。谢谢您的回答。
zhonghong zhang:
回复 pengpeng hao:
您好 pengpeng hao
不知道您的6678多核nand flash自加载成功了没?
这段时间我一直在做NAND FLASH 自加载。但我刚刚接触6678,都不太熟悉。现在单核IBL nand boot可以成功了,如何做多核的程序自加载呢?还有,现在out直接重命名bin之后,多个核之间的out文件怎么烧写呀,还需要合并吗?需要boot parameter table 和 DDR table之类的配置吗?
不知道您是否有过相关方面的开发经验,如果方便能提供一些例程吗?不胜感激