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:复位后、MCU 进入异步数据中止

Guru**** 2573065 points
Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN, RM57L843

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/737100/tms570lc4357-mcu-into-asynchronous-data-abort-after-reset

器件型号:TMS570LC4357
主题中讨论的其他器件: HALCOGENRM57L843

大家好、

外观很奇怪。 我使用 XDS110 USB 软件狗下载/调试定制的 TMS570LC4357板、该板可能在首次复位后无法加电。 重新创建问题的步骤为:

1.连接目标板

2.擦除并下载程序

3.完成后,关闭整个板的电源,然后重新为板供电。 到目前为止、一切都运行顺利。

4.再次关闭电路板电源,然后上电。 现在、它进入异步数据中止。 没有任何额外的信息可用于查找错误! 请注意、从现在开始、复位不是使电路板恢复正常的选项。 只有重新下载程序才能使其再次运行。

我发现这个问题可能与数据存储在闪存/存储器中的方式有关。 如果出现问题、重建项目无法解决问题。 但是、修改散点/链接文件以随机重新定位代码/变量、从而有可能消除错误。 换言之、如果项目运行良好、添加新代码/变量可能会引入此问题。

项目被这一问题所困住了一个多月。 请提供帮助。 什么可能会出错……? 谢谢!

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

    请使用 HALCoGen 中的 LED rtiBlinky 示例检查软件启动。 因为 LC4357器件默认启用 ECC。 为了避免启动时出现 ECC 错误、请在链接器 cmd 文件中生成 ECC:

    processors.wiki.ti.com/.../Linker_Generated_ECC

    TMS570LC4357和 RM57L843
    ECC 算法
    由于它们的缓存 CPU (R5)、这些器件使用与 TMS570LS 和 RM4x 器件不同的 CPU 到闪存的连接和不同的闪存包装程序(L2FMC)。 从 ECC 算法的角度来看、不同之处在于所有地址位都参与 ECC 校验位的生成。

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

    RM57L843和 TMS570LC4357的示例内存映射
    存储器

    /*组0 (2MB)*/
    引导程序(X):origin=0x00000000 length=0x00000020 fill=0xffffffff
    FLASH0 (RX):origin=0x00000020 length=0x001FFFE0 vfill=0xffffffff

    /*组1 (2MB)*/
    FLASH1 (RX):origin=0x00200000 length=0x00200000 vfill=0xffffffff

    /*银行7 (128KB、FEE)*/
    FLASH7 (R):origin=0xF0200000 length=0x00020000 vfill=0xffffffff


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

    ECC_FLA0 (R):origin=(0xf0400000 +(开始(FLASH0)>> 3))
    length=(size (FLASH0)>> 3)
    ecc={algoL2R5F021、input_range=FLASH0}
    /*组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 (FLASH7)>> 3)
    ecc={algoL2R5F021、input_range=FLASH7}

    /* eSRAM (512KB)*/
    堆栈(RW):origin=0x08000000
    长度= 0x00001500

    RAM (RW):origin=(end (stacks))
    length=(0x00080000 - size (stacks)(堆栈))
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    QJ Wang、您好!

    感谢您的回复。 我知道这可能是由 ECC 引起的、但如果 ECC 刷写中断、第一个循环通电复位如何正常运行?

    在"CCS 调试配置"下、我们启用了"自动 ECC 生成"和"将程序段与64位存储器区域对齐(用于 ECC 计算)"。 此 CCS 功能是否可以提供所需的 ECC 闪存填充?

    期待很快收到您的回复! Thx。

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

    QJ Wang、您好!

    此外、我们使用的启动代码从 Halcogen 生成的项目中复制。 在大多数情况下、它在没有此问题的情况下运行良好。 密钥有时是在添加代码/变量后、第一个下电上电后、广泛的内容会消失(始终进入数据中止)。

    谢谢!

    田北俊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、有人可以帮忙吗? 仍在阻止... THX...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Yiran、

    您是否知道数据中止发生在何处? 它是在 sys_startup.c 还是在 main()中发生? 启用了哪些自检? 您是否启用了高速缓存和高速缓存 ECC?

    如果您可以访问 CP15寄存器、请读取数据中止、数据中止状态的地址。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

    作为渐近数据中止、我不知道异常发生的位置...  我们有一个正在运行的操作系统、代码可以始终超越 OS 初始化、因此它肯定不在 sys_startup 中。 缓存已启用、用于启用缓存的代码是从 Halcogen 生成的工程中提取的。 通过注释以及高速缓存使能代码、可以看到 ECC 已启用。

    但是、由于 Asyn 数据中止问题、我可以访问 CP15、它不提供有用的信息...

    Thx。

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

    我很难猜测问题的位置、因为我没有足够的信息。 打印调试消息可以帮助您缩小导致问题的代码部分。

    您是否将代码写入闪存或 EEPROM 中的内容作为下一次启动的条件或标志? 是否有任何闪存区域被配置为只能在特权模式下访问、并且您的代码会在用户模式下尝试访问它?

    操作系统中的 MPU 设置是什么? 数据故障状态寄存器中的值是多少? 谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 YiRan、

    您是否要提供更多信息来帮助我们调查问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 YiRan、

    我假设您已经解决了这个问题、因此我关闭了这个主题。 如果您有任何新问题、请开始另一个主题。 谢谢