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.

[参考译文] TMS320F280049C:需要闪存 ECC 支持

Guru**** 2539690 points
Other Parts Discussed in Thread: C2000WARE, TMS320F280049C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1293744/tms320f280049c-need-support-with-flash-ecc

器件型号:TMS320F280049C
主题中讨论的其他器件:C2000WARE

您好!

我们正在尝试使闪存 ECC 工作。

在链接器 cmd 文件中、我们


内存
{
begin:origin = 0x080000、length = 0x000008 /*将 ECC 对齐的长度从2增加到8 */
RAMM:origin = 0x0000F5、length = 0x000703
复位:origin = 0x3FFFC0、length = 0x000002

FLASH_BANK0_1:origin = 0x080009、length = 0x01EFB0 /*片上闪存,针对 ECC 对齐到8倍*/
/* FLASH_BANK0_1和 FLASH_BANK0_1_CRC 之间的间隙:7个字节、对齐为 ECC 乘以8 */
FLASH_BANK0_1_CRC:origin = 0x09EFC0、length = 0x40 /*片上闪存:32b 用于 CRC 表*/
FLASH_BANK0_1_ECC : origin = 0x010880001,length = 0x3DF6 ECC={INPUT_RANGE=FLASH_BANK0_1 algorithm=F021}

...

我们决定使用链接器支持 ECC、因为可以使用--ecc:data_error 选项执行故障注入测试。

固件是在没有警告的情况下构建的、但我们不知道如何刷写固件、以便在 MCU 中对计算出的 ECC 数据进行编程。

DSLite 工具的输出下面的

DSLite 闪存-c ti_sdk/C2000Ware/device_support/f28004x/common/targetConfigs/TMS320F280049C_LaunchPad.ccxml -l config/make/f28004x.ufsettings -e -f .build-PvApp_BL16512_P00-Debug/exe/pv-pv-pv512_BL160001_BL160 -r. Controller_Pv 512_BL160
DSLite 版本12.2.0.2933
配置调试器(首次启动时可能需要几分钟时间)...
正在初始化寄存器数据库...
初始化:IcePick_C_0
执行启动脚本:IcePick_C_0
初始化:C28xx_CPU1
执行启动脚本:C28xx_CPU1
初始化:CLA1_0
执行启动脚本:CLA1_0
正在连接...
C28xx_CPU1:GEL 输出:
存储器映射初始化完成
C28xx_CPU1:GEL 输出:... DCSM 初始化开始...
C28xx_CPU1:GEL 输出:... DCSM 初始化完成...
C28xx_CPU1:GEL 输出:... DCSM 初始化开始...
C28xx_CPU1:GEL 输出:... DCSM 初始化完成...
正在加载程序:.build-PvApp_BL16512_P00-Debug/exe/PV-PV-PV-BL0001_BL16512_P00 Controller_Pv
正在准备...
.text:0x80000时为0、共4
C28xx_CPU1:GEL 输出:... DCSM 初始化开始...
C28xx_CPU1:GEL 输出:... DCSM 初始化完成...
.text:0x8000c 处的05302
.text:0x80a68上110378中的0:3%
.text:0x80a68上110378中的32752:23%
.text:在0x80a68上为110378的65504:43%
.text:110378中的98256在0x80a68上:62%
.text:0/ 484在0x8e200:70%
.data:0x8e2f4处140中的0:70%
.data:0x8e33c 时为15564中的0:70%
.data:0x901a4时808中的0:80%
.data:84中的0、在0x9efc0处:80%
.data:31724中的0、0x1080001:80%
错误:C28xx_CPU1:文件加载程序:验证失败:尝试在0x80001处写入超出存储器末尾的值@程序
完成:80%
失败:文件:.build-PvApp_BL16512_P00-Debug/exe/PV-BL16512_P00 Controller_Pv:加载失败。
CONFIG/make/rules.mk:目标"闪存"的配方失败

请告知。

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

    尊敬的 Artur:

    您是否禁用了片上闪存插件 GUI (CCS Debug View -> Tools -> On-Chip Flash)中的 AutoEccGeneration 功能?

    谢谢。此致、

    瓦姆西  

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

    是的、我们已经 独自解决了关联和闪存问题。

     f28004x.ufsettings 文件中必须包含以下选项:

    {德州仪器(TI) XDS110 USB 调试探针/C28xx_CPU1":{"FlashEraseSelection":"仅限必要扇区(用于程序加载)"、" FlashAutoECCSeting":false、"FlashVerifySeting":false 、"FlashResetOnConnect":true}}

    此外、必须设置奇偶校验掩码  

    ECC

    {

       F021 :奇偶校验_mask = 0xFC

              镜像= F021

    下一步、我们将验证 ECC 是否真正起作用。