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:闪存编程为非对齐地址(非64或128位对齐地址)

Guru**** 2562120 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1290282/tms320f28388d-flash-program-to-non-aligned-address-not-64-or-128-bit-aligned-address

器件型号:TMS320F28388D

您好、专家!

我在将 ceatain 数据编程到不是128位对齐地址的存储器时遇到问题。

例如、 我已经知道、在地址"128位对齐地址+ 6"下一次最多可以对两个字进行编程。

如果我应该将2个字编程到地址0x0009801E、如下所示、

我最终在编写代码时失败、如下所示

    uint16_t SrcBuffer[8] = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}

    SrcBuffer[0] = PROGRAM_WORD1;
    SrcBuffer[1] = PROGRAM_WORD2;

    uint32_t u32startAddr = 0x0009801E;
    
    oReturnCheck = Fapi_issueProgrammingCommand((uint32 *)u32startAddr, SrcBuffer,
                                                2, 0, 0, Fapi_AutoEccGeneration);
    
    //
    // Wait until the Flash program operation is over
    //
    while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy);
    
    if(oReturnCheck != Fapi_Status_Success)
    {
        //
        // Check Flash API documentation for possible errors
        //
        return -1;
    }

如何使用闪存 API Fapi_issueProgrammingCommand 以正确的方式将提供的数据编程至未对齐的存储器地址?

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

    尊敬的 

    请在该闪存 API 常见问题解答中搜索以下问题: e2e.ti.com/.../faq-faq-on-flash-api-usage-for-c2000-devices

    为什么闪存编程函数(Fapi_issueProgrammingCommand())有不同的编程模式?

    使用 Fapi_Auto ECCGeneration 模式时、可编程的16位字的最小数量是多少?

    使用 Fapi_Auto ECCGeneration 模式时、对于给定的128位对齐存储器、能否一次对低64位和另一次对高64位进行编程?

    谢谢。此致、
    瓦姆西

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

    感谢您的答复。

    实际上、我刚才提到了下述内容中提供的闪存示例 C2000。

    是否应该将 Fapi 模式设置为 Fapi_Data?

    Fapi_Data:只对数据进行编程,不带 ECC。

    不幸的是、我找到了常见问题解答、但找不到合适的示例。 您能否提供一个有关将任何数据写入未对齐存储器的简单示例?

    我想很难清楚理解、因为只有一个解释没有示例。

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

    尊敬的 Seunghan:

    如果使用不带 ECC 的 Fapi_Data、则会收到 ECC 错误。  您需要对所有64位(在64位边界上对齐)连同 ECC 进行编程。

    谢谢。此致、
    瓦姆西

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

    我希望起始地址可以是64位或128位对齐。

    但是、具有二进制格式的输出映像文件创建了一个不是128位对齐的块、因此我不禁要写我提到的一个或两个字。

    我已经知道、使用 ECC 在64位单元中写入数据会更好。  

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

    Seunghan,

    我知道您已经了解编程的对齐要求。   

    我想说的是,如果 Fapi_Data 已经为部分64位编程,ECC 就不是解决办法。

    我已回复您关于此相关二进制格式输出的其他帖子。  请检查。

    谢谢。此致、

    瓦姆西

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

    您好、Vamsi

    我会立即检查您提到的帖子。

    谢谢。