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.

[参考译文] RM57L843:将 CCS 环境迁移到 IAR 环境。

Guru**** 2390735 points
Other Parts Discussed in Thread: RM57L843, NOWECC, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1464489/rm57l843-migration-of-the-ccs-environment-to-the-iar-environment

器件型号:RM57L843
主题中讨论的其他器件: NOWECCUNIFLASH

工具与软件:

MPU:RM57L843
IDE:将 CCS (Code Composer Studio)环境迁移到 IAR 环境。
引导加载程序基本代码:UART_Bootloader_RM57.zip (来自 TI 论坛)

在将 CCS 中写入的引导加载程序转换到 IAR 环境时、我遇到问题。

我需要使用 TI 提供的 F021闪存 API、使用 ECC 来实现闪存写入。

我在将 TI CCS 链接器脚本(.cmd)文件转换为 IAR 链接器脚本(.icf)文件时遇到困难。

TI CCS 链接器脚本(.cmd)文件...

MEMORY
{
    VECTORS    (X)   : origin=0x00000000 length=0x00000020 vfill = 0xffffffff
    FLASH0     (RX)  : origin=0x00000020 length=0x001FFFE0 vfill = 0xffffffff
    FLASH1     (RX)  : origin=0x00200000 length=0x00200000 vfill = 0xffffffff
    STACK      (RW)  : origin=0x08000000 length=0x00002000
    RAM       (RWX)  : origin=0x08002000 length=0x0007E000

    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 }
}

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 */
}

SECTIONS
{
    .intvecs : {} > VECTORS
    .text   align(32) : {} > FLASH0 | FLASH1
    .const  align(32) : {} > FLASH0 | FLASH1
    .cinit  align(32) : {} > FLASH0 | FLASH1
    .pinit  align(32) : {} > FLASH0 | FLASH1
    .bss     : {} > RAM
    .data    : {} > RAM
    .sysmem  : {} > RAM

    flashAPI:
    {
       .\Boot\Fapi_UserDefinedFunctions.obj (.text)
       .\Boot\bl_flash.obj (.text, .data)
       --library= "C:\ti\Hercules\F021 Flash API\02.01.01\F021_API_CortexR4_LE_L2FMC.lib" (.text, .data)
    } palign=8 load = FLASH0 |FLASH1, run = RAM, LOAD_START(apiLoadStart), RUN_START(apiRunStart), SIZE(apiLoadSize)
}

我不知道在将其转换到 IAR 环境时、如何修改 cmd 文件中的以下部分来进行 ECC 闪存写入。

MEMORY
{
	....

	ECC_VEC(R) :  ... 
	ECC_FLA0(R) : ...
	ECC_FLA1(R) : ...
}

SECTIONS
{

	flashAPI:
	{
	 ....
	}
}

如果在两个链接器(TI CCS 和 IAR)之间难以转换、我想知道是否有办法在不使用链接器脚本的情况下实现具有 ECC 的闪存写入。

我征求您的意见。