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.

SPI 引导还是不成功



我用andy和striker 提供的实例程序,在6678开发板上验证spi的引导,都遇到了问题。
(1)我编了一个闪灯程序,用文件压缩包里提供的软件进行转换,其中设置如下:

rmd文件:
simple.out
-a
-boot
-e _c_int00
-order L
-map SPIBOOT.map
ROMS
{
   ROM1:  org = 0x0880, length = 0x2000000, memwidth = 32, romwidth = 32
          files = { simple.btbl }
         
}   


添加Bootparemeter map文件
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
}

转换后生成的Boot parremeter TABLE 为:

1651 1 10000 1 19c8
0x00500000
0x00320000
0x40130002
0x00010018
0x00040000
0x00010000
0x03e80000
0x01f40051
0x04000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
…………
第256行
0x0080c7f6
0x10800000
0x00000070
0x00873500
…………

之后改变51为00后,进行bytes小大端转换的数据为:

1651 1 80000000 1 19c8
0x00005000
0x00003200
0x02001340
0x18000100
0x00000400
0x00000100
0x0000e803
0x0000f401
0x00000004
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
…………
第256行
0xf6c78000
0x00008010
0x70000000
0x00358700
…………

我用mcsdk提供的norwrite将文件写入norflash,拨码开关设置为:sw3.1 -sw6.2:1011 0000 0010 1000 10 程序不能正常引导。

(2)首先我证明norflash写是没有问题的,因为我用mcsdk提供的基于i2c二次引导spi引导能够正常引导,写flash没有问题,eeprom里固化的IBL也没有问题。
(3)我观察bootaddress的值为0x20b00001,是Bootloader的初始地址?我看了其他内存,里面没有要下载的代码,说明程序没加载。
(3)在引导过程中,我用示波器观察spi总线上的信号,dsp一直重复的从spi读取第一个32为数,读出的数据为0x00005000,这个数据与我写进去的数据一致。是说明原因导致dsp不能继续读取接下来地址的数据呢?

