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.

[参考译文] 将内核寄存器更改为 C 变量

Guru**** 2589280 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/980740/core-register-to-c-variable

您好!

我将向应用程序传递有关数据中止原因(数据故障地址寄存器和数据故障状态寄存器)的信息。
我知道可以使用以下指令从 C15获取寄存器值:
_asm (" MRC P15、#0、R11、C6、c0、 #0");/*在这里、我将值复制到 R11 *
但目前无法完成更多任务。

在 TI 编译器中、我无法使用以下命令:
注册 int DFAR __asm ("R11");//使用指定的寄存器变量访问寄存器*/
_asm volatile ("MOV %0,LR\n":"=r"(结果));/*将值复制到变量"result"*/

如果我尝试收到警告:#1493-D GCC 样式显式寄存器变量不受支持"

我在此处发现类似问题:
e2e.ti.com/support/microcontrollers/hercules/f/312/t/280370
但没有任何解释说明如何准确地做到这一点。

那么、如何将 数据故障地址寄存器和数据故障状态寄存器的值传递给应用?

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

    我假设您使用 TI ARM 编译器。

    用汇编语言编写一个函数、该函数返回所需寄存器的值。  从 C 代码调用该函数。  要了解如何编写该函数、 请在 TI ARM 编译器手册中搜索 标题 为"使用汇编语言连接 C 和 C++"的子章节。

    请注意、以汇编语言实现的函数不能内联。

    谢谢、此致、

    乔治