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:我无法使用闪存库0和库1

Guru**** 2595805 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1080792/tms570ls3137-i-cannot-use-flash-bank-0-and-bank-1

部件号:TMS570LS3137

您好,

我在使用 Flash API 将数据存储到 闪 存的 Bank 0或1时遇到问题。

我的设置如下:

[TMS570LS3137PGE 定制板]⇐⇐⇐[ CAN 接口]⇐⇐⇐[ CAN 模块 SPI ]⇐ ⇐ ⇐[Arduino UNO]

但是,0x00180000中的内存空间是空的(初始内存位置0x00020020时尝试,但未成功)。 我认为这必须与 BL_LINK_cmd 配置相关。 MI bl_link.cmd 如下:

/* 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	vfill = 0xFFFFFFFF
    FLASH0  (RX) : origin=0x00000020 length=0x0017FFDF	vfill = 0xFFFFFFFF
    FLASH1  (RX) : origin=0x00180000 length=0x002FFFFF	vfill = 0xFFFFFFFF
    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 | FLASH1 /*Initialized executable code and constants*/
   //.const : {} load=FLASH0 , run = SRAM, LOAD_START(constLoadStart), RUN_START(constRunStart), SIZE(constLoadSize)
   
	.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 */
/*----------------------------------------------------------------------------*/

非常感谢您的问候,

莱安德罗

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

    你好,莱安德罗,

    从0x180000开始的闪存扇区位于第1银行。 您可以在闪存库0中执行代码和闪存 API 来擦除此扇区(0x180000),并无限制地将数据编程到此闪存擦除。  

    您不必将 Flash API 复制到 SRAM 中,并从 SRAM 中执行这些代码。  

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

    QJ 您好,

    我认为我理解。 那么,我可以从 FLASH0执行 Flash API 吗?  

    如果我删除以下行,可能会出现这种情况吗?

       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)

    或者可以将“run = SRAM”替换为“run = FLASH0”?

    感谢您的回应和耐心,

    此致,

    莱安德罗

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

    你好, 莱安德罗,

    如果您将数据编程为 Flash Bank1,则可以注释掉这些行。

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

    QJ 您好,

    感谢您的回复。 我将尝试使用该配置。

    此致!

    莱安德罗

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

    QJ 您好,

    我尝试了这种方式,但无法编译。

    我遇到以下错误:

    #10010 errors encountered during linking; "LabOSat-02_Engine.out" not built
    <a href="file:/D:/ti/ccs1100/ccs/tools/compiler/dmed/HTML/10234.html">#10234-D</a>  unresolved symbols remain
    gmake: *** [all] Error 2
    gmake[1]: *** [LabOSat-02_Engine.out] Error 1
    unresolved symbol Fapi_serviceWatchdogTimer, first referenced in ../source/F021_API_CortexR4_BE_V3D16.lib<Read.WdService.obj>

    然后,我从生成文件“F021_API_CortexR4_BE_V3D16.lib”中得到了支持。 但是,我遇到以下错误:

    #10010 errors encountered during linking; "LabOSat-02_Engine.out" not built
    <a href="file:/D:/ti/ccs1100/ccs/tools/compiler/dmed/HTML/10234.html">#10234-D</a>  unresolved symbols remain
    gmake: *** [all] Error 2
    gmake[1]: *** [LabOSat-02_Engine.out] Error 1
    unresolved symbol Fapi_doMarginReadByByte, first referenced in ./source/bl_flash.obj
    unresolved symbol Fapi_enableMainBankSectors, first referenced in ./source/bl_flash.obj
    unresolved symbol Fapi_initializeFlashBanks, first referenced in ./source/bl_flash.obj
    unresolved symbol Fapi_issueAsyncCommandWithAddress, first referenced in ./source/bl_flash.obj
    unresolved symbol Fapi_issueProgrammingCommand, first referenced in ./source/bl_flash.obj
    unresolved symbol Fapi_setActiveFlashBank, first referenced in ./source/bl_flash.obj

    谢谢,此致,

    莱安德罗

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

    你好,莱安德罗,

     Fapi_UserDefinedFundations.c 应包括在您的项目中。

    您可以将此文件复制到./源文件夹