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.

[参考译文] TMS320F28377S:独立运行时无法从闪存读回数据

Guru**** 2464290 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/605981/tms320f28377s-cannot-read-back-data-from-flash-when-running-standalone

器件型号:TMS320F28377S

我使用的是 f28377s launchpad。

我一直在闪存组1 /扇区 P 中写入一些数据、如 FLASH_programming_cpu01.c 示例代码中所述。

从仿真器(RAM 和闪存配置)运行代码时、读回数据有效、但不适用于目标独立运行时。

然后 CPU 持续重新启动。

下面 是要读回的代码:

 

InitFlash_BANK0 ();
InitFlash_BANK1 ();

(笑声)

#pragma CODE_SECTION (param_iFlash 调用、ramFuncSection);
void param_iFlash 调用(void)

uint16 * ptr;
int idx;

//
//禁用 ECC,以便在没有 ECC 的情况下读取闪存内容时不会产生错误
//
Flash1EccRegs.ecc_enable.bit.enable = 0x0;

ptr =(uint16*) bone_SectorP_start;

for (idx = 0;idx <(param_length+1);idx++)

param[idx]=* ptr 和0x00FF;
PTR++;

//
//启用 ECC
//
Flash1EccRegs.ecc_enable.bit.enable = 0xA;

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

    您好、Jean、

    您需要在 ECC 禁用代码之前启用 EALLOW。 请添加该内容、这样可以解决该问题。

    Vivek Singh

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

    //
    //禁用 ECC,以便在没有 ECC 的情况下读取闪存内容时不会产生错误
    //
    EALLOW;
    Flash1EccRegs.ecc_enable.bit.enable = 0x0;
    EDIS;

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

    Jean、

    使用 API 时是否对 ECC 进行编程?  使用 Fapi_AutoEccGeneration 模式对 ECC 进行编程。  这样、当您独立运行时、不会出现 ECC 错误。  对于调试器,GEL 文件禁用 ecco-check,因此除非在 InitFlash()函数中启用 ECC,否则不会捕获 ECC 错误。  如 TRM 中所述、由于在加电时启用了 ECC 校验、因此必须对闪存内容进行 ECC 编程。

    谢谢、此致、

    Vamsi

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

    自从您验证了我们的答案后、我将关闭此主题。

    谢谢、此致、
    Vamsi