ARM Cortex M4 SVC_Handler“UsageFault”

2024-01-12

我正在为个人迷你 ARM 内核项目创建一个上下文切换程序,并且该上下文切换程序完全用汇编语言编写。问题是,当我进行 SVC 调用 (svc 0) 时,我会输入 SVC_Handler,但是当我尝试执行下一条指令时,我会输入不同的处理程序(“UsageFault_Handler”)。在我弹出 SVC_Handler 中的任何寄存器之前,错误发生了。

这是我的 gdb 屏幕的寄存器转储(就在我进入 SVC_Handler 并遇到UsageFault_Handler 之后):

(gdb) i r
r0             0x1  1
r1             0x20000bcc   536873932
r2             0x40004404   1073759236
r3             0x1  1
r4             0x0  0
r5             0xc  12
r6             0x3  3
r7             0x20000fe4   536874980
r8             0x1  1
r9             0x0  0
r10            0xb  11
r11            0xa  10
r12            0x2  2
sp             0x2001ffa8   0x2001ffa8
lr             0xfffffff1   4294967281
pc             0x8000188    0x8000188 <UsageFault_Handler>
cpsr           0x3  3

我的上下文切换:

activate:
      cpsie i                                                                   

      /* save kernel state into msp */
      mrs ip, msp
      push {r4-r11,ip,lr}

      /* retrieve routine parameters and switch to the process stack psp */
      ldmfd r0!, {ip,lr}                                                        
      msr control, ip                                                           
      isb                                                                       
      msr psp, r0                                                               

      /* software stack frame. load user state */
      pop {r4-r11}                                                              

      /* hardware stack frame. the cpu pops r0-r3, r12 (IP), LR, PC, xPSR automatically */

      /* jump to user task*/
      bx lr


SVC_Handler:
      /* automatically use the msp as the sp when entering handler mode */

      /* pop msp stack */
      pop {r4-r11,ip,lr}
      mov sp, ip

      /* back to the thread mode if no other active exception */
      bx lr

不确定是什么导致了这个问题,因为我确保中断已启用并将 SVC 优先级初始化为 0x0(最高优先级)。另外,我正在使用 ARM Cortex M4 STM32F411E 评估板。


问题是我的中断向量都是偶数(ARM 模式)。当 T 位为 0(向量号的最低有效位)时尝试执行指令会导致故障或锁定。由于 Cortex-M 仅在 Thumb2 状态下运行,因此我必须通过将“.thumb_func”放置在上下文切换程序集中的中断处理程序上方来指示我的异常在拇指状态下运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARM Cortex M4 SVC_Handler“UsageFault” 的相关文章

