最近在使用我们自己做的6657的板子进行SPI的BOOT,SPI上面挂的FLASH是AT25DL081。
现在已经可以成功将文件通过SPI烧写到FLASH中,然后我写了一个点灯的程序用于测试BOOT。
但是在NO BOOT下将生成的dat文件烧写到FLASH中后,转成SPI BOOT模式重新上电并没有在线跑的灯闪烁的效果
我的问题是:
1、用于生成dat文件的out文件就是我使用仿真器(XDS560V2)在线debug生成的out,这样BOOT失败,请问是否应该修改cmd文件使其产生的out文件可用于生成dat而BOOT?该如何修改?
2、生成dat文件我使用的是http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/46608.aspx这个帖子中的教程和工具生成的,nysh.spi.map这个文件我基本是按照bootloader的datashee中的t默认值配置的,其中boot_mode = 50这个值我不太理解含义:
section {
boot_mode = 50
param_index = 0
options = 1
core_freq_mhz = 1000
exe_file = "simple.i2c.ccs"
next_dev_addr_ext = 0x0
sw_pll_prediv = 0
sw_pll_mult = 19
sw_pll_postdiv = 2
sw_pll_flags = 1
addr_width = 24
n_pins = 4
csel = 0
mode = 1
c2t_delay = 0
bus_freq_mhz = 0
bus_freq_khz = 500
}
请问我这样配置有何错误的地方?
谢谢大家不吝赐教
Andy Yin1:
你已经是按照http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/46608.aspx例程中的spiboot.bat将生成的out文件转换成boottable并进行格式转换成最终的dat文件,可以在SPI boot上电后通过仿真器连接板子查看软件运行的位置,是否代码已经搬到内部memory。
boot_mode = 50对应SPI boot mode,与RBL source code 下面的BootROM_c6657_PG1.0\C665x_bootROM_src\devices\gauss\gauss.h中的宏定义对应。
RBL source code:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/6352.aspx
Xu Tsou:
回复 Andy Yin1:
您好,Andy
谢谢您的回复。我明天查看一下代码是否搬到内部memory。
另外我还有一个疑问,由于原先6416使用EMIF进行BOOT时用于生成烧写文件工程中的cmd文件的编写与在线调试版本工程中的cmd文件的编写是不一样的,但是SPI不像EMIF那样可以取到地址编写到cmd文件中,所以我用于测试的点灯程序工程中的cmd文件我不知道是否正确编写还望您指教:
-c-heap 0x7800 /* for malloc */-stack 0x20000-l rts6600_elf.lib-m link.map
// online mode/*/MEMORY{ VECTORS_RAM: o = 0x00800000 l = 0x00000400 L2SRAM: o = 0x00800400 l = 0x000ffc00 MSMCSRAM: o = 0x0c000000 l = 0x00100000}
SECTIONS{ .csl_vect > L2SRAM .stack > L2SRAM .text > L2SRAM .const > L2SRAM .cinit > L2SRAM .switch > L2SRAM .stack > L2SRAM .bss > L2SRAM ".neardata" > L2SRAM ".rodata" > L2SRAM .fardata > L2SRAM .far > L2SRAM .cio > L2SRAM ".testMem" > L2SRAM ".sysmem" > L2SRAM "IMEM" > L2SRAM ".L2_buffers" > MSMCSRAM "MSMC" > MSMCSRAM}
/*/
// offline modeMEMORY{ VECTORS_RAM: o = 0x00800000 l = 0x00000400 LocalL2SRAM: o = 0x00800400 l = 0x000ffc00 MSMCSRAM: o = 0x0c000000 l = 0x00100000 BOOT_CORE0: o = 0x10800000 l = 0x000000c0 Core0L2SRAM: o = 0x108000c0 l = 0x0007FF40}
SECTIONS{ // data in Core0L2SRAM .text > Core0L2SRAM .stack > Core0L2SRAM
// data in LocalL2SRAM .cio > LocalL2SRAM .bss > LocalL2SRAM .const > LocalL2SRAM .far > LocalL2SRAM .fardata > LocalL2SRAM .neardata > LocalL2SRAM .switch > LocalL2SRAM .system > LocalL2SRAM .cinit > LocalL2SRAM .csl_vect > LocalL2SRAM
// data in BOOT_CORE0 .myboot{ *.*<boot.obj>(.text) } > BOOT_CORE0}/**/
Xu Tsou:
回复 Andy Yin1:
您好Andy,
不好意思我是一个DSP初学者,请问如何“在SPI boot上电后通过仿真器连接板子查看软件运行的位置,是否代码已经搬到内部memory”呢?
我先以为在debug下查看那这样当前工程生成的out不是覆盖了boot搬运的代码了么?
不好意思麻烦您了