1.5.4_swi异常模式程序示例

发布者:AdventureSeeker最新更新时间:2021-08-13 来源: eefocus关键字:swi  异常模式  reset 手机看文章 扫描二维码
随时随地手机看文章

上电之后,程序会进行reset,这时会进入svc模式,这是一种特权模式。

在这里插入图片描述

APP运行于usr mode,在该模式下APP访问硬件时,必须切换mode为svc mode,否则会受限。


那么,怎么切换mode呢?我们知道,当发生异常时,比如中断和未定义指令异常,CPU会进入对应的特权模式,在这些模式下可以进入svc mode,但是这些异常都不稳定。所以,我们使用的是swi(software interrupt)异常,通过指令swi #val(使用软中断)来进入svc模式,同时还可以根据#val来判断需要进行什么样的处理。


先从svc模式切换到usr模式:

在这里插入图片描述

然后再通过一条swi指令进入svc模式:

在这里插入图片描述

退出异常时,将lr_svc直接赋给PC即可,所以存lr_svc时直接存就行。

在这里插入图片描述

然后,在svc异常的处理程序中,输出cpsr的值和表示进入swi异常的字符串。这些部分与未定义指令异常的处理没有什么不同。


除了上述这些,还要找到swi指令的val值。我们知道进入svc异常时,lr_svc保存的是cpu下一条要处理的指令的地址,也就是ldr pc, =main的地址。该地址减去4,就是swi 0x123的地址。

在这里插入图片描述

所以我们先将lr的值保存到r4,这是由于中间的printException会进行子程序调用,保存到r4可以保证不会被破坏。然后把r4 - 4得到swi 0x123的地址,赋给r0,然后跳到printSWIVal子程序中去,在这个子程序中再取出#val并输出。

在这里插入图片描述
在这里插入图片描述

根据下图,我们知道swi的后24位被处理器忽略,这应该就是#val。

在这里插入图片描述

最终的结果如下图:cpsr的[M4:M0]为0b10011,进入了svc模式,输入的#val也正确。


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

当运行与Thumb指令集时,swi指令为16位,这时他的#val只有八位,也就是最后八位。

在这里插入图片描述

关键字:swi  异常模式  reset 引用地址:1.5.4_swi异常模式程序示例

上一篇:mount nfs常见出错信息总结
下一篇:1.5.5_按键中断程序示例_概述与初始化

推荐阅读最新更新时间:2024-11-01 16:17

串口工作在DMA模式下有时接收异常
1 前言 客户反馈在使用STM32F205的串口工作在DMA模式时,有时能够接收数据,有时完全没有数据,但如果换成中断模式来接收又能100%正常收到数据。 2 复现现象 2.1 问题背景 与客户沟通,客户使用的是STM32F2标准库V1.1.0,串口波特率为1.408Mbps,不经过串口RS232,直接连接主CPU和从MCU(STM32F205)的串口发送和接收引脚,如下图所示: 图1 2.2 尝试重现问题 由于客户使用的是主从架构,实验采用两块STM3220G-EVAL评估板来重现现象。一块用来不间断发送串口数据,另一块采用串口DMA进行接收,直接通过杜邦线连接串口PIN脚并共地,不使用评估板上的RS232收
[单片机]
串口工作在DMA<font color='red'>模式</font>下有时接收<font color='red'>异常</font>
ARM中断异常及其处理器模式
ARM 处理器核有七种异常中断: 1.复位(包括上电) 2.FIQ(快速中断) 3.IRQ(一般中断) 4.SWI(软件中断) 5.预取址中止 6.数据中止 7.未定义指令异常 ARM核发生以上异常时,便会进入相应的处理器模式进行相应的异常处理。 其中ARM的处理器模式有以下7种: 1.管理模式(SVC):Supervisor也是处理器上电默认的运行模式,可由复位(包括上电)和SWI(软件中断)触发进入 2.快速中断模式(FIQ):由快速中断异常异常触发进入进行相应的中断处理子程序 3.一般中断模式(IRQ):由一般中断异常触发进入进行相应的中断处理 4.中止模式(abort):由预取址中止异常和数据中止异常
[单片机]
TQ2440裸机中断(软中断swi)
1. 引出: 一般情况下,比如调用open系统调用,大家会说此时系统陷入了内核态,继而调用内核的sys_open来进行实际的open处理,但是为什么用户态调用了open就会陷入内核态呢?所谓的用户态及内核态究竟是什么呢? 2. S3C2440软中断 ARM9处理器有7种工作模式,软中断,通俗的说就是为了从其他工作模式切换到管理模式(在管理模式,可以使用的资源最多),处理器提供软中断,主要是为了支持操作系统的系统调用功能。 ARM体系 CPU的7种工作模式: · 用户模式(usr): ARM处理器正常的程序执行状态(对应于LINUX的用户态) · 快速中断模式(fiq): 用于高速数据传输或通道处理 · 中断模式(irq):
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved