ARM9 SWI软件中断

发布者:影子猎人最新更新时间:2019-09-06 来源: eefocus关键字:ARM9  SWI  软件中断 手机看文章 扫描二维码
随时随地手机看文章

一、SWI软件中断原理。


在特权模式下,处理器模式切换可以通过软件控制进行切换,即修改 CPSR 的模式位。但在用户模式下,是没有权限通过修改 CPSR 实现模式转换的,除非 通过外部中断或是异常处理过程进行切换。为方便在用户模式下灵活实现模式的 转换, ARM 指令集提供了产生异常的指令,即软件中断指令 SWI 。也就是说用 户程序里可以通过写入 SWI 指令来切换到特权模式,当 CPU 执行到 SWI 指令时会 从用户模式切换到管理模式下,执行软件中断处理。在其他模式下也可以使用 SWI 指令,处理器同样切换到管理模式。 


指令格式:

SWI{cond} immed_24 

其中: immed_24 为 24 位立即数,值为从 0――16777215 之间的整数。它 用来做用户程序和软中断处理程序之间的接头暗号。通过该软中断立即数来区分 用户不同操作。 


指令编码格式: 

指令举例: 

SWI 1;产生 1 号软中断


指令说明: 

在用户模式下调用 SWI 软中断指令,可使处理器跳转至 SWI 中断向量表所对 应的地址中,继而跳入软中断处理程序


中。在软中断处理程序中,可根据软中断号,实现不同的操作。软中断号的判断方法如下: 


