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.

[参考译文] TMS570LS3137:TMS570LS3137PGE 的 BL_LINK_cmd 问题

Guru**** 654100 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1078711/tms570ls3137-bl_link-cmd-problem-with-tms570ls3137pge

部件号:TMS570LS3137

你好! 我对引导加载程序有疑问。 我使用了开发套件中的启动加载程序。

现在,我想在主板中使用启动加载程序,因为它具有 TMS570LS3137PGE 微卡。

当我复制文件和标题并进行编译时,程序在 bl_link.cmd 中出现问题。

"./source/bl_link.cmd",第102行:错误#10099-D:程序将无法装入可用内存,或者该部分包含一个需要无法为该部分生成的蹦床的呼叫站点。对于“flashAPI”大小0x1010,加载定位失败。 可用内存范围:
FLASH0大小:0x10000未使用:0xb48最大孔:0xb48
错误10010:链接期间遇到错误;未构建“LabOSat 02-Engine.out”

包含在 include 文件中的 Flash API。

这是与开发套件一起使用的同一个 ecode。 我是否需要更改 BL_LINK_cmd 以与 TMS570LS3137PGE 一起使用? 或者我是否需要对产品进行另一项更改?

我离开 bl_link.cmd 是因为它很有帮助。

非常感谢!!

bl_link.cmd:

/*----------------- *
/*链接器设置*/
--retain="*(.intvecs)"

/*用户码开始(1)*/
/*用户代码结束*/

/*----------------- *
/*内存映射*/

内存

引导程序(X):Origal=0x00000000 length=0x00000020 vfill = 0xffffffff
FLASH0 (RX):Origin =0x00000020 Length=0x00010000 vfill = 0xffffffff
FLASH1 (RX):Origal=0x00010020 length=0x07FF1FE0 vfill = 0xffffffff
SRAM (rwx):origy=0x08002000 length=0x00002000
堆栈(RW):原点=0x08004000长度=0x00002000

/*用户代码开始(2)*/
错误1
ECC_VEC (R):Original=(0xf0400000 +(START(向量)>> 3))
长度=(大小(向量)>3)
ecc={算法=algoL2R5F021,input_range=vectors}

ECC_FLA0 (R):Original=(0xf0400000 +)(开始(FLASH0)>> 3)
长度=(大小(FLASH0)>> 3)
ecc={算法=algoL2R5F021,input_range=FLASH0}

ECC_FLA1 (R):Original=(0xf0400000 +)(开始(FLASH1)>> 3)
长度=(大小(FLASH1)>> 3)
ecc={算法=algoL2R5F021,input_range=FLASH1 }
#endif
/*用户代码结束*/

}

/*用户码开始(3)*/
ECC

algoL2R5F021:address_mask = 0xfff8 /*地址位31:3 */
hamming_mask = R4 /*在掩码*/中使用 R4/R5内部版本
奇偶校验掩码= 0x0c /*设置哪些 ECC 位为偶数和奇数奇偶校验*/
镜像= F021 /* RM57Lx 和 TMS570LCx 构建于 F021 */中
}
/*用户代码结束*/


/*----------------- *
/*区段配置*/

章节

.intvecs:{}>矢量


闪存 API:

..\sources\Fapi_UserDefinedFunctions.obj (.text)
..\sources\BL_flash.obj (.text)
--library="F021_API_CortexR4_be_V3D16.lib"(.text)
} palign =8 load = FLASH0,run = SRAM,load_start (apiLoadStart),run_start (apiRunStart),size (apiLoadSize)

text:{}> FLASH0/*已初始化的可执行代码和常量*/
.const:{} load=FLASH0, run = SRAM,load_start(connstLoadStart),run_start(connstRunStart),size(connstLoadSize)

电影:{}>电影 H0|电影 H1
Pinit:{}> FLASH0 | FLASH1
.bss:{}> SRAM
数据:{}> SRAM
sysmem:{}> SRAM
/*用户码开始(4)*/
/*用户代码结束*/
}

/*用户代码开始(5)*/
/*用户代码结束*/


/*----------------- *
/*其他*/

