返回列表 发帖

[原创经验] 华邦w90x700系列AIC (高级中断控制器)

[原创经验] 华邦w90x700系列AIC (高级中断控制器)

1.1.
. J+ N" q* u# S9 g% D, S
概述
W90P710合并的高级中断控制器 (AIC). c+ w/ |9 w, M  `5 y
有能力处理32个不同中断源的中断请求。目前,定义了31个中断源。每个中断源被唯一地分配到一个中断通道(1 31). 每个中断通道可以被独立开启或屏蔽。如果一个通道对应的中断源发生中断请求的话,这个通道的状态会被视为活动的。有好多状态寄存器被用来区别这些中断通道的状态。只有当至少有一个中断通道处于活动状态并且是被使能的时候,AIC才会向CPU(ARM7TDMI)声明一个中断请求。
/ X' f3 O' Q+ L, z' l8 ?
驱动可以根据状态寄存器实现一个优先级方案,AIC本身也实现了一个8级优先方案来改善中断分派时间。它把31个中断源分成8个有限级别,0是最高级,7是最低级。在每个级别里,较低的通道编号具有较高的优先级。如果一个活跃的并且被使能的中断通道被分派成级别0的话,AIC会产生一个FIQ请求,如果被分派成其他级别的话,AIC会产生一个IRQ请求,FIQ会优先于IRQ产生。中断嵌套是由AIC自动执行的。
7 _% I( {( K. b3 X2 O& F1 Z- 嵌入式底层驱动开发技术学习网站尽管W90P710的内部中断是高电平触发,我们在驱动中仍然可以把每个中断源配置成低电平触发,高电平触发,脉冲触发或者正电平触发。
' C) w  f" x/ m) }6 P2 s  x嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
% ~7 L; x. m# G( [9 O4 r+ pmcuos.com
嵌入式开发联盟" s# q& ^0 s" `* T+ ]
  Z6 {+ I9 e8 c+ }4 {' G3 q
- 嵌入式底层驱动开发技术学习网站$ j/ c% Q' K0 g: \
嵌入式开发联盟6 f+ p$ N: ]& U2 ^

  B4 {* M* C! o4 M嵌入式开发联盟
嵌入式开发联盟% n# ^$ e+ I6 P" U5 Y
1.1.
# V! O) A- L3 N嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
寄存器

( \( V5 H( d) k6 K4 e" \; m) }' A嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习R :
# g/ C" a/ |  C1 ?  r, ?) r嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
只读, W :
' v" M# P; g5 X6 t$ B- 嵌入式底层驱动开发技术学习网站
只写, R/W :嵌入式开发联盟( h" I; e, m$ h0 e
读写, C :嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习) J/ c* ?3 G2 v/ H" Z- j6 [. O
只可写0
% f5 @3 z! ~0 k$ _' E表 2‑1 AIC
% v: q9 F0 k8 ?$ I, ]  r本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。寄存器定义
: U5 V& `+ X1 J/ m9 C嵌入式开发联盟

Register- 嵌入式底层驱动开发技术学习网站1 ]0 g2 U0 X& d  _9 b
Address- 嵌入式底层驱动开发技术学习网站' ?8 v( a6 z7 P1 r- t# `
R/W- 嵌入式底层驱动开发技术学习网站7 i1 }* y0 q8 \9 ^; c, ]7 S

Description

Reset Value
5 Z! q4 p8 {0 i( [mcuos.com

5 K  @1 Y* x& w8 W, z. F
AIC_SCR1

0xFFF8.2004

R/W
% }! i" i& x* F2 P: d0 d  k
嵌入式开发联盟4 L- F- y; P7 [8 T
Source Control Register 1

" r3 R6 N1 M% F/ @- D! P5 X, U嵌入式开发联盟
0x0000.0047mcuos.com! ~- d: w6 S: s" ?( f. U

- 嵌入式底层驱动开发技术学习网站. z* ~) J/ w% ~" g# e
AIC_SCR2

0xFFF8.2008

R/W
3 q; k- t& c6 emcuos.com

7 A1 v4 Q: {% x4 ^6 n; _Source Control Register 2

7 x. O9 y$ R1 x: K& I本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0047
6 s4 a  p2 {6 \( D# S8 q本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。


" m. h1 y7 `6 d$ f* r; L& n
AIC_SCR3

0xFFF8.200C

R/W- 嵌入式底层驱动开发技术学习网站5 f$ `0 n* C! j' W3 t* J$ O
mcuos.com$ W# K) h$ X3 R
Source Control Register 3
- 嵌入式底层驱动开发技术学习网站" p6 A1 d+ x) v% B' C5 w
0x0000.0047  i% B0 i+ O: @# Y  P; A

mcuos.com! G% T, {, w9 G  [( w1 ~
AIC_SCR4

0xFFF8.2010

R/W
& W" F1 O# D5 w+ ^+ r! ^mcuos.com

) n1 j) n7 o3 @5 F  x本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。Source Control Register 4
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* n5 }- {. G' N. v
0x0000.0047
! n8 w1 v* c: n# b- 嵌入式底层驱动开发技术学习网站

嵌入式开发联盟) _) Y* ~" X& {9 g) Q! G0 U
AIC_SCR5

0xFFF8.2014

R/W
9 ]/ {1 I$ @6 [( x' z8 w8 [/ D' L8 N
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, J! p/ c7 q; u: A7 D
Source Control Register 5
mcuos.com3 J: b/ c. x! k+ U4 {
0x0000.0047mcuos.com0 s1 A4 M5 w7 T, \# N% [  M

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' J! L9 u( L0 ~! V1 n- R
AIC_SCR6

0xFFF8.2018

R/W
' h; `2 O$ s4 k本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

& E) _6 Z  a3 z7 Vmcuos.comSource Control Register 6
( c% h7 h! R: K1 K  Y  }
0x0000.0047嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; C; h" \; b1 n6 \$ f( g0 j; f


6 K" j7 y5 q& e- p8 l/ b- 嵌入式底层驱动开发技术学习网站
AIC_SCR7

0xFFF8.201C

R/W
. a4 S: O% f. t) ~& }6 Z( |- h9 t嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

" q5 h$ M- b- H+ i嵌入式开发联盟Source Control Register 7

: f1 c9 N/ S5 }2 I0 O# F嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0047
1 c* j& ^& d1 l嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

mcuos.com% s6 ^: q$ S: X9 ~
AIC_SCR8

0xFFF8.2020

R/W
& r* p% c; l% I4 M8 z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

( Z4 t2 Z2 {' t! J6 QSource Control Register 8
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& m2 w( M( d4 z7 e  Q, t
0x0000.00473 W# ]- ~2 E0 @- H

嵌入式开发联盟7 a" w9 }) P" d% O) t  n3 ]
AIC_SCR9

0xFFF8.2024

R/W
3 E3 k, |+ k/ J7 A- 嵌入式底层驱动开发技术学习网站

" k  H3 W; P5 b* R, w; Y嵌入式开发联盟Source Control Register 9
- 嵌入式底层驱动开发技术学习网站: b8 k! z, U5 {7 O! u8 _1 a
0x0000.0047
& W. _0 ?4 w8 m0 ]  z6 w# omcuos.com


7 }9 q$ ?- B; ]7 r/ J; L嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR10

0xFFF8.2028

R/W
$ t; }" c: N) l5 ?5 X6 J( T本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

% J, k9 ]  W2 p& P$ Ymcuos.comSource Control Register 10

. W& X6 u, C2 P, ~" n. S$ m  Z本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0047
: ]" p9 r$ c5 f/ Z/ e4 w- 嵌入式底层驱动开发技术学习网站


