mmwcas_dsp_evm的boot modes如何设置,才能使CCS调试模式生效?

专家好!

我目前使用mmwcas_dsp_evm + mmwcas_rf_evm进行项目开发,所使用的仿真器jXDS560V2。

 目前遇到个问题, 在CCS中新建工程后, 连接Cortex_A15目标核后, 发现程序无法加载到核中运行。  是不是因为mmwcas_dsp_evm中SW4开关设置成默认启动的原因?  如果设置SW4,才能够正常什么CCS下载调试程序?

  • HI, Nancy Wang

    我已将SW设置成全000000, 发现仍然无法调试。

    main.c 如下:
    /**
    * main.c
    */
    int main(void)
    {
    return 0;
    }

    lnk_a15.cmd如下:


    /****************************************************************************/
    /* LNK32.CMD - v4.5.0 COMMAND FILE FOR LINKING TMS470 32BIS C/C++ PROGRAMS */
    /* */
    /* Usage: armlnk <obj files...> -o <out file> -m <map file> lnk32.cmd */
    /* armcl <src files...> -z -o <out file> -m <map file> lnk32.cmd */
    /* */
    /* Description: This file is a sample command file that can be used */
    /* for linking programs built with the TMS470 C/C++ */
    /* Compiler. Use it as a guideline; you may want to change */
    /* the allocation scheme according to the size of your */
    /* program and the memory layout of your target system. */
    /* */
    /* Notes: (1) You must specify the directory in which run-time support */
    /* library is located. Either add a "-i<directory>" line to */
    /* this file, or use the system environment variable C_DIR */
    /* to specify a search path for libraries. */
    /* */
    /* (2) If the run-time support library you are using is not */
    /* named below, be sure to use the correct name here. */
    /* */
    /****************************************************************************/
    /*-stack 0x0800 SOFTWARE STACK SIZE */
    /*-heap 0x2000 HEAP AREA SIZE */
    /*-e Entry*/
    /* Since we used 'Entry' as the entry-point symbol the compiler issues a */
    /* warning (#10063-D: entry-point symbol other than "_c_int00" specified: */
    /* "Entry"). The CCS Version (5.1.0.08000) stops building from command */
    /* line when there is a warning. So this warning is suppressed with the */
    /* below flag. */

    /*--diag_suppress=10063*/

    HEAP_SIZE = 0x1000;

    ENTRY(Entry)
    MEMORY
    {
    IRAM_MEM : org = 0x402F0000, len = 0x00010000
    OCMCRAM1 : org = 0x40300000, len = 0x0007FC00 /* OCMC RAM1 */
    /* Below area is reserved for vector table. Do not allocate anything here*/
    OCMC_VEC_TBL : org = 0x4037FC00, len = 0x400
    OCMCRAM2 : org = 0x40400000, len = 0x00100000 /* OCMC RAM2 */
    OCMCRAM3 : org = 0x40500000, len = 0x00100000 /* OCMC RAM3 */
    SBL_REG_LOG_BFR_SEG : org = 0x40590000 , len = 0x100 /* SBL Regression test log buffer*/
    /*SBL will use 1 KB of space from address 0x80000000 for EVE */
    DDR3_EVE : org = 0x80000400, len = (0x01000000 - 0x400)
    DDR3_A15 : org = 0x81000000, len = (0x0A000000)
    DDR3_DSP : org = 0x8B000000, len = 0x02000000
    DDR3_M3VPSS : org = 0x8D000000, len = 0x01000000
    DDR3_M3VIDEO : org = 0x8E000000, len = 0x01000000
    DDR3_SR0 : org = 0x8F000000, len = 0x01000000
    }


    /* SPECIFY THE SYSTEM MEMORY MAP */
    SECTIONS
    {
    BOARD_IO_DELAY_DATA : {*(BOARD_IO_DELAY_DATA)} AT> OCMCRAM1
    BOARD_IO_DELAY_CODE : {*(BOARD_IO_DELAY_CODE)} AT> OCMCRAM1
    .text : {*(.text)} > DDR3_A15
    .data : {*(.data)} > DDR3_A15
    .sbl_reg_log_bfr ALIGN(0x4): {} > SBL_REG_LOG_BFR_SEG

    .bss ALIGN(0x4):
    {
    _bss_start = . ;
    *(.bss.*) *(COMMON);
    _bss_end = . ;
    } > DDR3_A15

    .const ALIGN(0x4): {*(.const)} > DDR3_A15
    .my_sect_ddr ALIGN(0x4): {*(.my_sect_ddr)} > DDR3_A15

    end = . ;
    __end__ = . ;
    /* heap section */
    .heap (NOLOAD):
    {
    _heap_start = .;
    . = . + HEAP_SIZE;
    _heap_end = .;
    } > DDR3_A15
    .stack ALIGN(0x8):
    {
    stack_start = .;
    *(.stack.*) ;
    . = . + 0x3000;
    stack_end = .;
    } > DDR3_A15
    _stack = stack_end;

    . = ALIGN(4);
    __exidx_start = .;
    PROVIDE(__exidx_start = __exidx_start);
    .ARM.exidx :
    {
    *(.ARM.exidx* .gnu.linkonce.armexidx.*);
    } > DDR3_A15

    . = ALIGN(4);
    __exidx_end = .;
    PROVIDE(__exidx_end = __exidx_end);

    .a15_vector_table : {
    __vector_base__ = .;
    *(.a15_vector_table.*) ;
    __vector_base_end__ = .;
    } > OCMC_VEC_TBL
    }


    我选择的gcc如下:
    GNU v4.9.3(Linaro)

    操作流程如下:
    1. 使用CCS编译工程,生成.out文件
    2. CCS进入调试模式,连接Cortex15_A0核
    3. Load Proprom, 选择.out文件,进行加载
    4. 然后发现程序不会在main函数中停下,从而无法进行单步跟踪。
    (备注: 我使用的芯片是TDA2x, 仿真器使用的是xds560v2, ccs版本是930,但是在仿真DSP是无此问题)