没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
转------------S3C44BX 启动代码(进一步注释,欢迎指正)
启动程序详细说明文档及 配置
语言中相当于
! "声明符号常量定义寄存器的对应地址
#$%&
'($%&)
'*$%&
+#,$%&-
+'$%&&
./0
.($%&01
"2 ""
#($%&0)
*($%&0)
(*'$%&0)
' 3 ""
,4,5$%&)-
# 607088
,'($%&
4$'($%&&
,$'($%&-
9'($%&1
(,'($%&:
4'($%&;
'('*$%&
($%
/28%8!80
5'(定义全局逻辑变量 5'(
<=(4>?&@相当于 A(4??&@B
5'(=,>5'(?,;
(1-声明为 1- 位指令集,即使用 ,' 指令进行编译,(1- 和 ,' 作用相同
C"8
5'(=4>5'(?4;
D
<5'(5'(?,
(1-转入 1- 位编译模式
D
以下位宏定义,任何调用 50" EEE5,50"EEE 都将被下面的程序展开
该宏定义的代码用于将对应中断服务程序 , 的入口地址装载到 # 中,可称之为“加载程序”
本初始化程序定义了一个 1 个字空间的数据区(在文件最后),用于存放相应中断服务程序的首地址。
每个字空间都有一个标号,以 50"EEE 命名。
在向量中断模式下使用“加载程序”来执行中断服务程序。
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFF向量A矢量B中断和非向量A非矢量B中断模式的概念与区别FFFFFFFFFFFFFFFFFF
(一)
向量中断模式是当 # 读取位于 %&) 处的 ,$ 中断指令的时候,系统自动读取对应于该中断源确定地
址上的指令取代 %&) 处的指令,
通过跳转指令系统就直接跳转到对应地址函数中,节省了中断处理时间提高了中断处理速度。
例如 中断的向量地址为 %G则在 % 处放如下代码:"0 #G?50" 当 中断产
生的时候系统会
自动跳转到 50" 函数中处理中断。
(二)
非向量中断模式处理方式是一种传统的中断处理方法,当系统产生中断的时候,系统将 # 寄存器
中对应标志位置位,
然后跳转到位于 %&) 处的统一中断函数中;
该函数通过读取 # 寄存器中对应标志位来判断中断源,并根据优先级关系再跳到对应中断源的处
理代码中处理中断。
',(
H50" ;"5,H50";"
H50" ;"
由于 仅支持 4(满递减)型堆栈
8!;8G8GI将堆栈退一个字用于保存下面用到的 ,
808JG= >将 , 压入堆栈
"0 G?H50";"将 50";" 的地址赋给 ,
"0 G< D将 50";" 的地址指向的内容A实际的执行地址B赋给 ,
8 G<8GID将对应的中断函数首地址入栈保护
"008JG= G>将中断函数的首地址出栈,放入 # 中,系统将跳转到对应中断处理函
数
'
,' 的系统软件开发中主要包含 ,(,,.GK 三个段组成。
其中 ,( 为代码段;,. 为已经初始化的全局变量;K 是未初始化的全局变量
(对于 来说,依次对%0;88 段)
值得说明的是:
"0 要将 ,. 段复制到 ,' 中并将 K 段清零;
编译器要使用下列段来记录各段的起始和结束地址。
CHH,(HH8C,( 段起始地址
CHH,(HHC,( 段结束地址+&
CHH,.HH8C,. 段起始地址
CHH,.HHC,. 段结束地址+&
CHHKHH8CK 段起始地址
CHHKHHCK 段结束地址+&
这些标号的值是通过编译器的设定来确定的,如编译软件中对 ,(6;8 和 ,.68 的设定
'#(,CHH,(HHC,(' 代码的结束地址A 数据的起始地址B
'#(,CHH,.HH8C,' 中需初始化的首地址
'#(,CHHKHH8C需初始化为 的全局变量的首地址
'#(,CHHKHHC结束地址
'#(,'主程序的入口
以下为代码段
,G(G,(L
说明:
关键字 ,L 告诉编译器保留这段代码。
从代码看 段就是要写入 % 地址的原始中断向量,
因此把这个文件编译生成的 ;( 和 填入 62 63! 页对应项中。
【这样编译器会把该段代码编译到 E 地址。】
异常中断向量表【每个表项占 个字节】
一旦系统运行时有中断发生G即使移植了操作系统G如 "!%。
处理器已经把控制权交给了操作系统,一旦发生中断,处理器还是会跳转到从 % 开始执行
中断向量表中的对应中断。
具体中断向量布局参考 1E 的数据手册
例如 的中断向量为 %下面对应表中第 M 项位置
对应向量地址为 %NFAM6&B?%
,L,L 程序入口标号需要顶格式写,否则出错。
;,850" 复位异常
;50" 0未定义异常
;50" .软件中断异常
;50" #; 指令预取异常
;50" ; 数据预取异常
;保留
;50" ,$外部中断 外设中断都是在这里扩展的
;50" 4$快速中断
FFF'#(,(FFF
/5.O 0 !08;"0G/;OP8 !88/!"0
;/0"2;"PGP 26 !0P/5.;!1E ! ""
;50" ,$6Q8!;8G" GI
;50" ,$6Q8!;8G" GI
说明:原文注明当使用向量中断模式时,需用 8!;8G" GI 来代替前面的语句
这是原来 1E 硬件中的一个 ,后期推出的 1E 已经解决此 ,但是为了兼
容
早期的版本,用 8!;8G" GI 替换后也可以正常工作,相当于现在的硬件中两条语句都
可以兼容,后期的器件手册中已经注明可以直接采用 ;50" ,$ 的方式
PPP/8 %
9(,+,5
"0 G?50" 5. !O ;"
"0 G?50" &
"0 G?50" -
"0 G?50" 1
"0 G?50" R@:
"0 G?50" *
;
;
"0 G?50" K'
"0 G?50" K'&
"0 G?50" '
"0 G?50" '&
"0 G?50" .
"0 G?50" ,,&
;
;
"0 G?50" ',
"0 G?50" ',&
"0 G?50" ',-
"0 G?50" ',1
"0 G?50" ',
"0 G?50" ',R
;
;
"0 G?50" ,E
"0 G?50" ,E&
"0 G?50"
"0 G?50" (
"0 G?50" E
"0 G?50" E&
;
;
"0 G?50" ,*
;
;
;
;
;*
;
;
"0 G?50" *
;
;
;
;
;*
;
;
剩余19页未读,继续阅读
资源评论
- ducling2012-11-27不是很细,但还可以
tianyaxingke
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功