This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请教关于6657 SPI BOOT的问题



最近在使用我们自己做的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
}

请问我这样配置有何错误的地方?

谢谢大家不吝赐教

  • 你已经是按照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

  • 您好,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 mode
    MEMORY
    {
    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
    }
    /**/


  • 您好Andy,

    不好意思我是一个DSP初学者,请问如何“在SPI boot上电后通过仿真器连接板子查看软件运行的位置,是否代码已经搬到内部memory”呢?

    我先以为在debug下查看那这样当前工程生成的out不是覆盖了boot搬运的代码了么?

    不好意思麻烦您了