|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
实验目的:6 W4 q! m5 z! O; L3 @
掌握ARM异常处理过程。
6 L' N, W" ^2 ^/ y( m$ i理解SWI程序的结构。1 ?" u' }0 }/ ^
掌握从应用程序中调用SWI异常的方法。
5 O0 @" r8 R0 h9 g# p. W0 Z" \9 h# L8 E$ i( ]9 F
实验一:使用SWI异常设计字符串输出程序
% a! v3 T8 d" s; d. w! z2 Q本实验利用SWI异常输出字符串“hello world!”,采用ARMualtor方式调试,选用ARM7作为目标处理器。
1 D6 q' i5 ?5 ]; [) O2 D3 N. A| 序号 | 执行指令 | 指令执行后的变化情况 | | | 寄存器 | 存储空间 | | | R0 | R1 | R2 | R3 | SP | LR | PC | 0xB000 | 0xCFFC | 0xCFF8 | 0xCFF4 | 0xCFF0 | 0xCFEC | | 0 | ---- | | | | | | | | | | | | | | | 1 | | | | | | | | | | | | | | | | 2 | | | | | | | | | | | | | | | | 3 | | | | | | | | | | | | | | | | 4 | | | | | | | | | | | | | | | | 5 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # Y: Q7 X. I( y% [/ W
9 z& \; s8 _3 D& r, {
SYS_WRITEC EQU &3" o& F; c% M# I4 Q8 g1 U
0 A# O+ n* R$ o0 r5 r
AREA STR_OUT,CODE,READONLY
& Z9 } `; }7 ]/ g4 w* eENTRY
5 z( E7 ~. L% ^1 C- CSTART7 h) j, @, w# ^. f' z
MOV SP,#0xD000
) M6 O$ t- a9 D. LMOV R1,#0xB0003 O7 ?6 v% M( y" a. [
ADR R2,TEXT
* Y% W, Q3 b. V. JBL STROUT
$ T5 P4 r Y6 a7 eMOV R0,#0x189 a' K. B8 @4 p' F5 @% a
LDR R1,=0x20026( O% P$ E4 S, {4 ~
SWI 0x123456 ;semihost 软中断调用+ z6 Y+ d% k4 T9 Z, i4 C. N
0 t1 o" B7 j% y7 h6 Y; ?: F( h" \
STROUT
; \% U# T v3 ^+ Z) YSTMFD SP!,{R0-R3,LR}
! Y3 F3 {6 H5 h$ W' bCHROUT" u( _5 Q& N/ V* b
LDRB R3,[R2],#1
7 o/ h1 s& e0 [: |; @CMP R3,#0" d& `& T, l5 h4 K/ E3 o: _
STR R3,[R1]
1 W$ `& i; |/ g6 E* @, n1 T* D' pMOV R0,#SYS_WRITEC
( h' d; q$ ^8 {8 }0 ^& XSWINE 0x123456
0 y, y- g( j8 }0 e) u+ \, hBNE CHROUT) P; \- t& y7 p" ^
LDMFD SP!,{R0-R3,PC}& j9 N! ] l6 U3 @
3 i6 ? l6 [! v; \3 L
LTORG# }! }4 l! w, T- A, |
TEXT DCB "Hello World!",0x0a,0x0d,0x0
4 i) ^) ^! l+ O* G/ p6 gEND. E: z. X; {1 a: C9 E. v0 S6 I0 |' d
, R6 j+ e7 ~( i+ f; {- m+ w1 Q- _/ Z7 \% z
3 t X9 M5 F. v+ X! M$ K* U0 E; g
/ _- p% a0 a% o& p0 m8 X
- P) s7 q$ I7 P实验二:设计SWI异常处理程序(ARM9)6 Y# a2 A$ C! E0 B( D
本实验设计的SWI异常处理程序分为两级:第一级SWI异常处理程序获得SWI的功能号,由汇编程序实现;第二级SWI异常处理程序完成具体的SWI异常操作,由c程序实现。% u: f' F' H" {: G: d
阅读程序,画出程序间调用的结构图。- R& |$ X6 ^; |8 i; j, Q; @1 Z
|
|