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.

[参考译文] LP-AM243:R5F:"未定义指令"由指令&quot 引起的异常;MSR CPSR 寄存器"

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

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1126433/lp-am243-r5f-undefined-instruction-exception-caused-by-instruction-msr-cpsr-register

器件型号:LP-AM243
Thread 中讨论的其他器件:SysConfig

您好、TI 支持团队、

这并不是 TI 特有的问题、它通常被称为 ARM 内核 R5F。。。我仍然希望您能为我提供有关故障的提示。

n´t LaunchPad AM243x 的示例、我目前尝试重建 FreeRTOS 库、但遇到一个例外情况、我真的不明白:

在汇编程序指令"MSR CPSR、R12"被执行后、出现一个"未定义指令"异常、请参考下面的屏幕截图:   

如您所见、寄存器 CPSR (= 0x019F)、内核在执行指令前分别处于"系统"模式、特权模式。

由于 Cortex-R5F 的技术参考、ARM DDI 0460C:"...用户模式以外的模式统称为特权模式"

您能不能给我一个提示、故障/异常的原因可能是什么?

提前非常感谢您的支持。

大潘

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

    大家好、Tai Phan、

    [引用 userid="519443" URL"~μ C/support/microrims/arm-based microrims-group/arm -based microrims/f/arm based 微控制器-forume/1126433/lp-am243-r5f-indefine-instruction-exception-cause-by-instruction-mSR-register"]以引用 LaunchPad 库的示例、该示例目前正尝试重建 AM243x 库并引用 FreeROSn´t 异常。]

    我认为共享内容没有任何问题。 代码正在清除 CPSR.I 位以启用 IRQ。

    处理器似乎处于 ARM 状态而不是 Thumb 状态。 但是、在 SDK 中、我看到 FreeRTOS 内核是在 Thumb 模式下编译的。 您是否进行了此修改?

    在收到此错误之前、您能否分享有关您所做的工作的更多详细信息?

    您要修改以下哪一个示例? 您如何修改它? 如何重建 FreeRTOS 内核库?

    此致、
    弗兰克

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

    您好、Frank、

    首先感谢您的回复。

    当然、我可以告诉您我曾尝试做什么...目前我尝试使用 IAR EW (V9.20.4)和 Lauterbach 调试器(V2.5.14)设置替代工具链。根据用于 R5FSS0的 FreeRTOS 的空项目、我添加了闪烁 LED 功能和用于切换输出的计时器。

    基于 make-files:  

    1...\source\board\makefile.am243x.r5f.ti-arm-clang

    2...\sources\drivers\makefile.am243x.r5f.ti-arm-clang

    3...\sources\kernel\freertos\makefile.am243x.r5f.ti-arm-clang

    我为上述库设置了 IAR 库项目。 使用 IAR 创建的板库和驱动程序库、针对 IAR 和启动的一些调整似乎可以与 FreeRTOS 库配合使用、但附带空项目(freertos.am243x.r5f.ti-arm-clang.debug.lib)。

    最后一步、我想用 IAR 创建 FreeRTOS 库、并面对"未定义指令"故障异常。

    您提到了 ARM 状态和 Thumb 状态、我只需检查 IAR 设置:    

    希望已回答您的问题。

    提前非常感谢您的支持。

    如果你需要整个项目,请告诉我,我可以把它寄给你。

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

    您好、Frank、

    首先感谢您的回复。

    当然、我可以告诉您我曾尝试做什么...目前我尝试使用 IAR EW (V9.20.4)和 Lauterbach 调试器(V2.5.14)设置替代工具链。根据用于 R5FSS0的 FreeRTOS 的空项目、我添加了闪烁 LED 功能和用于切换输出的计时器。

    基于 make-files:  

    1...\source\board\makefile.am243x.r5f.ti-arm-clang

    2...\sources\drivers\makefile.am243x.r5f.ti-arm-clang

    3...\sources\kernel\freertos\makefile.am243x.r5f.ti-arm-clang

    我为上述库设置了 IAR 库项目。 使用 IAR 创建的板库和驱动程序库、针对 IAR 和启动的一些调整似乎可以与 FreeRTOS 库配合使用、但附带空项目(freertos.am243x.r5f.ti-arm-clang.debug.lib)。

    最后一步、我想用 IAR 创建 FreeRTOS 库、并面对"未定义指令"故障异常。

    您提到了 ARM 状态和 Thumb 状态、我只需检查 IAR 设置:    

    希望已回答您的问题。

    提前非常感谢您的支持。

    如果你需要整个项目,请告诉我,我可以把它寄给你。

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    您好、Frank、

    与此同时,我认为我已经发现最可能的原因是:

    它不 是导致异常的汇编器指令"MSR CPSR、R12"、而是这个汇编器指令的作用:=>启用 IRQ  

    当前、汇编器函数 Hwip_enable()在  ClockP_init()之后的函数 DPL_init()中被调用:

    我尝试在使用函数 ClockP_init ()启动系统计时器之前放置 Hwip_enable():  

    我可以毫无 例外地单步执行 Hwip_enable(),所提到的异常只在启动了系统定时器之后发生。

    FreeRTOS 只使用了1个 ISR,对吗?! 系统定时器 ISR ?!

    如果故障仅为1个 ISR、我希望能够轻松找到。

    顺便说一下,我想问您,您是否有用于 FreeRTOS 的 IAR 项目、用于 Launchpad LP-AM243x 的电路板和驱动程序?

    谢谢。

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

    大家好、Tai Phan、

    [引用 userid="519443" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1126433/lp-am243-r5f-indefined-instruction-exception-caused-by-instruction-mSR-register/4179073#4179073]来引用启动和 IAR 中的某些自定义调整[引用]

    我会谨慎地更改启动代码。 对启动例程的更改很容易导致您观察到的问题类型。

    [引用 userid="519443" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1126433/lp-am243-r5f-indefined-instruction-exception-caused-by-instruction-mSR-register/4179073#41790P#41773] (仅在异常启动后,方可通过引用 H1773#/systep]调用异常)。

    好的、我聚集在你们那里、你们认为异常是在计时器 ISR 代码中引起的。

    [~ userid="519443" url="支持/微处理器/基于 ARM 的微处理器组/基于 ARM 的微处理器/f/基于 ARM 的微处理器论坛/1126433/lp-am243-r5f-indefined-instruction-exception-caused-by-instruction-mSR-register/4179073#41790731?FreeRTOS 仅使用正确的 RTOS!] 系统定时器 ISR ?![/报价]

    正确、我建议在 ISR 中放置一个断点并从该点单步执行。

    [引用 userid="519443" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1126433/lp-am243-r5f-indefined-instruction-exception-caused-by-instruction-mSR-register/4179073#4173x-pr-freepad、您可以向 IAR-r/24903n'/r/24r/24373n'pri 引用您可以为 Launchpad 和 Launchpad 提供驱动程序的免费版驱动程序、您可以向 IAR/r/2417903n'.]

    目前没有计划使用 SDK 提供 IAR 内容。 请在此处查看 AM243x 构建表: https://www.ti.com/lit/zip/sprcaj9

    此致、
    弗兰克

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

    大家好、Tai Phan、

    还有几个问题要问:

    • 如何在您的端口中处理 SysConfig?
    • 您是否在构建中使用了自动生成的代码?
    • 您是否在代码中启用了系统计时器?

    谢谢、此致、
    弗兰克

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

    您好、Frank、

    感谢您的回答/评论、我非常感谢。 感谢您提供 AM243x  构建表。

    在计时器 ISR 和其他函数中放置一些断点后、我找到了异常的原因:  

    原始:  

    void __attribute__((section(".text.hwi"))) Hwip_IRQ_handler_c (void)

    注意:此函数不是 IRQ、使用 attribute 关键字、它只放置在特定段: .text.hwi 中

    我的更改导致了异常:

    _IRQ __arm void Hwip_IRQ_handler (void)

    我忽略了它不是一个 IRQ 并放置了 IAR 关键字: __IRQ __arm  

    这就是异常的原因。

    您的问题:

    • 如何在您的端口中处理 SysConfig?

    您是指 FreeRTOS 配置(FreeRTOSConfig.h)、../FreeRTOS\portable\TI_ARM_clang\ARM_CR5F  

    我在这里n´t 任何内容、只需调整 IAR 的一些关键字、例如:#define __asm__  __asm  

    • 您是否在构建中使用了自动生成的代码?

    目前、我只需将基于 FreeRTOS 空项目的 CCS 项目转换为 IAR 项目、并使用 syscfg 生成的所有源代码

    • 您是否在代码中启用了系统计时器?

    是的,这是由 FreeRTOS 库:ClockP_init()完成的。 正如我n´t 的、我不会更改 第一个 FreeRTOS 空项目中的任何内容、我只想将其转换为 IAR 项目。  作为 IAR 项目设置的模板、我使用 make 文件 e.g. makefile.am243x.r5f.ti-arm-clang for FreeRTOS Lib。

    您对您的问题有何打算? 你认为我必须仔细看一下吗?!

    提前感谢您的任何提示。

     此致、

    大潘

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

    大家好、Tai Phan、

    [引用 userid="519443" url="~/support/microcontrollers/arm-based microcontrollers-group/arm -based-microcontrollers/f/arm based-microcontrollers-forum/1126433/lp-am243-r5f-indefined-instruction-exception-caused-by-instruction-mSR-register/4180502"来解释异常的原因。]

    我很高兴您能够解决此问题。

    [引用 userid="519443" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1126433/lp-am243-r5f-indefined-instruction-exception-caused-by-instruction-mSR-register/4180DMR#freerto#4180502" preon_trad_rtos_free\freerto\trad_r5502"[tran\freerto\freerto\free\tran\free\tran\tran\tran\tran\free\  

    不、我问过 SysConfig 生成的应用级代码。

    [引用 userid="519443" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1126433/lp-am243-r5f-indefined-instruction-exception-caused-by-instruction-mcs-cSR-register/4180502#4180Softs#4180502"将基于 IAR 的项目转换为基于 CCS 的所有源代码、并使用引用免费源代码/rtscar]

    好的、明白了。

    [~引语 userid="519443" url="支持/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1126433/lp-am243-r5f-indefined-instruction-exception-caused-by-instruction-mSR-register/4180502#4180502"您有何疑问?] 您认为我必须仔细检查一下吗?![/引述]

    我只是试图帮助诊断问题。

    此致、
    弗兰克