大家好,
在嘗試將EVMK2HX設定為DSP NAND boot時遇到問題,以下是我的步驟,請協助看一下是否有問題,
1. 撰寫一個利用GPIO控制LED閃爍的程式(利用K2_STK_DSP_v1.1中的GPIO專案修改),已於CCS驗證功能正常。(此時EVMK2HX的BootMode設定為DSP No-Boot,DIP switch為0001)
2. 將前一步驟產生的GPIO.out檔案轉換成GPIO.bin檔案,轉換的方式是參考以下網站資料:
https://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/354771/1253899#1253899
3. 透過mscdk底下的NAND writer進行燒錄,步驟是參考 \mcsdk_bios_3_01_04_07\tools\writer\nand\docs\README.txt 檔案,
由輸出結果來看,似乎有成功寫入。
4. 將EVM板斷電,調整DIP switch為1000,此時EVMK2HX的BootMode為DSP NAND。
5. 將EVM上電,LED不會閃爍。
以上步驟是否有問題呢?
Allen35065:
你的代码的cmd文件是否都用了全局地址而不是局部地址。
JW:
回复 Allen35065:
跟您確認一下,您的意思是指:我必須要使用global address嗎?
底下是我使用的cmd文件,看起來應該是local address
-heap 0x800-stack 0x1000
MEMORY{ /* Local L2, 0.5~1MB*/ VECTORS: o = 0x00800000 l = 0x00000200 LL2_RW_DATA: o = 0x00800200 l = 0x3FE00
/* MSMC RAM 2MB*/ MSMC_RAM: o = 0x0C000000 l = 0x00200000 /* External DDR3, upto 2GB per core */ DDR3_CODE: o = 0x80000000 l = 0x01000000 /*set memory protection attribitue as execution only*/ DDR3_R_DATA: o = 0x81000000 l = 0x01000000 /*set memory protection attribitue as read only*/ DDR3_RW_DATA: o = 0x82000000 l = 0x06000000 /*set memory protection attribitue as read/write*/}
SECTIONS{ vecs > VECTORS
.text > LL2_RW_DATA .cinit > LL2_RW_DATA .const > LL2_RW_DATA .switch > LL2_RW_DATA
.stack > LL2_RW_DATA GROUP { .neardata .rodata .bss } > LL2_RW_DATA .far > LL2_RW_DATA .fardata > LL2_RW_DATA .cio > LL2_RW_DATA .sysmem > LL2_RW_DATA}
Allen35065:
回复 JW:
是的,启动必须使用全局地址,举个例子,core 0和core 1都使用0x00800000,那么bootloader应该加载到哪个核?
JW:
回复 Allen35065:
Allen Yin
是的,启动必须使用全局地址,举个例子,core 0和core 1都使用0x00800000,那么bootloader应该加载到哪个核?
JW:
回复 JW:
JW
Allen Yin
是的,启动必须使用全局地址,举个例子,core 0和core 1都使用0x00800000,那么bootloader应该加载到哪个核?
Allen35065:
回复 JW:
你可以先用一个简单的代码,在启动以后连上JTAG看看代码是否正确的load到内存,PC指针跑到什么位置?
另外,K2H上ARM优先启动用得比较多,DSP一般是作为从核启动的,而且ARM上的uboot和linux有成熟的方案,为何不考虑先从ARM启动?
JW:
回复 Allen35065:
Allen Yin
你可以先用一个简单的代码,在启动以后连上JTAG看看代码是否正确的load到内存,PC指针跑到什么位置?
另外,K2H上ARM优先启动用得比较多,DSP一般是作为从核启动的,而且ARM上的uboot和linux有成熟的方案,为何不考虑先从ARM启动?
Allen35065:
回复 JW:
从你的现象看,已经跑进main函数,启动已经完成了,还是应该检查一下代码部分是不是有问题。