随机推荐

  • 使用 JavaScript 基于字符串创建十六进制颜色

    我想创建一个函数来接受任何旧字符串 通常是一个单词 并从中somehow生成一个介于之间的十六进制值 000000 and FFFFFF 所以我可以将它用作 HTML 元素的颜色 甚至可能是一个速记的十六进制值 例如 FFF 如果不那么复杂
  • 使用 Mapbox 过滤掉国家/地区

    是否有可能使用 Mapbox 仅显示德国国家边界和内部数据 我不想展示世界其他地方 Thankx Markus 是的 使用德国 GeoJSONhttp code highcharts com mapdata http code highch
  • android usb UsbDeviceConnection.bulkTransfer 返回 -1

    我正在尝试从 Android 平板电脑向 POS 打印机发送命令 我已经能够使基本连接正常工作 但现在当我尝试将数据发送到打印机时 bulkTransfer 返回 1 请帮助我了解发生了什么事 以下是从 android 站点获取的修改后的广
  • 处理不断变化的模式

    我们是一家游戏公司 将事件 每天最多 1 个千兆事件 存储到 bigquery 事件按月份和应用程序进行分片 以降低查询成本 现在来谈谈我们的问题 我们当前的解决方案支持添加新类型的事件 从而产生新版本的表模式 该版本也已添加到表中 I e
  • 哪个最有效:直接通过 nginx 提供静态文件还是通过 nginx 反向代理通过节点提供静态文件?

    我已经使用了nginx as reverse proxy服务我的node js网络应用程序3000 lt gt 80例如 实际上 我在节点应用程序中提供我的资产 使用express static中间件 我读了一遍又一遍 发现 nginx 提
  • Entity Framework 5 中的 Visual Studio 2010 支持 LocalDB 吗?

    NET 4 0 上的实体框架 5 中的 Visual Studio 2010 是否支持 LocalDB 还是我做错了 使用 LocalDB 的连接字符串实例化模型容器时 出现 找不到网络路径 问题 这是连接字符串 var connectio
  • MacOS 上的 Clang 包含问题

    我在 MacOS 上从头开始构建了 Clang 但遇到了问题 使用以下命令来配置 Clang 进行构建 cmake G Unix Makefiles DCMAKE INSTALL PREFIX opt clang 12 DCMAKE BUI
  • MATLAB 滑块步进行为

    我使用 MATLAB 2012a 中的 GUIDE 创建了一个滑块小部件 我希望它控制一个显示图像的轴 其中滑块逐步浏览一系列图像 我已在 m 文件的一部分中设置了滑块的 Min Max 和 SliderStep 属性 sliderMin
  • 如何使用 spacy 查找最常用的单词?

    我正在使用 spacy 和 python 它可以很好地标记每个单词 但我想知道是否有可能找到字符串中最常见的单词 还有可能得到最常见的名词 动词 副词等吗 包含一个 count by 函数 但我似乎无法让它以任何有意义的方式运行 我最近不得
  • Jquery:选择调用该函数的元素

    我通过调用元素本身的函数onclick属性 因为我需要 php 动态地在函数的参数之一中给出一个值 当我尝试通过以下方式引用函数中的调用元素时 this 它最终引用整个窗口而不是元素 我该如何解决 尝试将您的元素作为参数发送到您的函数 如下
  • Laravel 错误:方法 Illuminate\View\View::__toString() 不得引发异常

    你在 Laravel 工作时见过这个可爱的错误吗 Method Illuminate View View toString must not throw an exception 我见过它 这非常烦人 我发现了引发此错误的两个原因 我只是想
  • 如何在 JAX-RS REST 方法中检索 JSON 消息正文?

    我有以下内容JSON它将作为 HTTP 请求的一部分在消息正文中传递 names id
  • 自动在绘图中定位文本框

    有没有办法告诉pyplot text 一个像你一样的位置pyplot legend 像 legend 论证这样的东西会很棒 plt legend loc upper left 我正在尝试使用字母 例如 A B 来标记具有不同轴的子图 我认为
  • 如何检测Safari、Chrome、IE、Firefox和Opera浏览器?

    我有 5 个适用于 Firefox Chrome Internet Explorer IE Opera 和 Safari 的插件 扩展 如何正确识别用户浏览器并重定向 单击安装按钮后 以下载相应的插件 谷歌搜索浏览器可靠检测通常会导致检查用
  • DNS问题,nslookup可以,ping不行

    我正在我的公寓里设置一个开发服务器 我已经在其上设置了一个 Ubuntu DNS 服务器 并添加了区域 weddinglist 只是 weddinglist 没有TLD http en wikipedia org wiki Top leve
  • JSON stringify 返回空字符串[重复]

    这个问题在这里已经有答案了 在 Javascript 中 我尝试使用 stringify 但它不断返回空字符串 这里有什么问题吗 请随意编辑小提琴 JS values values belopp 2322 values test jkee
  • 如何根据其中一个 Vec 的值对两个 Vec 进行共同排序?

    我有两个Vec对应于特征向量列表及其相应的类标签 我想按类标签对它们进行共同排序 然而 Rust 的sort by对切 片进行操作 而不是作为特征 或类似 上的通用函数 并且闭包仅获取要比较的元素而不是索引 因此我可以偷偷地破解排序以使其并
  • 实体属性值 (EAV) 框架?

    我见过实体属性值 http en wikipedia org wiki Entity attribute value model在我真正知道它的名字是什么之前 我已经在很多情况下了解过它 当您不是将数据存储在数据库列中 而是 翻转 它并拥有
  • 无法使用 python PIL Image.show 显示图像

    我正在使用 Python 图像库 但无法在 Windows Live 照片库中成功打开图像 显示一条消息 没有选择照片或视频 而不是图像 这是我尝试过的 import Image img Image open r C Users User
  • ARM Cortex M4 SVC_Handler“UsageFault”

    我正在为个人迷你 ARM 内核项目创建一个上下文切换程序 并且该上下文切换程序完全用汇编语言编写 问题是 当我进行 SVC 调用 svc 0 时 我会输入 SVC Handler 但是当我尝试执行下一条指令时 我会输入不同的处理程序 Usa