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:擦除扇区

Guru**** 2468210 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1021197/tms570lc4357-erase-sector

器件型号:TMS570LC4357

您好!

  我的程序 在 bank0上运行,我想擦除 bank1 (地址0x260000), lib 是 F021_API_CortexR4_BE_L2FMC_V3D16.lib,版本 02.01.01

 [1] Fapi_initializeFlashBanks (180); // HCLK = 180m、 EEPROM_CONFIG = 0x00050000、  FRDCNTL = 0x303  

[2] Fapi_setActiveFlashBank(1);

[3] Fapi_enableMainBankSectors (0xFFFF);

[4] while ( check_fsm_ready_busy!= fapi_Status_FsmReady); // while ( FMstat->Busy = 1); 此处   fmdat = 0  

[5] Fapi_issueCommandAppiAddress (6、0x260000);    

 此处  fmstat = 0x00000C10;  // 为什么?  

------

后来    的 EEPROM_CONFIG = 0x000A0000,  结果是 FMSTAT = 0 ,但擦除 setcor 数据并不是全部为0xFF, 为什么?  

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

    您好!

    TMS570LC43x 的 HCLK 为150MHz。 180MHz 超出有效范围。

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

    您好!

     现在  HCLK = 90m, EEPROM_CONFIG = 0x00050000,  FRDCNTL = 0x503,

     在 Fapi_issue19 CommandWithAddress (6,0x260000);  程序正在运行之前设置中断,

     调用 Fapi_issueAppiedCommandWithAddress (6,0x260000);  程序 进入 中止模式后,

    Fapi_initializeFlashBanks (90);

    Fapi_setActiveFlashBank (1);

    Fapi_enableMainBankSectors (0xFFFF);

    while ( check_fsm_ready_busy!= fapi_Status_FsmReady);

    --------------------------------------μ A

    在这里停止 ;while (1);   程序正在运行,

    Fapi_issue19 CommandWithAddress (6、0x260000);    

      在这里 while (1);      程序 进入 中止模式,为什么?  

    ESMSR2 = 0x00000008、  Cortex-R5F 内核-所有致命总线错误事件。 [通常是 由闪存中的 ECC 值不正确或不完整引起的。]

    但是, 闪存 ECC 不能被禁止。

    --------------------------------------μ A

      还有什么 需要 做的吗?   

    你能举个 例子吗?   谢谢  

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

    请查看我在引导加载程序中使用的示例:

    e2e.ti.com/.../0310.bl_5F00_flash.c

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

    您好、QJ Wang、

     现在,我知道原因,当我擦除 bank1 (地址0x260000,保存参数的扇区)时 ,系统会生成 ECC 错误,当函数_coreEnableEventBusExport_运行时, 它会导致 致命的总线错误事件。   您能 不能同时擦除主组扇区和 自动校正 ECC 数据  

    谢谢

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

    擦除操作将擦除主闪存扇区和 ECC 空间、但不会生成 ECC。 擦除操作不会导致 ECC 错误。 当您读取被擦除的闪存扇区时、会生成 ECC 错误。

    将数据编程到闪存时、可以生成 ECC 并对其进行编程:

    fapi_issueProgrammingCommand ((uint32_t *) dst、(uint8_t *) src、(uint32_t)字节、0、0、fapi_AutoEccGeneration);