Part Number:TMS320C6678
我是参考下面的方法进行操作的:
【Notice】本说明旨在快速实现基于SPI单核和多核boot例程,全部为操作指南,不含原理性解释
多核boot指南:(以4核boot为例)
1.打开spi_boot_suit\2_ledtestprj\LedTest\667x 下的4个测试工程,成功编译并生成4个.out文件,
生成.out 文件必须命名为simple0.out 、simple1.out、 simple2.out 以及simple3.out
2. 将4个.out文件拷贝到spi_boot_suit\1_utilities\multicore_boot_4cores路径下,双击spiboot_multi_4cores.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 打开,修改输入文件名为spirom_le.dat 并将spirom_le.dat拷贝到mcsdk_xxxx\tools\writer\nor\evmc667xl\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输出 显示与length长度大小相同的文件烧入flash,则烧写成功,此时单位是字节。
[C66xx_0] Flashing sector 1 (65536 bytes of 121920)
[C66xx_0] Reading and verifying sector 0 (0 bytes of 121920)
[C66xx_0] Reading and verifying sector 1 (65536 bytes of 121920)
[C66xx_0] NOR programming completed successfully
7.将evm修改拨码开关为spi-boot模式,SW3~SW6:1011 0000 0010 1000 (0 对应on 1对应off)
单核boot 与4核boot 类似,将核0的.out文件更名为simple.out 拷贝到singlecore_boot 下即可,其他类似。
烧写工程run的时候进程会死在下面的循环里面(在evmc6678_phy.c中):
/* Setup the Advertised Ability register for this port:
* (1) Enable Full duplex mode
* (2) Enable Auto Negotiation
* (3) Enable the Link
*/
sgmiiCfg.linkSpeed = CSL_SGMII_1000_MBPS;
sgmiiCfg.duplexMode = CSL_SGMII_FULL_DUPLEX;
CSL_SGMII_setAdvAbility (macPortNum, &sgmiiCfg);
do
{
CSL_SGMII_getStatus(macPortNum, &sgmiiStatus);
} while (sgmiiStatus.bIsLinkUp != 1);
求大佬解答一下哪里存在问题?(另外现在图片应该怎么插入)
Nancy Wang:
请问是使用的mcsdk_2_01_02_06\tools\writer\nor\evmc6678l下的烧写例程吗?烧写的时候是否将板子设置成no boot模式?是自制板吗?因为该例程都在EVM板上测试过,程序不会有问题。
点击插入->图像->upload就可以了。
,
user6501245:
是自制板,也设成了no boot 模式了
,
Nancy Wang:
我搜了一下flash writer工程里面没有您贴出来的代码。请问您目前是烧写成功了吗?只是上电启动运行之后自己的工程卡死了?
看代码像是网口部分的问题,调试的时候没有出现该问题是吗?
,
user6501245:
代码在这个位置:
目前还没有烧写成功
,
Nancy Wang:
请问您的板子上使用的是mac0还是mac1,开发板上默认用的是mac1,如果不同,可能需要修改一下。
,
user6501245:
请问这个是什么?在哪里改?
,
Nancy Wang:
看一下platform_init的源码:
mcsdk_02_01_02_06\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\src\platform.c
其中有关于SGMII的初始化,看一下是否是这个原因导致的。
if (p_flags->phy) { configSerdes(); // Init_SGMII(0); Init_SGMII(1); }
,
user6501245:
实在抱歉隔这么久才回复,之前一直在忙别的东西。
这个地方我改过之后问题依旧没有得到解决,,,不知道是不是板子有什么问题
,
Nancy Wang:
卡住的这一行显示sgmii link不上,建议对比EVM板查看一下网口设计部分有什么差异。例如sgmii serdes参考时钟是否与EVM一直 312.5MHZ。
先单独调试一下网口。
,
user6501245:
您好,感谢您的回复。我重新跑了下工程,发现Init_SGMII(1)注释掉之后跑的还是这句,注释并没有生效,相关问题我已经重新开了个贴:
e2echina.ti.com/…/tms320c6678-norwriter_evmc6678l
,
Nancy Wang:
参考附件中的文件替换编译试一下。
8322.NIMU-EMAC0.zip