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.

tms570 bootload app 无法调试,卡死在startup.c的

我的app项目本来是好的。底层代码是由hcl生成。

由于要做bootload,app 代码放到 0x8000 以后的地方,需要修改项目的sys_link.cmd文件,

将:

VECTORS (X) : origin=0x00000000 length=0x00000020

FLASH0 (RX) : origin=0x000008020 length=0x0005FEE0

修改成

VECTORS (X) : origin=0x000000800 length=0x00000020

FLASH0 (RX) : origin=0x0000020 length =0x00057FE0

发现项目无法debug。最终调试发现启动的时候,程序卡在starpup.c文件的 void _c_int00(void) 函数中。
系统的驱动代码是用HCG产生的。sys_link.cmd文件也是HCG产生的。后期手动修改的。

而我手动建立的小工程(未使用hcg),完全没有问题,可以debug。也可以通过bootload下载并正确运行


请问
1、使用了hcg生成代码的工程,在修改sys_link.cmd需要注意什么?
2、使用HCG,是否可以配置flah从而决定sys_link.cmd(我在该配置软件中未找到配置选项)
3、是否有其它的方向!!!

  • 请问您现在使用的芯片具体型号是什么?若是可以的话,请给出完整的sys_link.cmd文件

    不过我的电脑由于限制,暂时没有成功安装HCG,所以会在汇总您的信息后,将问题发给同事来测试一下
  • 您好:
    单片机的具体型号是:TMS5700432BPZQQ1

    sys_link.cmd为HCG生成,下面斜体部分是原始的文件内容(由于文件类型受限制。无法作为附件传输)
    /*----------------------------------------------------------------------------*/
    /* sys_link.cmd                                                               */
    /*                                                                            */
    /* 
    * Copyright (C) 2009-2016 Texas Instruments Incorporated - www.ti.com  
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    /* Linker Settings                                                            */
    --retain="*(.intvecs)"
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    /* Memory Map                                                                 */
    MEMORY
    {
        VECTORS (X)  : origin=0x00000000 length=0x00000020
        FLASH0  (RX) : origin=0x00000020 length=0x0005FFE0
        STACKS  (RW) : origin=0x08000000 length=0x00001500
        RAM     (RW) : origin=0x08001500 length=0x00006b00
    /* USER CODE BEGIN (2) */
    /* USER CODE END */
    }
    /* USER CODE BEGIN (3) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    SECTIONS
    {
        .intvecs : {} > VECTORS
        .text    : {} > FLASH0
        .const   : {} > FLASH0
        .cinit   : {} > FLASH0
        .pinit   : {} > FLASH0
        .bss     : {} > RAM
        .data    : {} > RAM
    .sysmem  : {} > RAM
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    }
    /* USER CODE BEGIN (5) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    /* Misc                                                                       */
    /* USER CODE BEGIN (6) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/

    我的操作是将第57和58行的:
        VECTORS (X)  : origin=0x00000000 length=0x00000020
        FLASH0  (RX) : origin=0x00000020 length=0x0005FFE0
    修改成:
           VECTORS (X)  : origin=0x00008000 length=0x00000020
        FLASH0  (RX) : origin=0x00008020 length=0x00057FE0
    其它未做修改。修改后可以生成bin文件,但无法调试。会卡死在startup.c的的
    void _c_int00(void)函数中。
    以上, 是本次回复的全部内容,如有细节描述不清楚,请及时联系我加以补充。
    期待您的回复。
    谢谢!
  • 能不能快点啊,三天了还没回复。
  • 抱歉,我的电脑刚刚成功安装HCG,我会在确认后给您回复
  • 若是可以话,请您私信一下您的整个工程文件,谢谢

    另外在E2E上有相关的讨论,您也可以先参考一下

    e2e.ti.com/.../ccs-launchxl2-tms57012-after-distributing-flash-for-bootloader-test-i-am-not-able-to-use-interrupt-in-application-code
  • 我在E2E上请教了相关的专家,您可以看一下相关的回复

    e2e.ti.com/.../3655655

    1. You can use CCS to load the application to x08000, then debug the application.

    2. No, the HAL doesn't change the linker cmd file.
  • 您好

    如何配置到0x8000呢?未找到配置的地方!

  • 我当前做法,是在debug后,点击 view disassembly,

    然后再 0x8000的位置点击:move to line。

    然后开始调试。

    一样会卡死!
  • 链接回复:

    请在链接器cmd文件中更改.intvecs的地址,如下

    应用程序位于0x10020,intvecs位于0x10020

    更改后,该中断将被加载到0x00,但是所有其他代码将被定位到以0x10020开头的地址。

  • 感谢您的回复:

    可是我没看懂,请直接说吧,我应该怎么改。

    是将 .intvecs 修改成 0x8000吗?

    如下:

    SECTIONS

    {

    .intvecs : 0x8000

    }

  • 根据描述 他修改的是 VECTORS 的起始地址