! F- ]5 T* k3 l" W* z4 n& A1 [本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
AIC_SCR11

0xFFF8.202C

R/W
* ]7 f$ [& c( F+ C, ?嵌入式开发联盟
- u' k9 O! _' z) t' N
Source Control Register 11
嵌入式开发联盟: |3 j9 s' A8 A" k& r, N4 d7 e/ M. b
0x0000.0047mcuos.com# }4 ~" m- _% b3 j9 b


- g" {2 j1 K' w) H" X嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR12

0xFFF8.2030

R/Wmcuos.com9 M8 I( j6 W8 V
- 嵌入式底层驱动开发技术学习网站' H. `% v9 F% r5 }
Source Control Register 12
mcuos.com" c& e9 S7 S- |/ r  {: c
0x0000.0047
1 F$ R5 D* y5 l: K. y8 r  Tmcuos.com


  o5 f- a. O3 T+ _( k' T嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR13

0xFFF8.2034

R/W
" F# V2 M+ e+ W. @% m* B嵌入式开发联盟
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% d4 n( j: R) ^: z7 ]
Source Control Register 13

0 P% A. b6 u; N& i7 h9 _4 s) n- 嵌入式底层驱动开发技术学习网站
0x0000.0047  T' A3 D6 A* e- V! L

本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。: |5 k% Y) k+ M% B
AIC_SCR14