LDR R4, [LR, #-4] ; LR 为硬件自动保存 SWI xxx 指令的下一条指令地址

; LR – 4 就是 SWI 指令地址

BIC R4, R4, #0xFF000000 ;将 SWI 指令高 8 位清除掉,只保留低 24 位立

; 即数,取得SWI指令编码,则 R4 即为 SWI

;指令后的软中断号; 


二、代码


AREA Stack1,DATA,READWRITE

stack1 DCD 10*512

PRESERVE8

AREA TEST,CODE,READONLY

CODE32

ENTRY

b reset

b _undefined_instruction

b _software_interrupt

b _prefetch_abort

b _data_abort

b _not_used

b _irq

b _fiq

_undefined_instruction

nop

_prefetch_abort

nop

_data_abort

nop

_not_used

nop

_irq

nop

_fiq

nop

reset

mrs r0,cpsr

bic r0,r0,#0x1f

orr r0,r0,#0xd3

msr cpsr_c,r0 ;Enable svc mode of cpu

init_stack

ldr r0,=stack1 ;get stack top pointer*/

;svc mode stack

mov sp,r0

sub r0,#128*4 ;/*512 byte for irq mode of stack*/

;/****irq mode stack**/

msr cpsr_c,#0xd2

mov sp,r0

sub r0,#128*4 ;/*512 byte for irq mode of stack*/

;/***fiq mode stack***/

msr cpsr_c,#0xd1

mov sp,r0

sub r0,#0

;/***abort mode stack***/

msr cpsr_c,#0xd7

mov sp,r0

sub r0,#0

;/***undefine mode stack***/

msr cpsr_c,#0xdb

mov sp,r0

sub r0,#0

;/*** sys mode and usr mode stack ***/

msr cpsr_c,#0x10

mov sp,r0 ;/*1024 byte for user mode of stack*/

swi 1

swi 2

LOOP

B LOOP

_software_interrupt

STMFD SP!, {R0-R4, LR} ; 保存程序执行现场

LDR R4, [LR, #-4] ; LR - 4 为指令" swi xxx" 的地址,低 24 位 是 软件中断号

BIC R4, R4, #0xFF000000 ; 取得 ARM 指令 24 位立即数

CMP R4, #1

ADDEQ R5,R5,#1 ; 判断 24 位立即数,如果为 1,则执行R5+1 操作

LDREQ PC, =swi_return ; 软中断处理返回CMP R4, #2 ; 判断 24 位立即数,如果为 2,则执行 R6+1 操作

ADDEQ R6,R6,#1

LDREQ PC, =swi_return ; 软中断处理返回地址

swi_return

LDMFD SP!, {R0-R4, PC}^ ; 中断返回, ^表示将 spsr 的值复制到 cpsr

END


PS:

1. bic

BIC指令的格式为:

BIC{条件}{S}  目的寄存器,操作数1,操作数2

BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。操作数1应是一个寄存器,

操作数2可以是一个寄存器、被移位的寄存器、或一个立即数。操作数2为32位的掩码,如果在

掩码中置了某一位1,则清除这一位。未设置的掩码位保持不变。


bic r0,r0,#0x1f

0x1f=11111b

其含义:清除r0的bit[4:0]位。


2,orr

ORR指令的格式为:

ORR{条件}{S}  目的寄存器,操作数1,操作数2

ORR指令用于在两个操作数上进行逻辑戒运算,并把结果放置到目的寄存器中。操作数1应该是一

个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于设置操

作数1的某些位。

指令示例:

ORR R0,R0,#3          ;  该指令设置R0的0、1位,其余位保持不变。


orr r0,r0,#0xd3

     0xd3=1101 0111

     将r0与0xd3作算数或运算,然后将结果返还给r0,即把r0的bit[7:6]和bit[4]和bit[2:0]置为1。


关键字:ARM9  SWI  软件中断 引用地址:ARM9 SWI软件中断

上一篇:RTEMS在S3C2440上的移植-(4)
下一篇:S3C2410 通用异步收发UART 串口通信

推荐阅读最新更新时间:2024-11-06 20:51

基于ARM9的音频系统设计
  1 引言   随着 Internet技术和多媒体技术的快速发展,语音通信技术的应用越来越广泛,也越来越受到重视 。如今的嵌人式设备日益复杂化,功能比以前更加丰富,性能也越来越高。在多种嵌人式终端产品中,音频处理功能已成为不可缺少的重要组成部分,高质量的音效是当前发展的重要趋势。   本文利用 ATMEL公司 的 AT91RM9200型微处理器 和 Philips公司的 UDA1341型立体声音频编解码器设计了一种嵌入式音频系统。该嵌入式音频系统硬件部分采用基于IIS总线的音频系统体系结构,其主要硬件电路后文作了详细的介绍。软件上,笔者以嵌入式Linux操作系统作为平台,重点介绍该音频系统在此平台下的驱动程序的实现。
[嵌入式]
ARM9(S3C2440) Touch Screen
触摸屏工作原理 触摸屏分为:电阻式,电容式,声表面波式,红外线扫描式等类型,使用的最多的是4线电阻式的触摸屏。 触摸屏工作流程 (1)、设置触摸屏接口为等待中断模式,等待触摸屏被按下。 (2)、如果中断(INT_TC)发生,选择X,Y坐标转换模式(X/Y坐标分别转换模式,X/Y坐标自动转换模式),启动AD转换。 (3)、当AD转换完毕后,通过中断(INT_ADC),获取X/Y坐标,ADCDAT0 bit -x坐标,ADCDAT1 bit -Y坐标。 (4)、设置触摸屏接口为等待中断模式,等待触摸笔离开触摸屏。 (5)、返回步骤1,等待下次触摸笔被按下。 实验主要代码 main
[单片机]
基于USB接口的ARM9微控制器外部存储器下载工具— MOLY-DO
目前市场上部分ARM系列微控制器没有自带烧写外部存储器的bootloader或者只能通过串口等实现对各种存储器的烧写。鉴于串口速度过慢、产品批量生产等原因,我们可以开发一个通过 USB 接口,对 ARM9微控制器(本文以 LPC3250 为例) 的外部存储器进行读写操作,实现映像文件烧写的 USB 下载工具 — MOLY-DO 。    MOLY-DO 分为两个部分,其一为上位机,即常用的 Windows 应用程序,提供对 LPC3250 的各种操作;其二为下位机,即可独立运行在 LPC3250 上的固件程序,它包括 LPC3250 各种外围设备的驱动程序以及下位机主体 USB Device 子系统。    硬件
[嵌入式]
ARM9和ARM11的区别
ARM7是冯诺依慢结构,三级流水线结构 ARM9、ARM11是哈佛结构,5级流水线结构,所以性能要高一点。 ARM9和ARM11大多带内存管理器,跑操作系统好一点,ARM7适合裸奔。 我们惯称的 ARM9系列中又存在ARM9与ARM9E两个系列,其中ARM9 属于ARM v4T架构,典型处理器如ARM9TDMI和ARM922T;而ARM9E属于ARM v5TE架构,典型处理器如ARM926EJ和ARM946E。因为后者的芯片数量和应用更为广泛,所以我们提到ARM9的时候更多地是特指ARM9E系 列处理器(主要就是ARM926EJ和ARM946E这两款处理器)。下面关于ARM9的介绍也是更多地集中于ARM9E。 ARM7处理器和AR
[单片机]
<font color='red'>ARM9</font>和ARM11的区别
ARM9 S3C2410控制GPRS模块实现的车辆监控系统
  针对传统基于单片机、GSM 技术、ArcGIS ( MapInfo 或 Google Map ) 的车辆监控系统功能单一、通信费用高、可移植性差、定位精度不高等缺点,提出一种新的车辆监控系统解决方案:以 ARM9 S3C2410 控制 GPRS 模块接入 Internet,实现车载端和监控中心的无线数据传输,同时在监控中心引入 51ditu、Web Service 和数据库,完成车辆定位和用户接入访问,可广泛应用在国内城市公共交通、出租车、旅游车、危险品运输和物流等车辆管理方面。   1 系统需求及应用分析   随着我国城镇化进程加快,地铁、轻轨、快速公交等现代化公共交通快速发展,轨道和公共交通成为城市交通的骨干。目前,我
[单片机]
<font color='red'>ARM9</font> S3C2410控制GPRS模块实现的车辆监控系统
ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的
几天前一个学生问我ARM中断嵌套的问题,我才发现原在我心中理所当然的事对学生来说理解实属不易。 ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin. 在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ的。 先不说中断控制器,只说ARM核心。正常情况下,ARM核都只是机械地随着pc的指示去做事情,当CPSR中的I和F位为1的时候,IRQ和FIQ全部处 于禁止状态。无论你在irq pin和fiq pin上面发什么样的中断信号,ARM是不会理你的,你根本不能打断他,因为他耳聋了,眼也瞎了
[单片机]
基于ARM9嵌入式系统的智能灭火机器人怎样设计
0 引 言 控制器是智能机器人处理和控制信息的主体,它直接决定了机器人的行为和性能。近几年来随着高性能微控制器和嵌入式系统技术的不断进步,为各类实时控制应用提供了解决方案。 嵌入式系统(ES)是技术、通信技术、半导体技术、微电子技术、语音图像数据传输技术,甚至等先进技术和具体应用对象相结合后的系统,其是硬件和紧密捆绑在一起的系统。将嵌入式系统应用于灭火机器人的设计中,对机器人的性能智能化、网络化、小型化都有了明显提高。 比赛用灭火机器人需要机器人有智能较高的自动控制性能与可靠的机械控制性能的同时保证,才能在短时间内准确寻找到火源并灭火回家。在此以9处理器为核心,对基于嵌入式系统的智能灭火机器人进行了设计。本文将从硬件
[机器人]
ucos在s3c2410上运行过程整体剖析之基础知识- ARM9芯片知识
阅读这些内容前,希望你对计算机有了一点简单的概念,最好学习过计算机组成原理并知道一些最基本的概念。如果你学习过51系列的单片机并且利用51系列的单片机做过一些开发,那看这些内容就很简单了。如果你没这些知识也没关系,以我的学习经历来看,可以给大家一个学习计算机组成原理的建议。你可以先大致学习一下计算机组成原理,学完之后一般会对计算机有一个大体的了解,计算机专业在开设这门课时一般会安排计算机组成原理实验,这个实验大家要好好去做,这样会打消你对计算机很神秘的认识。有了这些基础之后,建议大家去学51系列的单片机,在这个小型计算机上做一些开发,这样你就会对计算机组成原理有了更真实更深刻的认识。学习了51系列单片机后,你也对计算机语言有了进一
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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