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.

[参考译文] TMS570LC4357:TMS570LC43xx 以太网引导加载程序应用链接设置

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1029742/tms570lc4357-tms570lc43xx-ethernet-bootloader-application-link-settings

器件型号:TMS570LC4357

您好、Wang、

要正确使用映像,我将 应用程序的链接命令设置如下所示;  

------------------------------------------------------------------
/*链接器设置*/

--retain="*(.intvecs)"

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

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

存储器

/*用户代码开始(2)*/
/*用户代码结束*/
引导程序(X):origin=0x00200000 length=0x00000020
FLASH0 (RX):origin=0x00000000 length=0x00200000
FLASH1 (RX):origin=0x00200020 length=0x001FFFE0
RAM (rwx):origin=0x08002000 length=0x0007E000
栈(RW):origin=0x08000000 length=0x00002000



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

部分

/*用户代码开始(5)*从 MecitPMK 添加的 flashAPI!/
/*用户代码结束*/
.intvecs:{}>向量
.text align(32):{}>FLASH1
.const align (32):{}> FLASH1
.cinit align (32):{}> FLASH1
.pinit align (32):{}> FLASH1
.bss:{}> RAM
.data :{}> RAM
.sysmem:{}>RAM


闪存 API:

  --library="c:\ti\hercules\F021闪存 API\02.01.01\F021_API_CortexR4_be_L2FMC.lib"(.text、.data)
} palign =8 load = FLASH1,run = RAM,load_start (apiLoadStars),run_start (apiRunStars),size (apiLoadSizes)


------------------------------------------------------------------

 

İn 我的引导加载程序链接命令设置与此类似;

------------------------------------------------------------------

存储器

/*用户代码开始(2)*/
引导程序(X):origin=0x00000000 length=0x00000020 vfill =0xFFFF
FLASH0 (RX):origin=0x00000020 length=0x001FFFE0 vfill = 0xffffffff
FLASH1 (RX):origin=0x00200000 length=0x00200000 vfill = 0xffffffff
RAM (rwx):origin=0x08002000 length=0x0007E000
栈(RW):origin=0x08000000 length=0x00002000


#if 1.
ECC_VEC (R):origin=(0xf0400000 +(start (vectors)>> 3))
length=(size (vectors)>> 3)
ecc={algoL2R5F021、input_range=vectors}

ECC_FLA0 (R):origin=(0xf0400000 +(开始(FLASH0)>> 3))
length=(size (FLASH0)>> 3)
ecc={algoL2R5F021、input_range=FLASH0}

ECC_FLA1 (R):origin=(0xf0400000 +(开始(FLASH1)>> 3))
length=(size (FLASH1)>> 3)
ecc={algoL2R5F021、input_range=FLASH1}
#endif
/*用户代码结束*/

/*用户代码开始(4)*/
ECC

algoL2R5F021:address_mask = 0xfffffff8 //地址位31:3 */
汉明_mask = R4 /*使用掩码中的 R4/R5构建*/
奇偶校验掩码= 0x0c //设置哪些 ECC 位是偶校验和奇校验*/
镜像= F021 //* RM57Lx 和 TMS570LCx 在 F021中编译

/*用户代码结束*/


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

部分

/*用户代码开始(5)*/
/*用户代码结束*/
.intvecs:{}>向量
.text align (32):{}> FLASH0
.const align (32):{}> FLASH0  
.cinit align (32):{}> FLASH0  
.pinit align (32):{}> FLASH0  
.bss:{}> RAM
.data :{}> RAM
.sysmem:{}>RAM
//.MYSECTION:{}> MYSTACK

闪存 API:

  ..\Boot\Fapi_UserDefinedFunctions.obj (.text)
  .\Boot\BL_FLASH.obj (.text、.data)
  --library="c:\ti\hercules\F021闪存 API\02.01.01\F021_API_CortexR4_be_L2FMC.lib"(.text、.data)
}palign =8 load = FLASH0、run = RAM、load_start (apiLoadStart)、run_start (apiRunStart)、size (apiLoadSize)

------------------------------------------------------------------

 

此外 ,应用程序启动地址定义为  :  0x0020020
     应用程序状态地址定义为  :0x0020000

当我更改映像的 cmd 链接设置 时,引导加载程序跳转新映像不起作用。

顺便说一下,在新的映像 cmd 链接设置中,虽然我从设置中删除了闪存 API 部分,但如果设置从默认值更改,程序仍然不起作用。

请帮助 王先生

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

    您好!

    应用程序的起始地址应与 应用程序链接器 cmd 文件中的向量的起始地址一致:

    存储器

    /*用户代码开始(2)*/
    /*用户代码结束*/
    引导程序(X):origin=0x00200000 length=0x00000020
    FLASH0 (RX):origin=0x00000000 length=0x00200000

    因此 APP_START_ADDR 应为0x200020

           应用程序状态地址= 0x200000

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

    我确实喜欢这个,但是新的图像没有运行。。。 我应该更改 intvectors asm 中的某个内容吗?

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

    您的应用链接器 CMD 文件中的地址为0x200000、但您的应用程序已编程为0x20020

    因此、您可以更改其中一个

    1.应用程序映像的链接器 cmd 文件

       引导程序(X):origin=0x00020020 length=0x00000020

    2.引导加载程序 bl_config.h 中的应用程序起始地址

    #define APP_START_ADDRESS  0x00200020

    #define APP_STATUS_ADDRESS 0x00200000

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

    因此,在 bl_config.h 应用程序地址 中,我不必更改应用程序的链接器权限(引导程序来源等)?

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

    我认为您需要更改两个文件中的地址:bl_config.h 和链接器 cmd 文件