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.

[参考译文] TM4C1294NCPDT:此 SVCall 异常是什么?

Guru**** 2481465 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/703843/tm4c1294ncpdt-what-is-this-svcall-exception

器件型号:TM4C1294NCPDT

您好、社区  

我遇到了一种奇怪的行为。 一段时间后、程序在控制器中运行、SVCALL 异常会发出。 首先、我认为这与 swupdate.c 实用程序相关、遵循主题"此 SVCall 例外是什么?"。  

该项目在以前的修订版本中使用了 TI 引导加载程序、现在不再使用。 但是、该实用程序在不使用时从未出现过问题(即使它在项目中)。 现在、我已经删除 了 swupdate 实用程序的指令、但 SVcall 异常仍在发生。  

该图像指 的是内核寄存器的状态:

您是否有调试代码的建议?  

谢谢大家。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SVCall 异常只是在执行 SVC 汇编指令时发生的软件启动的中断。 这通常用于操作系统中以更改为特权模式。 要查看 SVC 指令的位置、请在 SVC 矢量上设置一个断点、然后查看堆栈。 堆栈应在异常和返回地址之前包含 xPSR。 返回地址应指向 SVC 调用之后的指令。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢你的答复。

    我忘了说、我没有一个操作系统。

    我已经在 SVC 矢量上设置了断点。 但是当异常发生时它不会被命中,但是程序进入 FaultISR()。 实际上、在调试中、我已经看到、保存在异常堆栈框中的寄存器值报告 xPSR 的值为0xA10C0000、因此没有 SVCall 异常。 可能、在之前的故障之后、激励编号会发出 SVCall。

    谢谢 Bob!