请各位专家帮分析一下啊,由没有在6678开发板上验证过的spi引导的实例啊,我用的开发板是TMDXEVM6678LE.

 

  • 问一下你程序的cmd文件内容是啥

  • ******************************************************************************
                   TMS320C6x Linker PC v7.2.1                     
    ******************************************************************************
    >> Linked Thu Nov 07 15:25:36 2013

    OUTPUT FILE NAME:   <evm_led.out>
    ENTRY POINT SYMBOL: "_c_int00"  address: 10800000


    MEMORY CONFIGURATION

             name            origin    length      used     unused   attr    fill
    ----------------------  --------  ---------  --------  --------  ----  --------
      BOOT_CORE0            10800000   000000c0  00000080  00000040  RWIX
      L2                    108000c0   0007ff40  00006da0  000791a0  RWIX
      DDR3                  80000000   01000000  00001942  00ffe6be  RWIX


    SEGMENT ALLOCATION MAP

    run origin  load origin   length   init length attrs members
    ----------  ----------- ---------- ----------- ----- -------
    10800000    10800000    00000080   00000080    r-x
      10800000    10800000    00000080   00000080    r-x .myboot
    108000c0    108000c0    00005be0   00005be0    r-x
      108000c0    108000c0    00005be0   00005be0    r-x .text
    10805ca0    10805ca0    00001000   00000000    rw-
      10805ca0    10805ca0    00001000   00000000    rw- .stack
    10806ca0    10806ca0    000001c0   000001c0    r-x
      10806ca0    10806ca0    000001c0   000001c0    r-x .DDRText
    80000000    80000000    000017e4   000012fc    rw-
      80000000    80000000    000012fc   000012fc    rw- platform_lib
      800012fc    800012fc    00000004   00000000    rw- .bss
      80001300    80001300    00000400   00000000    rw- .sysmem
      80001700    80001700    000000e4   00000000    rw- .far
    800017e4    800017e4    00000004   00000004    rw-
      800017e4    800017e4    00000004   00000004    rw- .neardata
    800017f0    800017f0    0000002a   0000002a    r--
      800017f0    800017f0    0000002a   0000002a    r-- .const
    8000181c    8000181c    00000020   00000020    rw-
      8000181c    8000181c    00000020   00000020    rw- .fardata
    8000183c    8000183c    00000110   00000110    r--
      8000183c    8000183c    00000110   00000110    r-- .cinit


    SECTION ALLOCATION MAP

     output                                  attributes/
    section   page    origin      length       input sections
    --------  ----  ----------  ----------   ----------------
    .myboot    0    10800000    00000080    
                      10800000    00000080     rts6600_elf.lib : boot.obj (.text:_c_int00)

    .text      0    108000c0    00005be0    
                      108000c0    00001120     ti.platform.evm6678l.lite.lib : platform.obj (.text)
                      108011e0    00000d60                                   : evmc66x_i2c_eeprom.obj (.text)
                      10801f40    00000c80                                   : evm66x_nand.obj (.text)
                      10802bc0    00000a40                                   : evmc6678.obj (.text)
                      10803600    000005c0                                   : evmc6678_phy.obj (.text)
                      10803bc0    000005a0                                   : evmc66x_spi.obj (.text)
                      10804160    000004c0                                   : evmc66x_fpga.obj (.text)
                      10804620    00000340                                   : evmc66x_uart.obj (.text)
                      10804960    00000280     rts6600_elf.lib : memory.obj (.text:free)
                      10804be0    000001a0                     : memory.obj (.text:malloc)
                      10804d80    00000180                     : copy_decompress_rle.obj (.text:__TI_decompress_rle_core)
                      10804f00    00000180                     : autoinit.obj (.text:_auto_init_elf)
                      10805080    00000180     ti.platform.evm6678l.lite.lib : evmc66x_nor.obj (.text)
                      10805200    00000140     main.obj (.text)
                      10805340    00000100     rts6600_elf.lib : cpy_tbl.obj (.text:copy_in)
                      10805440    000000e0                     : copy_zero_init.obj (.text:decompress:ZI:__TI_zero_init)
                      10805520    000000e0                     : exit.obj (.text:exit)
                      10805600    000000e0                     : memset.obj (.text:memset)
                      108056e0    000000c0                     : divu.obj (.text:__divu)
                      108057a0    000000a0                     : remu.obj (.text:__remu)
                      10805840    000000a0                     : memcpy64.obj (.text:memcpy)
                      108058e0    000000a0                     : memory.obj (.text:minsert)
                      10805980    000000a0                     : memory.obj (.text:mremove)
                      10805a20    000000a0     ti.platform.evm6678l.lite.lib : evm66x_i2c.obj (.text)
                      10805ac0    00000080     rts6600_elf.lib : memory.obj (.text:_minit)
                      10805b40    00000080                     : strncpy.obj (.text:strncpy)
                      10805bc0    00000040                     : args_main.obj (.text:_args_main)
                      10805c00    00000020                     : tdeh_init.obj (.text:__tdeh_init)
                      10805c20    00000020                     : _lock.obj (.text:_nop)
                      10805c40    00000020                     : exit.obj (.text:abort)
                      10805c60    00000020                     : copy_decompress_none.obj (.text:decompress:none:__TI_decompress_none)
                      10805c80    00000020                     : copy_decompress_rle.obj (.text:decompress:rle24:__TI_decompress_rle24)

    .stack     0    10805ca0    00001000     UNINITIALIZED
                      10805ca0    00000008     rts6600_elf.lib : boot.obj (.stack)
                      10805ca8    00000ff8     --HOLE--

    .DDRText   0    10806ca0    000001c0    
                      10806ca0    000001c0     MulticoreBoot.obj (.text)

    platform_lib
    *          0    80000000    000012fc    
                      80000000    00001000     ti.platform.evm6678l.lite.lib : platform.obj (platform_lib:uninit) [fill = 0]
                      80001000    00000210                                   : evm66x_nand.obj (platform_lib) [fill = 0]
                      80001210    000000ec                                   : platform.obj (platform_lib:init)

    .bss       0    800012fc    00000004     UNINITIALIZED
                      800012fc    00000004     ti.platform.evm6678l.lite.lib : evmc66x_spi.obj (.bss)

    .sysmem    0    80001300    00000400     UNINITIALIZED
                      80001300    00000008     rts6600_elf.lib : memory.obj (.sysmem)
                      80001308    000003f8     --HOLE--

    .far       0    80001700    000000e4     UNINITIALIZED
                      80001700    00000094     MulticoreBoot.obj (.far)
                      80001794    0000000c     --HOLE--
                      800017a0    00000044     ti.platform.evm6678l.lite.lib : evmc66x_i2c_eeprom.obj (.far)

    .neardata
    *          0    800017e4    00000004    
                      800017e4    00000004     ti.platform.evm6678l.lite.lib : platform.obj (.neardata)

    .const     0    800017f0    0000002a    
                      800017f0    0000001c     ti.platform.evm6678l.lite.lib : platform.obj (.const:.string)
                      8000180c    00000004     --HOLE-- [fill = 0]
                      80001810    0000000a                                   : evm66x_nand.obj (.const:$P$T0$1)

    .fardata   0    8000181c    00000020    
                      8000181c    0000000c     rts6600_elf.lib : exit.obj (.fardata)
                      80001828    0000000c                     : memory.obj (.fardata)
                      80001834    00000008                     : _lock.obj (.fardata)

    .cinit     0    8000183c    00000110    
                      8000183c    0000009d     (.cinit.platform_lib.load) [load image, compression = rle]
                      800018d9    00000003     --HOLE-- [fill = 0]
                      800018dc    0000001f     (.cinit..fardata.load) [load image, compression = rle]
                      800018fb    00000001     --HOLE-- [fill = 0]
                      800018fc    0000000c     (__TI_handler_table)
                      80001908    00000009     (.cinit..neardata.load) [load image, compression = rle]
                      80001911    00000003     --HOLE-- [fill = 0]
                      80001914    00000008     (.cinit..bss.load) [load image, compression = zero_init]
                      8000191c    00000008     (.cinit..far.load) [load image, compression = zero_init]
                      80001924    00000028     (__TI_cinit_table)


    LINKER GENERATED COPY TABLES

    __TI_cinit_table @ 80001924 records: 5, size/record: 8, table size: 40
     platform_lib: load addr=8000183c, load size=0000009d bytes, run addr=80000000, run size=000012fc bytes, compression=rle
     .fardata: load addr=800018dc, load size=0000001f bytes, run addr=8000181c, run size=00000020 bytes, compression=rle
     .neardata: load addr=80001908, load size=00000009 bytes, run addr=800017e4, run size=00000004 bytes, compression=rle
     .bss: load addr=80001914, load size=00000008 bytes, run addr=800012fc, run size=00000004 bytes, compression=zero_init
     .far: load addr=8000191c, load size=00000008 bytes, run addr=80001700, run size=000000e4 bytes, compression=zero_init


    LINKER GENERATED HANDLER TABLE

    __TI_handler_table @ 800018fc records: 3, size/record: 4, table size: 12
     index: 0, handler: __TI_zero_init
     index: 1, handler: __TI_decompress_rle24
     index: 2, handler: __TI_decompress_none


    GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name

    address    name
    --------   ----
    10805c40   C$$EXIT
    10803044   CorePllcGetHwSetup
    10802cf0   CorePllcHwSetup
    10803358   DDR3Init
    10803ae8   Init_SGMII
    10806ce0   MulticoreBoot
    10802a98   NandGetDetails
    10802654   NandReadSpareArea
    10806cb4   Osal_platformFree
    10806ca0   Osal_platformMalloc
    10806cd4   Osal_platformSpiCsEnter
    10806cd8   Osal_platformSpiCsExit
    10803258   PowerUpDomains
    108032d0   SetDDR3PllConfig
    10803104   SetPaPllConfig
    10804620   UartInit
    1080490c   UartIsDataReady
    108047f0   UartReadBaudRate
    10804860   UartReadData
    10804778   UartSetBaudRate
    10804888   UartWriteData
    80001924   __TI_CINIT_Base
    8000194c   __TI_CINIT_Limit
    800018fc   __TI_Handler_Table_Base
    80001908   __TI_Handler_Table_Limit
    10806ca0   __TI_STACK_END
    00001000   __TI_STACK_SIZE
    800012fc   __TI_STATIC_BASE
    00000400   __TI_SYSMEM_SIZE
    00000001   __TI_args_main
    10805c60   __TI_decompress_none
    10805c80   __TI_decompress_rle24
    80001824   __TI_enable_exit_profile_output
    ffffffff   __TI_pprof_out_hndl
    ffffffff   __TI_prof_data_size
    ffffffff   __TI_prof_data_start
    10805440   __TI_zero_init
    ffffffff   __binit__
    108056e0   __c6xabi_divu
    108057a0   __c6xabi_remu
    ffffffff   __c_args__
    108056e0   __divu
    108057a0   __remu
    10805c00   __tdeh_init
    10805bc0   _args_main
    10804f00   _auto_init_elf
    10800000   _c_int00
    8000181c   _cleanup_ptr
    80001820   _dtors_ptr
    80001834   _lock
    10805ac0   _minit
    10805c20   _nop
    10805ca0   _stack
    80001300   _sys_memory
    80001838   _unlock
    10805c40   abort
    ffffffff   binit
    10803a4c   configSerdes
    10805340   copy_in
    10805a20   evmI2CInit
    10805520   exit
    108041f8   fpgaControlUserLEDs
    108043cc   fpgaDisableEepromWriteProtect
    108042b8   fpgaDisableNandWriteProtect
    10804344   fpgaDisableNorWriteProtect
    10804410   fpgaEnableEepromWriteProtect
    10804300   fpgaEnableNandWriteProtect
    10804388   fpgaEnableNorWriteProtect
    108044a0   fpgaGetAMCDetect
    10804454   fpgaGetUserSwitch
    10804590   fpgaReadConfigurationRegister
    108044e4   fpgaWriteConfigurationRegister
    10804960   free
    80001294   gDeviceEeprom0
    800012c8   gDeviceEeprom1
    8000122c   gDeviceNand
    80000000   gDeviceNandBBlist
    80001260   gDeviceNor
    800017a0   gI2cBlock
    10804160   getBoardVersion
    108041ac   getFpgaDevID
    10801c18   i2cEepromMacRead
    108019b0   i2cEepromMacWrite
    108014e0   i2cEepromRead
    1080176c   i2cEepromWrite
    10801240   i2cEepromWriteBlock
    1080188c   i2cEepromWriteByteAddr
    10805200   main
    10804be0   malloc
    10805840   memcpy
    10805600   memset
    10802b94   nandInit
    10805080   nor_get_details
    10805110   nor_init
    10805174   nor_read
    10801038   platform_blocknpage_to_offset
    10800a4c   platform_delay
    10800c70   platform_device_close
    108011cc   platform_device_erase_block
    10800b28   platform_device_open
    10800dc8   platform_device_read
    10800d04   platform_device_read_spare_data
    10801134   platform_device_write
    10800d98   platform_device_write_spare_data
    800017e4   platform_errno
    10800aac   platform_external_memory_test
    10800888   platform_get_coreid
    108003f0   platform_get_info
    10800898   platform_get_macaddr
    108006d0   platform_init
    10800a04   platform_led
    10800f10   platform_offset_to_blocknpage
    108009e4   platform_uart_init
    10800928   platform_uart_read
    108009b0   platform_uart_set_baudrate
    10800990   platform_uart_write
    10802734   readNandPage
    80001700   sPlatformInfo
    108002d8   serial_num_isvalid
    10803bec   spi_claim
    10803ed4   spi_cmd
    10803f38   spi_cmd_read
    10803f98   spi_cmd_write
    10803ff8   spi_read_word
    10803d90   spi_release
    108040a8   spi_write_word
    10803da0   spi_xfer
    10805b40   strncpy
    10803334   xmc_setup


    GLOBAL SYMBOLS: SORTED BY Symbol Address

    address    name
    --------   ----
    00000001   __TI_args_main
    00000400   __TI_SYSMEM_SIZE
    00001000   __TI_STACK_SIZE
    10800000   _c_int00
    108002d8   serial_num_isvalid
    108003f0   platform_get_info
    108006d0   platform_init
    10800888   platform_get_coreid
    10800898   platform_get_macaddr
    10800928   platform_uart_read
    10800990   platform_uart_write
    108009b0   platform_uart_set_baudrate
    108009e4   platform_uart_init
    10800a04   platform_led
    10800a4c   platform_delay
    10800aac   platform_external_memory_test
    10800b28   platform_device_open
    10800c70   platform_device_close
    10800d04   platform_device_read_spare_data
    10800d98   platform_device_write_spare_data
    10800dc8   platform_device_read
    10800f10   platform_offset_to_blocknpage
    10801038   platform_blocknpage_to_offset
    10801134   platform_device_write
    108011cc   platform_device_erase_block
    10801240   i2cEepromWriteBlock
    108014e0   i2cEepromRead
    1080176c   i2cEepromWrite
    1080188c   i2cEepromWriteByteAddr
    108019b0   i2cEepromMacWrite
    10801c18   i2cEepromMacRead
    10802654   NandReadSpareArea
    10802734   readNandPage
    10802a98   NandGetDetails
    10802b94   nandInit
    10802cf0   CorePllcHwSetup
    10803044   CorePllcGetHwSetup
    10803104   SetPaPllConfig
    10803258   PowerUpDomains
    108032d0   SetDDR3PllConfig
    10803334   xmc_setup
    10803358   DDR3Init
    10803a4c   configSerdes
    10803ae8   Init_SGMII
    10803bec   spi_claim
    10803d90   spi_release
    10803da0   spi_xfer
    10803ed4   spi_cmd
    10803f38   spi_cmd_read
    10803f98   spi_cmd_write
    10803ff8   spi_read_word
    108040a8   spi_write_word
    10804160   getBoardVersion
    108041ac   getFpgaDevID
    108041f8   fpgaControlUserLEDs
    108042b8   fpgaDisableNandWriteProtect
    10804300   fpgaEnableNandWriteProtect
    10804344   fpgaDisableNorWriteProtect
    10804388   fpgaEnableNorWriteProtect
    108043cc   fpgaDisableEepromWriteProtect
    10804410   fpgaEnableEepromWriteProtect
    10804454   fpgaGetUserSwitch
    108044a0   fpgaGetAMCDetect
    108044e4   fpgaWriteConfigurationRegister
    10804590   fpgaReadConfigurationRegister
    10804620   UartInit
    10804778   UartSetBaudRate
    108047f0   UartReadBaudRate
    10804860   UartReadData
    10804888   UartWriteData
    1080490c   UartIsDataReady
    10804960   free
    10804be0   malloc
    10804f00   _auto_init_elf
    10805080   nor_get_details
    10805110   nor_init
    10805174   nor_read
    10805200   main
    10805340   copy_in
    10805440   __TI_zero_init
    10805520   exit
    10805600   memset
    108056e0   __c6xabi_divu
    108056e0   __divu
    108057a0   __c6xabi_remu
    108057a0   __remu
    10805840   memcpy
    10805a20   evmI2CInit
    10805ac0   _minit
    10805b40   strncpy
    10805bc0   _args_main
    10805c00   __tdeh_init
    10805c20   _nop
    10805c40   C$$EXIT
    10805c40   abort
    10805c60   __TI_decompress_none
    10805c80   __TI_decompress_rle24
    10805ca0   _stack
    10806ca0   Osal_platformMalloc
    10806ca0   __TI_STACK_END
    10806cb4   Osal_platformFree
    10806cd4   Osal_platformSpiCsEnter
    10806cd8   Osal_platformSpiCsExit
    10806ce0   MulticoreBoot
    80000000   gDeviceNandBBlist
    8000122c   gDeviceNand
    80001260   gDeviceNor
    80001294   gDeviceEeprom0
    800012c8   gDeviceEeprom1
    800012fc   __TI_STATIC_BASE
    80001300   _sys_memory
    80001700   sPlatformInfo
    800017a0   gI2cBlock
    800017e4   platform_errno
    8000181c   _cleanup_ptr
    80001820   _dtors_ptr
    80001824   __TI_enable_exit_profile_output
    80001834   _lock
    80001838   _unlock
    800018fc   __TI_Handler_Table_Base
    80001908   __TI_Handler_Table_Limit
    80001924   __TI_CINIT_Base
    8000194c   __TI_CINIT_Limit
    ffffffff   __TI_pprof_out_hndl
    ffffffff   __TI_prof_data_size
    ffffffff   __TI_prof_data_start
    ffffffff   __binit__
    ffffffff   __c_args__
    ffffffff   binit

    [129 symbols]

  • 我的hex6x转换时用的map文件为:

    ********************************************************************************
    TMS320C6x Hex Converter                                                   v7.2.1
    ********************************************************************************

    INPUT FILE NAME: <simple.out>
    OUTPUT FORMAT:   ASCII-Hex

    PHYSICAL MEMORY PARAMETERS
       Default data width   :   8
       Default memory width :  32
       Default output width :   8

    BOOT LOADER PARAMETERS
       Table Address: 0x0880, PAGE 0
       Entry Point  : 0x1080d840  (_c_int00)


    OUTPUT TRANSLATION MAP
    --------------------------------------------------------------------------------
    00000880..0002087f  Page=0  Memory Width=32  ROM Width=32  "ROM1"
    --------------------------------------------------------------------------------
       OUTPUT FILES: simple.btbl [b0..b31]

       CONTENTS: 00000880..0000ee0b   BOOT TABLE
                                .text : btad=00000880  dest=10800000 size=0000dfa0
                             .DDRText : btad=0000e82c  dest=10810d60 size=000001c0
                               .const : btad=0000e9f4  dest=10810f20 size=00000186
                              .switch : btad=0000eb84  dest=108111c8 size=00000010
                               .cinit : btad=0000eb9c  dest=108111e0 size=00000264

    这里有几个问题,(1) Table Address是指什么地址?是flash里boottable的存放地址吗?

                              (2)Entry Point 是不是应该是我的工程里面生成的?

                               (3)后面的CONTENTS: 00000880..0000ee0b   BOOT TABLE内容是如何得到的?

  • 你的程序段用到了DDR,不知道你boot时添加了ddr table 对DDR初始化了没。建议先把映射在DDR的段放在L2里试试

    这个map文件是hex6x工具处理.rmd文件的信息反馈吧。table address 就是.rmd 里ROMS指令分配的一个起始地址,这只是类似cmd里给程序分段,真正映射的地址是后面dest的地址。entry point 就是_c_int00地址,根据你的.out文件就能解析出这个地址。还有根据你前面的信息你的入口地址不应该是0x10800000吗

  • 请问DDR TABLE怎么生产,我的DDR型号和EVM板有些不一样