0xFFF8.2038

R/W
6 Y7 ]/ K( J7 Z. z4 m嵌入式开发联盟

6 E8 Z2 s* v5 c+ v7 l嵌入式开发联盟Source Control Register 14

' V3 ^. S( ]: \% t" X, W嵌入式开发联盟
0x0000.0047
& G% B  n% \9 ?! ], y1 q% ^嵌入式开发联盟

mcuos.com# C7 F0 M; d" L' T" M
AIC_SCR15

0xFFF8.203C

R/W, W2 S9 q5 i8 C: c/ f( V
嵌入式开发联盟/ ?2 h; |8 Y4 w  w9 ]/ d7 h8 ^
Source Control Register 15
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, _# A- r9 x3 {2 R: w: ^4 P
0x0000.0047( n; j* h1 j1 T+ Y. U" F

本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 V( O  a& M& q; r
AIC_SCR16

0xFFF8.2040

R/W
. s+ ]. U7 N! R" M. {' D2 W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习5 m0 K; o7 n: L/ z6 v+ B# H- |
Source Control Register 16

: ?& D9 r" H3 dmcuos.com
0x0000.0047
. x! D7 I& U" B: w2 F! S嵌入式开发联盟


1 Z! _! T& f: K$ W& D# u" p嵌入式开发联盟
AIC_SCR17

0xFFF8.2044

R/W
2 R' E$ i4 y1 {. R2 D# z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

* Q( X: m" }; T. E1 _嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习Source Control Register 17
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; W* ?& g: J+ \3 t. C4 W
0x0000.0047
, M; g0 _$ k8 Z) c6 h本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。


( I: X( c5 L3 A$ X- g( ?$ w8 S) p本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
AIC_SCR18

0xFFF8.2048

R/W嵌入式开发联盟1 M5 D+ e+ Z" T" l
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。  \. V, i( w4 n0 a! [( z* s: a
Source Control Register 18

5 t0 O2 A: ]; G* w5 M, N0 r6 bmcuos.com
0x0000.0047
$ _# }+ d1 z% V& e3 X0 ^嵌入式开发联盟

mcuos.com# A; I( E! P8 a7 ?& U
AIC_SCR19

0xFFF8.204C

R/W
" u2 Z. k4 d3 l* ?1 j嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
mcuos.com( ~- T( T2 ~9 Q5 k8 Z
Source Control Register 19
0 P1 [- P3 x* F/ V
0x0000.0047- I. i. q6 r  ^1 c


) {5 i7 V* T3 ^. J% M, u) W2 X% b- 嵌入式底层驱动开发技术学习网站
AIC_SCR20

0xFFF8.2050

R/W
( t1 f; x2 ?/ F7 c嵌入式开发联盟
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 I0 R8 r+ Z7 _
Source Control Register 20

/ H3 N. L' S/ [7 k' D7 e0 x+ e- 嵌入式底层驱动开发技术学习网站
0x0000.0047
; q! z6 o9 z* l嵌入式开发联盟

嵌入式开发联盟& Z) i- J! }, N  ~1 Y9 ^. j
AIC_SCR21

0xFFF8.2054

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% Q+ ^/ u% p8 J1 y
嵌入式开发联盟) ?/ ~( Z' [" n% y4 ^
Source Control Register 21
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。' `: U3 N% J, I& I. O
0x0000.0047嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' _1 s8 W$ J7 c* [


3 F3 E+ l$ @. C! R) z' A
AIC_SCR22

0xFFF8.2058

R/W
' ?( c9 i! y. O2 b3 ^
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ \6 l: A: _' M  u* |7 D. r
Source Control Register 22
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。( N0 P! \* w2 f9 j$ r
0x0000.0047嵌入式开发联盟, J. v  ^$ O( t* u* d& H

mcuos.com( Q0 b1 l( q/ j" I7 `& {
AIC_SCR23

0xFFF8.205C

R/W  S' {; `/ S; @, v

& P3 M9 T! o' Q+ mmcuos.comSource Control Register 23
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。& F4 W# A9 [( f' X& U9 j, _
0x0000.0047
1 v" z+ i% g+ W# q" @& f3 [mcuos.com

9 I% ?0 y) X; d$ I
AIC_SCR24

0xFFF8.2060

R/W
+ D! H7 \7 G* s! s- 嵌入式底层驱动开发技术学习网站
嵌入式开发联盟# u7 u8 `8 p! w) b! Q& [( n
Source Control Register 24
mcuos.com' A# v0 u" t  Z2 e: N1 S  C. o
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。6 W0 _$ p% Y! W( M8 Q/ q3 k2 {/ {

) @) s+ h! k- k0 U& B
AIC_SCR25

0xFFF8.2064

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2 s1 d( R; f% P5 Q
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. h: c( {5 J  G9 U6 |* c
Source Control Register 25

2 d  Q& b) s, z嵌入式开发联盟
0x0000.0047mcuos.com  p/ ?% o- y+ r: K. m

mcuos.com9 J* ?! r) S2 X+ ~, ^
AIC_SCR26

0xFFF8.2068

R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习8 w/ D$ F. M  n

* H3 p8 g/ _% v6 q本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。Source Control Register 26

+ `' z& |% y6 ], K3 I- x9 B5 L0 }
0x0000.0047
0 y* R7 q5 c/ t% z) [( ]


" j/ G2 t. R  `0 l1 z; r- 嵌入式底层驱动开发技术学习网站
AIC_SCR27

0xFFF8.206C

R/W& b( }$ v# q8 \. S
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2 c, L3 n/ E2 A' X3 ]) |
Source Control Register 27
mcuos.com! q5 {. t; k8 V5 v
0x0000.0047
$ V5 u/ J7 a) X9 }/ y) R

嵌入式开发联盟: }* N: a  R4 r5 b+ ]) v
AIC_SCR28

0xFFF8.2070

R/W% |+ K+ V# x5 k
- 嵌入式底层驱动开发技术学习网站. C; H0 V+ L- ~' a" O5 u6 V
Source Control Register 28

8 b  ~$ h* @7 O2 C. T  {mcuos.com
0x0000.0047
8 f. |3 p8 P% E/ U' P! t. vmcuos.com

本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。# B/ s# _$ a6 j  w4 u+ N' E
AIC_SCR29

0xFFF8.2074

R/W
& m- _. o" m! s4 @6 Hmcuos.com

  Z( v/ n5 f& `嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习Source Control Register 29
- 嵌入式底层驱动开发技术学习网站& @0 }/ f' O0 \8 Y
0x0000.0047
- R: F% {& b8 [9 O- 嵌入式底层驱动开发技术学习网站

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& q6 [  ?) e5 J7 V9 g. ^. i/ L
AIC_SCR30

0xFFF8.2078

R/W嵌入式开发联盟, _: h! o6 ~9 H  l* k! d

3 L# ?. @/ P: G0 O嵌入式开发联盟Source Control Register 30

8 Y9 o6 D8 S. s2 ?( x嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0047
& }( B3 J5 Q& g9 v; Z$ S/ \% L- 嵌入式底层驱动开发技术学习网站


3 T6 e- D5 o8 R
AIC_SCR31

0xFFF8.207C

R/W- 嵌入式底层驱动开发技术学习网站1 v' g( B& c1 }8 |( j
嵌入式开发联盟( \7 C4 a( }" {) x8 P8 B
Source Control Register 31

9 }' ]7 n/ s+ Z* a, p& j
0x0000.0047mcuos.com( ~* J8 V2 ?! |% |! K3 d- U3 U
- 嵌入式底层驱动开发技术学习网站; v' i, {' o9 i. L" `- f' v# R
AIC_IRSR
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。" I2 ?- B5 h' X5 c. `

0xFFF8.2100

R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。# K  c) z2 V3 q$ [
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。' I& R6 R9 j( X3 u* m
Interrupt Raw Status Register
嵌入式开发联盟$ Q1 y0 ^- q9 K$ b+ E5 O* c
0x0000.0000嵌入式开发联盟$ ]2 i# c0 `8 l: j: h
mcuos.com( H. n$ M0 E9 @+ p" C, M( O
AIC_IASR

$ p2 L; ], M7 f) d' e, T( v

0xFFF8.2104

R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ g' T4 v$ H7 {  w/ O
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习) w. V$ Q4 A  o- U: e6 l- a5 n. J: f
Interrupt Active Status Register
- 嵌入式底层驱动开发技术学习网站* P! G& i, ^. F9 L7 x: k
0x0000.0000mcuos.com0 P1 u- X! `6 \: S' W7 K) Q
嵌入式开发联盟6 G. ]7 @& J+ q4 y/ u5 i1 f
AIC_ISR

5 y4 |9 L5 e. R( J% Q9 o: U

0xFFF8.2108

R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% `& p; W/ R+ y( K& X

, V0 Z' n: S- P! @1 b/ fmcuos.comInterrupt Status Register

) M& q- W: e+ N! ~: {" o  s
0x0000.0000
- y  A$ _- U7 C$ L% ymcuos.com
mcuos.com; i- b: D, T+ f  g
AIC_IPER

+ P; W' x- u, J$ \mcuos.com

0xFFF8.210C

R
$ O2 o0 ^: J* z6 R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

1 ?9 P( |7 Q. V% O  x  s嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习Interrupt Priority Encoding Register

! a  Q9 b& \* ^+ ]! X2 p- P嵌入式开发联盟
0x0000.0000mcuos.com4 Y+ l* b3 i8 `& W( n- G8 W' e9 i

0 w% T$ R3 O0 a* D( y, F. b$ y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。AIC_ISNR
mcuos.com' P5 {) J. `  w8 \* w0 E

0xFFF8.2110

Rmcuos.com& R7 B3 f. P# g0 l. {, h
mcuos.com- M0 |* m9 H! r
Interrupt Source Number Register

( z2 i) ~& _6 J4 n; h- 嵌入式底层驱动开发技术学习网站
0x0000.0000
& M; n' C" ], W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

9 t( U$ n  ]7 t+ H4 i( `嵌入式开发联盟AIC_IMR

! ^+ [1 j; k  ~. f嵌入式开发联盟

0xFFF8.2114

Rmcuos.com; c  i/ {6 n* b0 s& J# N; K

9 v& i! \* k$ [6 g7 l' V6 X9 j9 ]嵌入式开发联盟Interrupt Mask Register

& V) T! }- E4 a  j& B* e嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0000
' t4 y5 [) Y4 ^7 |1 W; l本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
mcuos.com9 d/ r. z/ v& I4 z5 U3 b
AIC_OISR
' u0 I* r" x4 x  P1 t' x

0xFFF8.2118

R
3 a  M+ r' c0 K" U. S* ]本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
6 @( t4 O1 c2 [/ h
Output Interrupt Status Register

, z% |! @- Q9 q7 z2 g- 嵌入式底层驱动开发技术学习网站
0x0000.0000- 嵌入式底层驱动开发技术学习网站( T0 E% U$ F* h7 B8 P
# A0 Q, y0 S0 `0 `6 X
AIC_MECR
/ q8 @7 X/ n5 D( J7 Q

0xFFF8.2120

W
# x  c6 \, P- P% S. vmcuos.com

6 `' k2 B' {& e( H5 E- p2 G3 s, h嵌入式开发联盟Mask Enable Command Register
- 嵌入式底层驱动开发技术学习网站9 T0 X6 l7 \( N+ N0 `

Undefined

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' A& N& V# e7 R: P: |9 l
AIC_MDCR
$ g, T% C% b3 N8 G- N

0xFFF8.2124

W
  `& c2 f$ Y2 R- `$ X/ q嵌入式开发联盟
- 嵌入式底层驱动开发技术学习网站8 J8 s, u. O% K& j( [; H$ d9 U  ^! t1 Z
Mask Disable Command Register

4 t, f* @% n: `# ^) f9 L) N3 L' o8 C1 T嵌入式开发联盟

Undefined


9 @) S' T' k0 z1 `3 lmcuos.comAIC_SSCR

/ u  U3 T8 O+ Z1 t8 Z- 嵌入式底层驱动开发技术学习网站

0xFFF8.2128

W- 嵌入式底层驱动开发技术学习网站. V+ u3 E1 A) i7 M

0 ~# N- o4 s& J8 ?8 {' ?/ G) X- `本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。Source Set Command Register

5 T8 F% B& R+ x% Vmcuos.com

Undefined


: i  r6 r/ s% Z+ x$ B* cmcuos.comAIC_SCCR
嵌入式开发联盟" H3 e$ e* B2 V" C

0xFFF8.212C

W
5 C6 f/ r# c, s) g& b+ ^嵌入式开发联盟
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习$ {$ D. M) U' I. s  ~/ q
Source Clear Command Register
0 g" E! h2 R2 s) l

Undefined

本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. p) Z5 U! U8 W" z
AIC_EOSCR

! b$ b+ o$ J- n/ |1 v% J6 D/ N- 嵌入式底层驱动开发技术学习网站

0xFFF8.2130

W- 嵌入式底层驱动开发技术学习网站1 A9 B2 U. R* E
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! L1 x  y0 P* g/ F, q
End of Service Command Register

  ^- M4 W0 h. y$ C' _6 t( m- 嵌入式底层驱动开发技术学习网站

Undefined

AIC_TEST

0xFFF8.2200

W嵌入式开发联盟6 ~, d, L+ I! G; b- ~

/ E0 Y9 F) I7 v7 L8 \$ c: U本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。ICE/Debug mode Register
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习) i* r1 e+ S/ ^" V+ M

Undefined

mcuos.com# b# h0 d- V, W. }# b

7 P! E' ~0 D& o5 J6 ~* M6 f, k
5 t1 v" o* `8 N' K0 t3 n! ]mcuos.com 嵌入式开发联盟9 d  ?( ^& ?% A7 @# @1 z% e
- 嵌入式底层驱动开发技术学习网站6 i. V& i' @$ ?4 U/ r
1.2.
5 W) }: i; x1 S本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
功能描述

- G/ [, J! V) }) V2 m- 嵌入式底层驱动开发技术学习网站
7 Y  p5 C$ V  _) z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ _  W7 p/ G( k$ ^

) v8 P5 b. k& z$ G9 {嵌入式开发联盟1.2.1.
+ e% V4 w( V7 ], ]7 Y嵌入式开发联盟
配置中断通道
每个中断通道都有一个独立的控制寄存器来设置其类型和优先级。W90P910所有内部外部中断类型都是正电平触发的,这在通常的操作中不会被改变。 对于通道2345,设备驱动必须根据外部设备来设置相应的中断类型,每个中断通道的优先级别完全取决于中断设备。开机或重启之后,所有通道都会由AIC分派0-7的优先级。图2-2显示了源控制寄存器的内容。
. {7 J  U, `0 \+ B7 I! s# g2 L# L, Tmcuos.com
& f) M( m/ a+ K. Dmcuos.com嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 T! b+ c  g8 i) p8 c
2
6 r2 |0 I7 L4 V+ _3 P' m( y嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
# O: i+ P9 u3 j: X! k( hmcuos.com2- 嵌入式底层驱动开发技术学习网站. L" m, P9 B8 J7 H: u
- 嵌入式底层驱动开发技术学习网站& `( k" o' P" h' ?( o( {. Z
mcuos.com& V+ [* L; @+ H
- 嵌入式底层驱动开发技术学习网站+ e. T9 N$ X) B: s6 C8 w
- 嵌入式底层驱动开发技术学习网站9 f+ Q4 F( }0 Y( v: `# k" T

  Z# U5 w1 [4 O* ^( g7 ?& Kmcuos.com嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* a; u0 Q; ]2 G9 |
源控制寄存器  C0 y% c3 _; q1 l- R! y+ Z! W
mcuos.com  c) u, V3 Z- |  u  }

9 x/ P  \- m: e/ N8 X- 嵌入式底层驱动开发技术学习网站 - 嵌入式底层驱动开发技术学习网站+ J  w4 i5 d& q. }' V  A

6 X; k) G5 @# U( J# b+ F* L嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
1 a8 l3 b8 @2 B; R! ?& |# g
' x; ?, k) e; S, `( R2 e' U本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。 本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。& f0 |' N1 C0 Y

6 _9 P! z3 e8 B3 A; r嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.1.1.! J2 s" Q6 W5 K
中断屏蔽
W90P710 AIC 提供了一组可以屏蔽个别中断通道的寄存器。中断使能命令寄存器(AIC_MECR)
$ I0 }' t* f' U; D% I) [# R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
是用来使能中断的,在MECR相应位写1就会使能相应的中断通道。相反,中断屏蔽命令寄存器 (AIC_MDCR)嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 X. D1 X% y" Q- \# Q% S
是用来屏蔽相应的中断,在MDCR相应位写1就会屏蔽掉相应的中断通道。在AIC_MECR AIC_MDCR任意位写0都是没有作用的。这样,驱动可以任意修改这两个寄存器而不用保存它们原始的值。如果需要的话,驱动可以读中断屏蔽寄存器 (AIC_IMR)来获知某个中断通道是否被使能或屏蔽,如果是使能的,则相应位为1,否则为0.mcuos.com0 V: w$ F7 [- g8 B0 F
- 嵌入式底层驱动开发技术学习网站! @7 y0 {1 \; }3 h* N: U
1.1.2.mcuos.com- S7 B5 j# j* n' B  g4 c# D* P% t
中断清除和设置
对于中断通道是电平敏感的,设备驱动不需要写Source Clear Command Register (AIC_SCCR)( r  ~1 M1 P% a$ V; P
或者  S; a0 Z; F: E2 K8 y% X
End of Service Command Register (AIC_EOSCR)
来清空任何AIC 状态。设备的中断状态一被清除,AIC就禁止中断请求。对于中断通道是边缘触发的,设备驱动必须清除AIC的状态来禁止中断请求。要清除AIC状态,驱动程序可以写Source Clear Command Register (AIC_SCCR)
4 p6 q9 P; {) B9 Q嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
或者 End of Service Command Register (AIC_EOSCR)。在AIC_SCCR的某位写1就会清除相应的中断。AIC_EOSCR 的使用会在硬件优先级这节讨论嵌入式开发联盟+ @" i  \' D$ o0 J- X1 A2 w
寄存器 Source Set Command Register (AIC_SSCR)
6 C" f# f5 Y  l) z4 s: r2 A- l嵌入式开发联盟
是用来激活中断通道的,当他被设置成边缘触发的时候,在AIC_SSCR 某位写1会设置相应的中断,这个功能对于自动测试或软件调试是有帮助的。
% y  y6 h& N3 X8 M) [mcuos.com
% A2 O* q9 @8 J9 E% L8 o嵌入式开发联盟1.1.3.
  D8 n7 S5 I% }4 v8 ^- 嵌入式底层驱动开发技术学习网站
软件优先级
AIC提供了一个Interrupt Status Register (AIC_ISR)寄存器来标识中断源,如果一个中断通道被使能并且是活跃的话,AIC_ISR 中相应位会被设置成1FIQIRQ的中断处理函数能够通过读AIC_ISR来获取中断源,并且服务顺序是完全取决于软件算法的。
& m: m: D+ s/ X) D本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。通常有一个函数表来保存内部和外部设备的中断服务程序。当有中断被CPU识别时,FIQIRQ的异常处理会被首先执行,然后它会按照AIC_ISR的内容来调用正确的中断处理函数。图 2-3 给出了一个执行顺序示例,其中,通道1有最高优先级,1718是最低优先级。
; i$ {, A% {6 w( j嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
* h# c0 q  V3 s: C$ n
" {5 C$ S' l* M. u- ?4 m3 }   H$ v7 m  g& n% ~
嵌入式开发联盟- b! Z# ]/ C; ]: A. v& u$ u
图 2‑3 Sequential Priority Scheme
+ {& I) ^5 O8 |' c2 H本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习7 u& c* h, v6 W; g7 g8 n5 i. l

$ l+ r* k" ^' e5 n& T  t8 o嵌入式开发联盟嵌入式开发联盟+ Y! H7 M" e% i# u0 x$ Z) Q/ m
1.1.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" R  b+ L! `; N# v2 q6 O
硬件优先级
AIC实现了一个私有的8级优先体系,要使用这个机制,应该在使能中断通道之前设置特定的AIC_SCRx寄存器。同样,当有中断被识别时,FIQIRQ的异常处理函数会被首先执行。这个异常处理和中断服务程序会按照预订的规则让这个机制正确工作。规则如下:mcuos.com  e/ ^+ x. A) }8 b) {+ K
1.mcuos.com' U1 o& m' M# y* ~3 C
读寄存器AIC_IPER获取向量(IRQ x 4), 这时,AIC_ISNR会装载当前中断号,这个向量(IRQ x 4)表明了哪个中断是打开的,活跃的并且优先级是最高的,乘上4然后存在寄存器AIC_IPER 。从AIC_IPER 获取的数据(向量)方便下面中断服务程序地址的计算。
0 t/ @* v- ]2 I# j) v$ |2 ?嵌入式开发联盟2.mcuos.com( s  f( X/ }* }# }
通过添加向量到中断向量表来跳到相应的中断服务程序执行。
# N% @! A+ x* F* g- 嵌入式底层驱动开发技术学习网站3.
& t1 Z8 v. i" W. @3 {4 E. l; x" f1 w
写任意值到AIC_EOSCR来结束中断。
! m: _+ T2 b( z- 嵌入式底层驱动开发技术学习网站被使能并且是活跃的中断优先级被视为当前优先级。当读AIC_IPER时它会被放到优先级编码器 中。同时,AIC_ISNR 会装载当前编码过的中断通道号,这样可以防止AIC响应一个低优先级的中断请求。因此,中断服务程序必须写AIC_EOSCR 寄存器使当前优先级从优先级编码器中让出,让AIC服务低优先级的中断。这种硬件优先级控制对于中断嵌套系统是有帮助的。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- E5 E; j4 L) k
与软件优先级对比,向量提供了更快的方法调用中断服务程序,把向量加到中断向量表可以轻松获取服务程序地址。图 2-4 是一段汇编示例代码/ `' y: i( e/ y

; }3 U* k  u0 L' }1 }! W- 嵌入式底层驱动开发技术学习网站嵌入式开发联盟: e9 C; ~8 f; W2 D+ }( b
注意,一旦ISRAIC_IPER,它必须写AIC_EOSCR 来回复正常中断状态。否则,下一个中断可能不会被正确响应。图2-5 显示使用硬件优先级的流程- 嵌入式底层驱动开发技术学习网站  P6 h+ o. s- f
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, O% b0 N2 _# E& Y
2‑5 Using hardware priority schemeD
+ I1 j+ O0 w* ]. ^9 L8 P2 E% {嵌入式开发联盟7 L8 \" Q- K& G8 J) c# [, ^; a8 y
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。) n8 ?. U& B% ?# y1 m. D
- 嵌入式底层驱动开发技术学习网站) a3 W- {$ j% [4 a4 ^4 H

+ }1 @1 o. E3 ]( O! G7 |7 q9 X/ zmcuos.com 嵌入式开发联盟3 l; H( @3 z1 Y0 u! Z- o
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! X: r# {, d: ~, m- o- J0 B
1 D; }0 a1 ?( v% l3 l
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

返回列表
网页右侧QQ悬浮滚动在线客服
网页右侧QQ悬浮滚动在线客服