|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
实验目的:" u5 p0 s: `2 v2 c% k' @) Z
掌握ARM异常处理过程。
( s- z0 M3 L7 x+ q! y理解SWI程序的结构。) q0 w% a, e0 K) o
掌握从应用程序中调用SWI异常的方法。$ G( q2 g: _/ N- d* A% V: ?
" P" C2 T, o/ C8 U/ B( S
实验一:使用SWI异常设计字符串输出程序3 L" y' p& e3 v; ]9 _: Q
本实验利用SWI异常输出字符串“hello world!”,采用ARMualtor方式调试,选用ARM7作为目标处理器。
( T7 e% Y4 E. ~| 序号 | 执行指令 | 指令执行后的变化情况 | | | 寄存器 | 存储空间 | | | R0 | R1 | R2 | R3 | SP | LR | PC | 0xB000 | 0xCFFC | 0xCFF8 | 0xCFF4 | 0xCFF0 | 0xCFEC | | 0 | ---- | | | | | | | | | | | | | | | 1 | | | | | | | | | | | | | | | | 2 | | | | | | | | | | | | | | | | 3 | | | | | | | | | | | | | | | | 4 | | | | | | | | | | | | | | | | 5 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
( o; t- r: h# e& Y7 D
9 n3 I1 P5 `/ PSYS_WRITEC EQU &3
7 Z5 f3 D; Y9 y2 X7 V7 `8 C7 f+ Q# C4 c! `" R
AREA STR_OUT,CODE,READONLY
# b1 c: l9 J8 s$ ^- K4 QENTRY% @! {: A! ?9 B& ^! s
START5 e' \9 ?1 ^: l0 P
MOV SP,#0xD000 Z) i& O0 y- X1 F* u# E
MOV R1,#0xB000
7 v* N" ]& o# h. d+ kADR R2,TEXT* _) t; H7 g0 ~7 k9 A
BL STROUT8 }5 @4 w6 f# F6 O
MOV R0,#0x18
# O% L0 y* c6 W8 }2 HLDR R1,=0x200266 D% s4 X7 x3 q
SWI 0x123456 ;semihost 软中断调用
% h8 I1 r7 J. o1 Y" B! \3 E' p( ~' Z v! L" @
STROUT
) [& V% O9 D# x% RSTMFD SP!,{R0-R3,LR} i) }5 L* I t6 B# I
CHROUT5 j' z0 r: B6 J) V: ^
LDRB R3,[R2],#1
7 K5 B: \8 N- c. l" NCMP R3,#0
1 d7 ^0 p8 ^; A9 L, n( g5 WSTR R3,[R1]; C1 M7 g; L5 u+ h9 I, q+ y
MOV R0,#SYS_WRITEC
2 l& E2 ?* ?( \& M/ E" nSWINE 0x123456" H! j) h+ q; ~$ Z1 [' H* G
BNE CHROUT
1 a/ f2 G- q8 zLDMFD SP!,{R0-R3,PC}8 p, A6 `# \, f
% V( l; m. N& h; G4 {5 `& a7 U
LTORG
( k- ~ R# V( ?/ UTEXT DCB "Hello World!",0x0a,0x0d,0x05 W+ {+ S2 Q! T3 A$ b' h
END5 u- f9 [# @, e7 m! e3 ]
2 q# Z1 K; A' ~) {9 @' J( m/ j* F0 G+ M |
# U' w: P: z8 |! \0 c- U
9 o" y, a' g3 F" y5 J/ z
* X2 u9 b3 Z' I/ V8 Z" N/ a9 K实验二:设计SWI异常处理程序(ARM9)5 ?8 ?4 b+ R6 F5 G" F' h
本实验设计的SWI异常处理程序分为两级:第一级SWI异常处理程序获得SWI的功能号,由汇编程序实现;第二级SWI异常处理程序完成具体的SWI异常操作,由c程序实现。
3 I3 W3 o- l# Q. W! G7 l阅读程序,画出程序间调用的结构图。
6 q% _' C% A! O" v2 L |
|