|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
实验目的:
8 E6 d- f0 L. ]# [: I, l4 V掌握ARM异常处理过程。4 L# h" x, i& h0 t3 V# K9 F$ n
理解SWI程序的结构。6 Y6 }. L" N* }- m$ m- ^
掌握从应用程序中调用SWI异常的方法。: P0 I% m. L: O$ W; n2 }7 f
; B/ i { g8 m& u实验一:使用SWI异常设计字符串输出程序8 s9 p0 P- _! v6 {' ^3 r
本实验利用SWI异常输出字符串“hello world!”,采用ARMualtor方式调试,选用ARM7作为目标处理器。. L a" m8 e8 L# p( \
| 序号 | 执行指令 | 指令执行后的变化情况 | | | 寄存器 | 存储空间 | | | R0 | R1 | R2 | R3 | SP | LR | PC | 0xB000 | 0xCFFC | 0xCFF8 | 0xCFF4 | 0xCFF0 | 0xCFEC | | 0 | ---- | | | | | | | | | | | | | | | 1 | | | | | | | | | | | | | | | | 2 | | | | | | | | | | | | | | | | 3 | | | | | | | | | | | | | | | | 4 | | | | | | | | | | | | | | | | 5 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # L& H9 g2 M5 |& d& J+ t
: |% b+ o3 q6 p. T9 W; m
SYS_WRITEC EQU &3; z5 ^4 X+ q" ]6 `* {: a' F4 T
: \0 L4 q- }8 @AREA STR_OUT,CODE,READONLY3 d6 T1 m7 F" w; q1 \) H5 H
ENTRY
4 P1 {& C5 i9 m1 |START
$ X( A& R0 p6 H/ Z* H. dMOV SP,#0xD000! f% U% A% Q8 }& n, Z
MOV R1,#0xB000; ]! {$ {7 ^ g k0 R9 h6 Z, ?
ADR R2,TEXT- \7 K" w) \4 ]% ?6 `1 a7 ^
BL STROUT/ F$ ~. U5 \& H. ]
MOV R0,#0x18
3 r5 G$ d, q$ x6 L& L0 r# _: VLDR R1,=0x20026
% c4 S8 u1 o) I' C" zSWI 0x123456 ;semihost 软中断调用
" H& J. W8 i) z) S( `7 x' S" C6 ]5 H7 Q s
STROUT6 h) l+ m" i D) i" E+ k
STMFD SP!,{R0-R3,LR}
& g3 \; x8 `* T: Z! M% o# b$ Z, c% s' I, `CHROUT, h' E! K4 t0 P( q, L
LDRB R3,[R2],#1# E- j- k7 i' h# U/ \
CMP R3,#0
q& I8 Y Z" y9 R \STR R3,[R1]! u( k. A! L( V1 H
MOV R0,#SYS_WRITEC
$ g& C( L2 b; d4 p; \8 fSWINE 0x1234562 Z, r. ]9 k3 F5 G4 Y
BNE CHROUT
b! N7 i! q4 N& jLDMFD SP!,{R0-R3,PC}2 l& C, W/ l9 V/ k
4 O- u' V* e d. x* a" OLTORG
+ m3 j. K5 l/ B0 w* u6 S" \TEXT DCB "Hello World!",0x0a,0x0d,0x02 K' z+ p& I8 b
END' ]. S- h! b q3 q# k( {
1 p/ m" r4 W, \; Z/ o" k9 c
( ^2 Y3 L& ?2 W* i' T2 m0 B3 i* A7 M- V) X+ K+ i
* M- o$ b6 d3 o
' S; h# x! C" ^" V& Y: ?- \5 @2 E6 I实验二:设计SWI异常处理程序(ARM9)3 O* F( P$ G [ `
本实验设计的SWI异常处理程序分为两级:第一级SWI异常处理程序获得SWI的功能号,由汇编程序实现;第二级SWI异常处理程序完成具体的SWI异常操作,由c程序实现。1 S, ]( v) p$ m6 }
阅读程序,画出程序间调用的结构图。
. V, y* k; u: ~3 @6 i; t |
|