ARM异常处理程序
时间:11-21
来源:互联网
点击:
实验目的:
掌握ARM异常处理过程。
理解SWI程序的结构。
掌握从应用程序中调用SWI异常的方法。
实验一:使用SWI异常设计字符串输出程序
本实验利用SWI异常输出字符串“hello world!”,采用ARMualtor方式调试,选用ARM7作为目标处理器。
SYS_WRITEC EQU &3
AREA STR_OUT,CODE,READONLY
ENTRY
START
MOV SP,#0xD000
MOV R1,#0xB000
ADR R2,TEXT
BL STROUT
MOV R0,#0x18
LDR R1,=0x20026
SWI 0x123456 ;semihost 软中断调用
STROUT
STMFD SP!,{R0-R3,LR}
CHROUT
LDRB R3,[R2],#1
CMP R3,#0
STR R3,[R1]
MOV R0,#SYS_WRITEC
SWINE 0x123456
BNE CHROUT
LDMFD SP!,{R0-R3,PC}
LTORG
TEXT DCB "Hello World!",0x0a,0x0d,0x0
END
实验二:设计SWI异常处理程序(ARM9)
本实验设计的SWI异常处理程序分为两级:第一级SWI异常处理程序获得SWI的功能号,由汇编程序实现;第二级SWI异常处理程序完成具体的SWI异常操作,由c程序实现。
阅读程序,画出程序间调用的结构图。(11.4)
掌握ARM异常处理过程。
理解SWI程序的结构。
掌握从应用程序中调用SWI异常的方法。
实验一:使用SWI异常设计字符串输出程序
本实验利用SWI异常输出字符串“hello world!”,采用ARMualtor方式调试,选用ARM7作为目标处理器。
序号 | 执行指令 | 指令执行后的变化情况 | ||||||||||||
寄存器 | 存储空间 | |||||||||||||
R0 | R1 | R2 | R3 | SP | LR | PC | 0xB000 | 0xCFFC | 0xCFF8 | 0xCFF4 | 0xCFF0 | 0xCFEC | ||
0 | ---- | |||||||||||||
1 | ||||||||||||||
2 | ||||||||||||||
3 | ||||||||||||||
4 | ||||||||||||||
5 | ||||||||||||||
SYS_WRITEC
START
STROUT
CHROUT
TEXT
实验二:设计SWI异常处理程序(ARM9)
本实验设计的SWI异常处理程序分为两级:第一级SWI异常处理程序获得SWI的功能号,由汇编程序实现;第二级SWI异常处理程序完成具体的SWI异常操作,由c程序实现。
阅读程序,画出程序间调用的结构图。(11.4)
ARM异常处理程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)