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.

[参考译文] TMS320F28388D:读取闪存失败

Guru**** 2390755 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1417711/tms320f28388d-failed-to-read-flash-memory

器件型号:TMS320F28388D

工具与软件:

您好、 

我们使用闪存扇区12来存储校准信息。    有关如何将数据写入闪存和从闪存读取数据、我们会参考闪存 API 指南。  

从闪存 API 读取数据未在用户指南中提供。 但是、我们在从闪存读取数据时遇到问题。

具体来说、当 CALIB_DATA_SIZE 设置为128或256时、数据可按预期正确读取。 另一方面、当 CALIB_DATA_SIZE 设置为大于2048时、最初的几个位置被正确复制、但之后的位置包含垃圾数据。

用于读取闪存并将其复制到 RAM 的代码:

#define CALIB_DATA_SIZE 128
#define CALIB_RAM_CONFIG_ADDRESS 0x0000E000

void LoadConfigFromFlash(void)
{
    uint32 i = 0;
    // Initialize Read Buffer
    uint16 Calib_Read_Buffer[CALIB_DATA_SIZE] = {0};

    uint16 *Calib_Pointer;

    Calib_Pointer = (uint16 *) (CALIB_SECTOR_START_ADDR);

    // Transfer contents of flash sector to Read Buffer
    for(i=0;i<CALIB_DATA_SIZE;i++)
    {
        Calib_Read_Buffer[i] = *(Calib_Pointer++);
    }

    // Copy data to RAM
    memcpy((void *)CALIB_RAM_CONFIG_ADDRESS, Calib_Read_Buffer, CALIB_DATA_SIZE);
}

是否有标准 API 可用于从闪存中读取扇区数据、或者您能否提供一个从闪存中读取数据的示例代码?

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

    尊敬的 Vikram:

    RAM 中是否还有其他任何内容可能覆盖从闪存复制的数据? 您是否考虑过在链接器 cmd 文件的特定段中存储需要从闪存复制到 RAM 的数据? 有关更多信息、请参阅该链接。

    此致、

    Skyler