EDA365电子论坛网
标题:
ARM异常处理程序
[打印本页]
作者:
zxcvbvbnmn
时间:
2021-4-25 13:27
标题:
ARM异常处理程序
实验目的:
2 ?/ y& Y% \ D q4 a: d0 J3 Z
掌握
ARM
异常处理过程。
" I+ t' ]( U! g$ | R$ Q
理解SWI程序的结构。
C: C1 s# k+ U% v- M/ G
掌握从应用程序中调用SWI异常的方法。
1 S/ H) j* M5 y: j
4 I. h- {& F) u' T) L! R
实验一:使用SWI异常设计字符串输出程序
# V! a7 |* C7 s E% e
本实验利用SWI异常输出字符串“hello world!”,采用ARMualtor方式调试,选用ARM7作为目标处理器。
/ n& _: N% t# M* F' W
序号
执行指令
指令执行后的变化情况
寄存器
存储空间
R0
R1
R2
R3
SP
LR
PC
0xB000
0xCFFC
0xCFF8
0xCFF4
0xCFF0
0xCFEC
0
----
1
2
3
4
5
, O7 [, _4 w% M8 z
- R4 {+ a7 x5 h& `. A: a
SYS_WRITEC
EQU
&3
* X4 Z# u" F8 f( A9 G: a7 ]/ [7 L
5 w) T9 P$ C5 E! t/ c0 A% S, |6 X
AREA STR_OUT,CODE,READONLY
1 [0 W1 T2 t6 [) ~
ENTRY
0 W: U( s1 V2 |8 s: G0 W
START
( a& M" D5 `: ^( f1 p0 s
MOV SP,#0xD000
, U" I7 r5 E2 }9 j. k( i
MOV R1,#0xB000
4 A) Z& v' k8 m# Y. G+ |. t! k; t! y+ W- }
ADR R2,TEXT
( w2 U; Z5 K; E0 J
BL STROUT
1 \) F ^' I+ H1 s' J1 D4 Y
MOV R0,#0x18
& X- U# Q) x9 L! V: ~
LDR R1,=0x20026
5 h1 F5 y. n1 f/ v6 T) K) v i; \; \
SWI 0x123456
;semihost 软中断调用
4 W. |! ]$ B ?- [" Q+ T- D
9 R; A# ^- c# d ] G
STROUT
t$ ]( S* b9 o* \# n) l5 t) M
STMFD
SP!,{R0-R3,LR}
6 v/ p, ~* l* e
CHROUT
! H/ \4 k0 k N* U8 y
LDRB R3,[R2],#1
% k* R" r! Q8 f
CMP R3,#0
/ R- h# I; D' b' N2 D5 h. D! `; t
STR R3,[R1]
+ _5 |2 R- ]- K1 ?
MOV R0,#SYS_WRITEC
, R9 n2 A! S- d6 G' n# U# U
SWINE 0x123456
0 a1 o! a1 s; g" z5 p3 P6 E# ~9 s& f
BNE CHROUT
T) g; ~7 N+ b
LDMFD SP!,{R0-R3,PC}
# o! z) `$ O4 g- E* O
% o* c1 x/ E6 F1 Y, @
LTORG
& W" m; F* p* c( _
TEXT
DCB "Hello World!",0x0a,0x0d,0x0
H3 N2 V; o3 G" O% U
END
& U- X, N6 A0 w8 }+ A% {- r
& w: Y! I& b) F& ~8 _# f
+ x2 K3 X' k, c, H6 o$ t
* d. i+ T) i2 B( u: X6 x
6 z3 o2 W9 V* g4 h# z0 z6 c2 ]
0 ~% E4 p. {- s
实验二:设计SWI
异常处理程序
(ARM9)
/ Z" C1 ^5 f' p& T6 g; H- Q
本实验设计的SWI异常处理程序分为两级:第一级SWI异常处理程序获得SWI的功能号,由汇编程序实现;第二级SWI异常处理程序完成具体的SWI异常操作,由c程序实现。
4 s7 [2 E+ F) K1 Q4 l
阅读程序,画出程序间调用的结构图。
9 Y8 ^( Q; H5 h. @$ M
作者:
twel2e
时间:
2021-4-25 16:08
ARM异常处理
, _" F) ~( V8 d0 Y! y
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2