|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/ ]: ?; c/ Z! P本文主要简单记录C6000在启动装载过程和中断向量表的配置。/ a+ S5 k/ a i4 d2 ?: K
2 v6 m- P3 D/ x1 I0 c3 K1. Bootloader
5 C9 v" _/ o+ j; A( O7 ]- X `/ C1 q4 a4 H |6 I% c( l
2 v# i7 w0 J0 V) w+ q$ o1 B* l
4 q6 Z2 Z2 R. F如上图,
; Y+ g" U. b% J: `) F% R+ _8 p2 I3 a/ F
(1)在Device Reset阶段:% z! U6 z5 a% b: I
6 J$ m$ x# d2 f: @设备初始化为默认状态,大部分三态输出都配置为高阻态。& t+ }6 U: B4 c1 Z+ `" x* Z. Z" Y
* n) |' r. Q) Z1 O8 O0 m(2)在CPU Reset阶段:
5 G3 j1 |- X+ K/ ?! W; D- ]# v/ K. Z) t. h7 M
从RS上升沿处开始(这个时候,根据HD[4:3]配置启动模式,HD8配置大小端模式,CLKMODE配置输入时钟源,根据HPI_EN配置外设功能),处理器检查启动模式HD[4:3],启动bootloader程序。
6 t' F, } P5 }4 `
% A2 g/ W" j8 ~1 w# C; C( SEDMA自动将CE1开始位置的1KB代码拷贝到内部程序存储器的0地址。
, D! a) f- p" _; f: J' k; M O8 j: e6 q" q0 X
2 T3 R3 C2 ~! t* G
1 h1 O6 m4 U0 f+ K5 H0 T7 ?! D(3)RESET信号恢复高电平,CPU从内存0地址处开始运行程序. R8 j# _. E8 X0 K% w$ p
- T/ {/ m# l- w
- o& O ?; o, b: M( ?2 H. q2. Interrupt Vector Table(Interrupt Service Table, IST)
. y- j6 u2 ? p$ K
/ I) S% v3 E9 ^ 处理器在RESET为低电平时复位,在RESET的上升沿,启动配置被锁定,开始从0地址处执行程序。一旦ROM启动完成(将外部ROM的1KB程序拷贝到内存0地址完成),寄存器初始化为默认值,程序计数器PC装载复位中断向量(复位中断向量需要在0地址处),CPU开始从0地址开始执行,这个地址称为复位向量。
5 t! _: x( D# |: z% U5 W u- s0 R
1 t4 X: t A" F" R- E2 L 默认的,中断服务表(IST)也在0地址处。IST是中断向量的一个集合,当CPU中断发生时,PC自动通过中断向量跳转到对应的中断服务程序。每个中断向量都是8个字(WORD)对齐。IST可以重映射到任意的以0x400-byte对齐的位置,但需要修改中断服务表指针(ISTP),在复位时,ISTP初始化为0值,IST首地址与复位向量对齐。7 T. H+ H1 |8 M
: \4 s7 l4 d& Y+ \7 S(1)创建中断向量表* R- C5 Z+ N* W9 z; e [, N
# N3 G+ F/ R" v. D; I [; f6 c$ i e6 W
- K4 @) {2 N9 v! F! v# M! b/ i0 d+ V0 d' l9 x
|
|