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.

[参考译文] CCS/TMS570LC4357:使用 Code Composer Studio 和 F021闪存库对闪存进行编程时出现问题

Guru**** 2539500 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/957652/ccs-tms570lc4357-issue-in-programming-flash-using-code-composer-studio-and-f021-flash-library

器件型号:TMS570LC4357

工具/软件:Code Composer Studio

您好!

我们将使用 Code Composer Studio 在 TMS570LC4357上加载应用代码、以调试代码。 但是当进入调试器模式时、我们看到一些闪存位置未被正确擦除、即擦除的闪存位置显示所有随机数据、如下所示:

我们假设 TMS570LC4357默认启用 ECC、但不确定如何禁用或 Code Composer Studio 中所需的任何配置。 我们有一个要求来计算加载应用程序的 CRC、该应用程序预期具有未使用的闪存位置、但由于闪存中的随机数据、CRC 总是会失败。

我们还使用 F021闪存库通过应用程序对闪存进行擦除和编程、但发现上述行为与菜单一样。

如果在使用 Code Composer Studio 时缺少任何配置、并且在使用 F021库时需要调用函数来正确擦除闪存、那么请使用 L约。

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

    您好 Srihari、

    这是由错误的 ECC 值导致的。 当闪存被擦除时、它的 ECC 空间也被擦除至0xFFFFFFFF、这对于空白闪存是不正确的。

    请使用链接器生成 ECC:

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

    您好、Wang、

    感谢你的答复。 我们已经浏览了 wiki 链接并使用了所需的


    ECC{
    algoL2R5F021:address_mask = 0xfffffff8 //地址位31:3 */
    汉明_mask = R4 /*使用掩码中的 R4/R5构建*/
    奇偶校验掩码= 0x0c //设置哪些 ECC 位是偶校验和奇校验*/
    镜像= F021 //* RM57Lx 和 TMS570LCx 在 F021中编译

    存储器

    /* ROM */
    引导程序(X):origin=0x00200020 length=0x00000020 vfill = 0xffffffff
    Flash_API (RX):origin=0x00200040 length=0x000014C0
    FLASH1 (RX):origin=0x00200040+0x000014C0 length=0x00200000 - 0x40 vfill = 0xffffffff
    EEPROM (RW):origin=0xF0200000 length=0x00020000

    /* RAM */
    堆栈(RW):origin=0x08000000 length=0x00001C00
    RAM (RW):origin=0x08001C00 length=0x00040000
    RAM_API (RW):origin=0x08041C00 length=0x00008000
    SHAREDRAM (RW):origin=0x08049C00 length=0x00001000

    EXTRAM (RW):origin=0x64000000 length=0x100000

    /*组0 ECC */
    ECC_VEC (R):origin=(0xf0400000 +(start (vectors)>> 3))
    length=(size (vectors)>> 3)
    ecc={algoL2R5F021、input_range=vectors}

    /*组1 ECC */
    ECC_FLA1 (R):origin=(0xf0400000 +(开始(FLASH1)>> 3))
    length=(size (FLASH1)>> 3)
    ecc={algoL2R5F021、input_range=FLASH1}

    /*组7 ECC */
    ECC_FLA7 (R):origin=0xF0100000
    length=(size (EEPROM)>> 3)
    ecc={algoL2R5F021、input_range=eeprom}

    但是、当尝试对编译进行编程时、我们会遇到如下所示的错误:

    我们还在进行编程之前在闪存设置中禁用了自动 ECC 生成

    如果需要任何犁沟配置、请告知我们。

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

    FLASH1 (RX):origin=0x00200040+0x000014C0 length=0x00200000 - 0x40 vfill = 0xffffffff

    闪存的长度! 不正确。 它应该是:

     长度= 0x00200000 - 0x40 - 0x14c0