主题中讨论的其他器件:HALCOGEN、
大家好、团队、
我正在尝试在我们的软件中启用 FreeRTOS。 在开始时、我尝试运行" example_freeRTOSBlinky.c"。
在我对 CCS 执行复位之前、软件工作正常。 SW 卡在 UndefEntry 中。 我可以看到导致此问题的地址是"0x0000B97C"。


团队能否让我深入了解这种情况的发生原因以及如何解决这种情况。
谢谢、此致、
Sakti Kumar Padhy
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.
大家好、团队、
我正在尝试在我们的软件中启用 FreeRTOS。 在开始时、我尝试运行" example_freeRTOSBlinky.c"。
在我对 CCS 执行复位之前、软件工作正常。 SW 卡在 UndefEntry 中。 我可以看到导致此问题的地址是"0x0000B97C"。


团队能否让我深入了解这种情况的发生原因以及如何解决这种情况。
谢谢、此致、
Sakti Kumar Padhy
是的、您完全正确。
我不知道为什么不将模式切换到系统模式。 请添加一个断点、然后单步执行配置模式的指令、以检查模式是否已切换。 我记得我在另一个主题中回答了这个问题。
[引用 userid="505316" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1107608/tms570lc4357-freertos/4104027#4104027"]在这种情况下需要考虑哪些因素?这是发生中止后的模式。
您好!
请添加一个断点、然后单步执行配置模式的指令、以检查模式是否已切换。 我记得我在另一个主题中回答了这个问题。
ANS)我这么做了、我可以看到 CPU 没有从用户模式(SW 正在运行)切换到 _coreInitRegisters_函数中的任何其他模式。
因此、由于 SW 在用户模式下尝试访问 CP15寄存器、SW 将进入第102行的 UNDEF 中止。


您能否还向我指出您在前面讨论过此问题的帖子、因为我无法在论坛上发布帖子。
谢谢
默认情况下禁用 FIQ 和 IRQ、这就是为什么在快照中清除 F 和 I 位的原因。
默认模式应为管理员模式(M[4:1]=b10011)、为什么快照中为用户模式(b10000)?
您在调用_coreInitRegisters_()之前是否调用过其他函数?
能否重置设备(使用 CCS-->运行-->重置-->系统重置),然后检查 CPSR 是否恢复其默认值? 其默认值为0x000003D3。
1) 1)默认情况下禁用 FIQ 和 IRQ、这就是为什么在快照中清除 F 和 I 位。
默认模式应为管理员模式(M[4:1]=b10011)、为什么快照中为用户模式(b10000)?
ANS)我不确定原因。
2) 2)您在调用_coreInitRegisters_()之前是否调用过其他函数?
ans)没有,我没有在_coreinitRegisters()之前添加任何内容。
3)您能否重置设备(使用 CCS-->Run->Reset->System reset),然后检查 CPSR 是否恢复其默认值? 其默认值为0x000003D3。
ANS)我执行了此操作,并观察到在 (使用 CCS->Run->Reset->System reset)和 (使用 CCS->Run->Reset->CPU reset)但使用 Restart (重新启动)按钮的情况下,会发生正确的模式更改序列。
我的观察:-
1. 使用 CCS-->Run->Reset->System reset = 通过触发抢先式 ISR,任务运行正常。 模式是 FPU 时的系统模式启用 _coreinitRegisters_()中的指令。
2. 使用 CCS-->Run->Reset->CPU reset =通过触发抢先式 ISR,任务运行正常。 模式是 FPU 时的系统模式启用 _coreinitRegisters_()中的指令。
3.重新启动=由于在用户模式下访问 CP15寄存器,在 FPU 时 UNDEF 中止_coreinitRegisters_()中的启用指令。
谢谢你。
您好、Sakti、
这是一个问题。
当您为器件加电时、CPU 应处于特权模式。 您可以决定保持此模式并在此模式下执行所有代码。 如果您要进入用户模式、您将对 CPSR 进行编程、以便轻松切换到用户模式。
要从用户模式切换到特权模式、 您可以使用 SVC 调用或 使用 系统模块(SSI)的系统软件中断、该中断将为您生成 IRQ 中断并使您进入 IRQ 模式。 我不确定在加电期间如何执行此操作。
您是否正在使用 TI EVM? 如果不是、您可以尝试其他电路板还是从 TI 订购的其他器件?