/*用户码开始(6)*/
/*用户代码结束*/
/*----------------- *

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="481323" url="~ë/support/icler/arm-based 微处理器组/基于 ARM 的微控制器/f/基于 ARM 的微控制器-forum/1078711/tms570ls3137-bl_bl_link-cmd-problem-us-with -tmscmd 570ls3137pge "]。/sources/bl_blan_1010不需要将该部分的内存配置为“驱动器”。 可用内存范围:
    FLASH0大小:0x10000未使用:0xb48最大孔:0xb48[/quot]

    该错误消息表明 FLASH0内存区域没有足够的空间放置闪存 API。  FLASH0的大小为64K 字节,但 只有0x1010字节的 bb 48字节可用,该字节小于闪存 API 的大小。

    [引用 userid="481323" url="~ë/support/icler/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1078711/tmsms7570ls3137-bl_link-cmd-problem-with -tmscmd 570ls3137pge"]我是否需要更改 BL_link[使用 TMS570ls3137pg]以使用报价单的 bl 链接?

    我不知道您的程序的总体大小,但您可以尝试增大 FLASH0内存区域的大小,并相应减小 FLASH1内存区域的大小。 FLASH1内存区域的起始地址也需要相应地更改。

    [引用 userid="481323" url="~ë/support/icler/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1078711/tms570ls3137-bl_bl_link-cmd-problem-problem-with -tms570ls3137pge].cinit:{}>FLASH0 | FLH1
    Pinit:{}> FLASH0 | FLASH1[/QUERE]

    在 BL_LINK_cmd 中,允许跨 FLASH0和 FLASH1内存区域拆分.cinit 和.pinit 部分。 这与仅  使用 FLASH0的示例 bl_link.cmd 不同:

       .cinit : {} > FLASH0 /*Initialized global and static variables*/
       .pinit : {} > FLASH0

    是否仅由引导加载程序使用 FLASH0,而将 FLASH1留给下载的应用程序?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    切斯特,您好!

    我正在与费德里科·迪·纳尔多合作开展这一项目。 我们可以刷新 MCU,更改 FLASH0和 FLASH1的保留内存区域。

    但是, 使用 RTI 模块,每次触发中断时都会重置 MCU。 我们如何解决这个问题?

    我附上以下 bl_link.cmd 代码:

    /* Copyright (C) 2013-2019 Texas Instruments Incorporated - http://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=0x0017FFE0
        FLASH1  (RX) : origin=0x00180000 length=0x07E82000
        SRAM  (RW) : origin=0x08002000 length=0x00002000
        STACK   (RW) : origin=0x08004000 length=0x00002000
    
    
    //    VECTORS    (X)   : origin=0x00000000 length=0x00000020    vfill = 0xffffffff
    //    FLASH0     (RX)  : origin=0x00000020 length=0x00010000    vfill = 0xffffffff
    //    FLASH1     (RX)  : origin=0x00010020 length=0x07FF1FE0    vfill = 0xffffffff
    //    SRAM       (RWX)  : origin=0x08002000 length=0x00002000
    //    STACK      (RW)  : origin=0x08004000 length=0x00002000
    
    /* USER CODE BEGIN (2) */
    #if 1
        ECC_VEC  (R) : origin=(0xf0400000 + (start(VECTORS) >> 3))
                       length=(size(VECTORS) >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=VECTORS}
    
        ECC_FLA0 (R) : origin=(0xf0400000 + (start(FLASH0)  >> 3))
                       length=(size(FLASH0)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH0 }
    
        ECC_FLA1 (R) : origin=(0xf0400000 + (start(FLASH1)  >> 3))
                       length=(size(FLASH1)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH1 }
    #endif
    /* USER CODE END */
    
    }
    
    /* USER CODE BEGIN (3) */
    ECC
    {
        algoL2R5F021 : address_mask = 0xfffffff8 /* Address Bits 31:3 */
                       hamming_mask = R4         /* Use R4/R5 build in Mask */
                       parity_mask  = 0x0c       /* Set which ECC bits are Even and Odd parity */
                       mirroring    = F021       /* RM57Lx and TMS570LCx are build in F021 */
    }
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    
    SECTIONS
    {
       .intvecs : {} > VECTORS
    
    
    
       flashAPI:
       {
         .\source\Fapi_UserDefinedFunctions.obj (.text)
         .\source\bl_flash.obj (.text)
         //--library= "c:\ti\Hercules\F021 Flash API\02.01.01\F021_API_CortexR4_BE_V3D16.lib"  (.text)
         --library="F021_API_CortexR4_BE_V3D16.lib"  (.text)
       } palign=8 load = FLASH0, run = SRAM, LOAD_START(apiLoadStart), RUN_START(apiRunStart), SIZE(apiLoadSize)
    
       .text  : {} > FLASH0 /*Initialized executable code and constants*/
       .const : {} load=FLASH0 , run = SRAM, LOAD_START(constLoadStart), RUN_START(constRunStart), SIZE(constLoadSize)
    
    //  ; .cinit : {} > FLASH0 /*Initialized global and static variables*/
    // ;  .pinit : {} > FLASH0
    // ;  .data  : {} > SRAM
    //  ; .bss   : {} > SRAM   /*Uninitialized Global and static variables */
    //  ; .sysmem  : {} > SRAM
    
    
    //  ;  .intvecs : {} > VECTORS
    //   ; .text    : {} > FLASH0 | FLASH1
    //    ;.const   : {} > FLASH0 | FLASH1
    
        .cinit   : {} > FLASH0
        .pinit   : {} > FLASH0
        .bss     : {} > SRAM
        .data    : {} > SRAM
    	.sysmem  : {} > SRAM
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (5) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Misc                                                                       */
    
    /* USER CODE BEGIN (6) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    

    谢谢,此致,

    莱安德罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    每次使用 RTI 重置模块时,[引用 userid="430073" url=~支持/微控制器/基于 ARM 的微控制器-组/基于 ARM 的微控制器/f/基于 ARM 的微控制器-论坛/1078711/tms570ls3137-bl_link-cmd-problem-problem-with -tms570ls3137pge/3993371#399331"。] 我们如何解决这个问题?

    RTI 模块还支持数字看门狗。 是否启用了 DWD? 在 可编程的时间段后,或者如果没有向 RTIWDKEY 寄存器写入正确的密钥序列,DWD 将生成重置或 NMI。

    请参阅设备 TRM 中的 DWD 部分。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ 您好,  

    非常感谢您的回复。

    我们没有启用 DWD。 我们只使用 RTI 模块。

    如果我们只对主程序进行了修改,但没有对.cmd 文件进行修改,并且没有 Flash API,则它可以正常工作。 这是因为我们正在尝试将 bootloader 添加到项目中。

      初始化 RTI 时,DWD 可能开始运行? 有可能吗?

    此致,

    莱安德罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="430073" url=~ë/support/icler/arm-based 微处理器组/基于 ARM 的微控制器/f/基于 ARM 的微控制器-forum/1078711/tms570ls3137-bl_link-cmd-problem-with -tms570ls3137pge/3993468#3993468"  开始初始化 RWD 时,我们可以启动 RWD 吗?] 可能吗?

    HALgenerated RTI initialization code (rtiInit)未启用数字看门狗。