返回列表 发帖

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

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

1.1.
$ A& _9 T6 x/ z$ X7 C+ u$ F" [嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
概述
W90P710合并的高级中断控制器 (AIC)本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。: M. B  R3 |4 a" V7 U0 S
有能力处理32个不同中断源的中断请求。目前,定义了31个中断源。每个中断源被唯一地分配到一个中断通道(1 31). 每个中断通道可以被独立开启或屏蔽。如果一个通道对应的中断源发生中断请求的话,这个通道的状态会被视为活动的。有好多状态寄存器被用来区别这些中断通道的状态。只有当至少有一个中断通道处于活动状态并且是被使能的时候,AIC才会向CPU(ARM7TDMI)声明一个中断请求。
- 嵌入式底层驱动开发技术学习网站( D% s( c; m+ ~
驱动可以根据状态寄存器实现一个优先级方案,AIC本身也实现了一个8级优先方案来改善中断分派时间。它把31个中断源分成8个有限级别,0是最高级,7是最低级。在每个级别里,较低的通道编号具有较高的优先级。如果一个活跃的并且被使能的中断通道被分派成级别0的话,AIC会产生一个FIQ请求,如果被分派成其他级别的话,AIC会产生一个IRQ请求,FIQ会优先于IRQ产生。中断嵌套是由AIC自动执行的。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ ?  I5 U3 W) {, W2 z6 ~( ^" @
尽管W90P710的内部中断是高电平触发,我们在驱动中仍然可以把每个中断源配置成低电平触发,高电平触发,脉冲触发或者正电平触发。
9 n* b8 q# B1 M$ S/ y5 g; x
9 }$ g- Z) u2 ?9 N- Z

, G( g1 m2 {# A% M& f1 T  X- 嵌入式底层驱动开发技术学习网站mcuos.com) n4 b* {) C& p. l% g9 a
- 嵌入式底层驱动开发技术学习网站" s# C9 J0 O, f- R) {; J

& y5 b1 V" D# }) r本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。嵌入式开发联盟% }/ e& [- l% h2 H' }$ {

! M: {% _7 Z% d" `: e" d- 嵌入式底层驱动开发技术学习网站1.1.嵌入式开发联盟4 L/ i# Q8 S0 g* d1 ]& n7 N0 |) W
寄存器

7 ?- x4 @0 {% FR :嵌入式开发联盟' c5 n) ]7 d" B+ i# M# R4 Z  K# l
只读, W :嵌入式开发联盟) X! {- [' P9 |  E
只写, R/W :" b4 J0 T9 k+ W5 \1 |9 q3 m0 R
读写, C :
! @5 c" z( ^! R* ?/ e- 嵌入式底层驱动开发技术学习网站
只可写0mcuos.com# i. ~4 Z4 O6 c: p  M/ K$ A+ A4 Y
表 2‑1 AIC 嵌入式开发联盟% A3 h/ G& a: l9 j  I+ p
寄存器定义
) ~1 f* j* f! Q4 R4 ]( S( e& e- 嵌入式底层驱动开发技术学习网站

Register- b. O8 g/ A0 _
Addressmcuos.com  M7 i, x; e$ g! G
R/W- 嵌入式底层驱动开发技术学习网站, ^4 Q" b4 T6 L7 b+ N& }

Description

Reset Value嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习6 W# V3 g& F2 v5 N2 Q  |" V  ?


' H$ f. ], x+ ?" s& z; [8 g; w2 jmcuos.com
AIC_SCR1

0xFFF8.2004

R/W- 嵌入式底层驱动开发技术学习网站( O9 `" O/ y: ?5 y

) z4 P1 X' P, U! ^; K3 H- 嵌入式底层驱动开发技术学习网站Source Control Register 1

! ]8 u  K% ^0 }7 g9 U
0x0000.0047- 嵌入式底层驱动开发技术学习网站! E3 B) |5 t) f; ^- f' P


7 F, s  G2 D0 Y0 N" T0 `本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
AIC_SCR2

0xFFF8.2008

R/W嵌入式开发联盟  W) T4 d! D+ @  }! j0 H' ?7 A

% Y$ `! h, i9 Z4 K) Lmcuos.comSource Control Register 2
# a3 y/ D' c+ X; ~+ y! T7 x
0x0000.0047
/ o# V) z$ f- U; zmcuos.com


8 x3 |( q5 D8 r% t$ m  A嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR3

0xFFF8.200C

R/W
, D- W0 o) ^8 j% l- 嵌入式底层驱动开发技术学习网站
- 嵌入式底层驱动开发技术学习网站4 H  z5 j' A  h. U8 X" I0 L& A& _0 K
Source Control Register 3

9 N6 |2 l' ?4 f: w. H" n嵌入式开发联盟
0x0000.0047
1 ~) ?/ j  C3 J( _9 A


* p" j% P( v/ z; B+ ^+ k5 X嵌入式开发联盟
AIC_SCR4

0xFFF8.2010

R/W
. j8 q. Z1 I* O1 G: j
- 嵌入式底层驱动开发技术学习网站6 u/ a/ D5 a" M
Source Control Register 4

' Q' d0 |( q& p* b* X1 V$ W4 I本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0047
$ E1 v6 i( X8 x" z1 l本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

- 嵌入式底层驱动开发技术学习网站* T: W5 c6 T3 Y3 p, v( P
AIC_SCR5

0xFFF8.2014

R/W- 嵌入式底层驱动开发技术学习网站" j1 @9 c+ d5 e0 ?

' ~4 h# ]3 S5 k1 U) Y; @4 W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习Source Control Register 5
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. J7 ^+ ?. ?3 ]4 h+ I* n0 C
0x0000.0047- 嵌入式底层驱动开发技术学习网站" [8 o8 \. g0 t8 g% [2 o  R


& G5 P7 g! ^# I6 y% O
AIC_SCR6

0xFFF8.2018

R/W2 v, b. X/ s1 }. Y

; x8 g/ s: C& N6 h3 T% x/ jSource Control Register 6

3 A6 s  ?$ n+ v. Hmcuos.com
0x0000.0047mcuos.com; O, S7 Q* v: H- |

2 @! Z! L6 M  ~- e8 X2 {8 A
AIC_SCR7

0xFFF8.201C

R/W
! B/ ]& T3 J& j6 O6 K$ ]mcuos.com
嵌入式开发联盟1 s9 G( L+ E$ h) U3 V6 X
Source Control Register 7

0 |$ w0 D% C6 ]* ?  _嵌入式开发联盟
0x0000.0047嵌入式开发联盟: g  D* _) k8 P. T) P1 ]+ r6 |5 Q


; \' g8 z& _+ b, t9 p; F5 ^3 emcuos.com
AIC_SCR8

0xFFF8.2020

R/W
  F* N& z! r: F4 G4 R4 k- 嵌入式底层驱动开发技术学习网站
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。: `4 b7 J/ N% x& X% V# F- }- o
Source Control Register 8
- 嵌入式底层驱动开发技术学习网站1 ^" K  z$ b' x2 D! K7 F+ z( k, x
0x0000.0047( e2 H5 }* K* c7 @: }* ?

mcuos.com8 G- K- f: ]7 a+ O
AIC_SCR9

0xFFF8.2024

R/W
* F/ Q) u  n; c) F本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
' f; Z8 n$ Q0 o' ?7 {: n$ _' `
Source Control Register 9
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习6 L8 W6 G2 {/ k/ M
0x0000.0047
. G) D) h/ B! g嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习


( ^* }2 o! A8 |嵌入式开发联盟
AIC_SCR10

0xFFF8.2028

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% Z' {$ d( x$ r
- 嵌入式底层驱动开发技术学习网站, J& w$ m( e4 d- D
Source Control Register 10
嵌入式开发联盟, r/ J6 E& g* L8 W0 E9 T
0x0000.0047嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 R. E( h: v/ n9 Z, p3 p, l


- X7 P5 Q, n$ H; ?( u4 I6 q; Z- 嵌入式底层驱动开发技术学习网站
AIC_SCR11

0xFFF8.202C

R/W
6 r' O5 E5 B2 U" J6 J) n嵌入式开发联盟
0 {' ~) o! K0 J* v- N' c
Source Control Register 11

* C" V  S6 a! ~0 I  R7 _$ Zmcuos.com
0x0000.0047
& q; @5 m/ H, c- b- 嵌入式底层驱动开发技术学习网站


( o+ J, t% D2 G: e" q7 w8 Z6 r- 嵌入式底层驱动开发技术学习网站
AIC_SCR12

0xFFF8.2030

R/W
# P! |7 s, B8 R6 b7 Wmcuos.com
mcuos.com9 z. y* w: F1 X) s; q- ]2 `5 ~
Source Control Register 12
9 z# M8 @. W" D- w# F' o- i* M* \
0x0000.0047mcuos.com) M0 z2 W4 K+ t* M3 c1 D4 ~; ]

- 嵌入式底层驱动开发技术学习网站$ o9 T! \) `. p+ X/ g, ^" X
AIC_SCR13

0xFFF8.2034

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。& ]4 y3 u# H3 y% r" C( E1 m
mcuos.com- d+ A6 {  F" b6 n. X$ S
Source Control Register 13
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。( s4 N1 |  w2 x3 j! r
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 r% |. ^% v7 H. T# s

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习6 p6 Z7 k, A( H3 ^) Q+ F
AIC_SCR14

0xFFF8.2038

R/W6 R6 M7 A- n; s$ I6 B
mcuos.com2 f) g; N$ i9 Q/ u: T0 r3 e
Source Control Register 14

# ~- N. M' G6 @4 a本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% o+ ?. j1 Q6 ]


5 q  v& M( j# V6 n6 c嵌入式开发联盟
AIC_SCR15

0xFFF8.203C

R/W
/ j* c& `  \6 P& c% @" [
嵌入式开发联盟" `" z3 x5 t! c* A% `
Source Control Register 15

  W$ Z% t2 R# E2 Y
0x0000.0047
7 \7 O) q7 A! H! Z! a! a本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

mcuos.com- v8 b' U+ d7 z9 \/ Y0 Q  [
AIC_SCR16

0xFFF8.2040

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 {+ ?1 T' M- O1 B

* w7 y1 n3 \) Y3 \1 V* k8 ]嵌入式开发联盟Source Control Register 16

  U) `' k7 d- x: Z$ }, H7 o# ?mcuos.com
0x0000.0047
$ H- t: E5 X2 N- U% O' I' |( E嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

嵌入式开发联盟' E+ c2 n) j# c. K" ~! F; p
AIC_SCR17

0xFFF8.2044

R/W
3 O, J4 H4 p" O) H( E
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' F" m& u% H- z
Source Control Register 17
4 N% R1 Y- C, P. I; p0 t
0x0000.0047- 嵌入式底层驱动开发技术学习网站) s( a/ D0 b' p* b; A2 S4 H


! [8 C7 R4 E. b6 e* X- 嵌入式底层驱动开发技术学习网站
AIC_SCR18

0xFFF8.2048

R/W
2 W) H% f) j: w$ L# ^嵌入式开发联盟

) ]/ G; a% T/ e2 B* j- 嵌入式底层驱动开发技术学习网站Source Control Register 18
- 嵌入式底层驱动开发技术学习网站9 B* c/ N3 ^; b9 F& L* ~" l
0x0000.0047
' U7 `- M) `* U, `mcuos.com

mcuos.com, Y# X$ Q5 d- R  W! s6 s4 l2 {
AIC_SCR19

0xFFF8.204C

R/W
+ a) M9 `6 y0 B& x, Q1 _4 E- 嵌入式底层驱动开发技术学习网站

+ C1 i3 E/ e% c" h7 \& J6 z% N& i' o/ FSource Control Register 19
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习/ ], v9 T. V# b8 [% L" a3 L
0x0000.0047- 嵌入式底层驱动开发技术学习网站8 _- n8 N7 d) N1 p7 e


; Z$ q. s$ @; k; C. A- 嵌入式底层驱动开发技术学习网站
AIC_SCR20

0xFFF8.2050

R/W
) I/ d4 N" s" d' f+ a; X嵌入式开发联盟

2 Y6 |6 U# B0 j$ N/ qSource Control Register 20
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, X7 _$ `% `: U* r5 z
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; S+ e/ Y9 ^3 n3 P( z3 H


& t7 H5 N; S- |, P" H% i嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR21

0xFFF8.2054

R/Wmcuos.com# [8 A7 }0 |7 S& P' o1 y

: x4 q" V9 W- Z2 {% r6 \mcuos.comSource Control Register 21
- 嵌入式底层驱动开发技术学习网站  D2 t6 u0 b- u. w8 s* Z
0x0000.0047嵌入式开发联盟, S% ^7 N% C1 g


% b. G' T! ?& a" O( H嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR22

0xFFF8.2058

R/W
4 m: b5 P6 Y1 f* @2 tmcuos.com
& L# `) D/ C% V% L  x) t
Source Control Register 22

, O) I$ y: R; z7 b0 J. K. }
0x0000.0047- 嵌入式底层驱动开发技术学习网站2 W) A; k: P3 v( x3 p% G  \


6 k$ M- O: s2 I4 ?2 T7 g  d6 ?嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR23

0xFFF8.205C

R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习7 s# b( ]# ~" L( j: o; p* k' u

+ a5 o  {. W3 E5 [2 j5 P嵌入式开发联盟Source Control Register 23

! a9 J( s5 D1 I: z. d' B# I. h' \嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0047- 嵌入式底层驱动开发技术学习网站9 h5 Y8 }; f; S9 {% m/ l( [2 A

0 H  n+ \6 Y6 ^" P0 D
AIC_SCR24

0xFFF8.2060

R/W
& C; v' a1 R- n8 Q8 _% I嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

6 l: n& O3 R7 ~嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习Source Control Register 24
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2 F  p5 U' W. ]. W+ s% m0 ^
0x0000.0047
0 Y3 N. {- y& a$ wmcuos.com


7 q" n* o9 x' `0 {
AIC_SCR25

0xFFF8.2064

R/W
1 r* S- f5 H) ~* _! l5 _: a: Y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
- 嵌入式底层驱动开发技术学习网站" e' x3 [* m& K; r% {9 W: r' Q
Source Control Register 25
$ Q; c4 ]  a1 [! B# r. m  t+ e; @
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 Q2 g, f' d9 S' h# i( t9 A


& {- u. l" M* X2 cmcuos.com
AIC_SCR26

0xFFF8.2068

R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习0 B& J8 h5 }9 J! y9 `, ]
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; F% K5 b& B% ^% t, v; e
Source Control Register 26
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ }$ L- G  U: A5 A6 [# _( c5 a. U+ X
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1 A$ P/ n6 ]7 g4 D; x


! a5 ~$ W( B5 ?7 j- 嵌入式底层驱动开发技术学习网站
AIC_SCR27

0xFFF8.206C

R/W- 嵌入式底层驱动开发技术学习网站2 p( r6 Y+ U  |& P3 b

! f) v% }, x6 x. ?/ |+ L嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习Source Control Register 27

2 e9 ~' N4 }5 b$ P- 嵌入式底层驱动开发技术学习网站
0x0000.0047嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 U) o0 v& v, t3 S

- 嵌入式底层驱动开发技术学习网站: x5 [* y) `7 b$ l' `( n
AIC_SCR28

0xFFF8.2070

R/Wmcuos.com" t2 ~( `( ?; b6 {# l. [2 A

+ C, h2 ^) k4 Y- v$ G+ q! K+ r( Smcuos.comSource Control Register 28

& f; H% m, \( A: _6 Wmcuos.com
0x0000.0047
( G& Z& }3 u6 M3 Z9 X4 l. r8 Y嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习


; d" H1 i! @* v- 嵌入式底层驱动开发技术学习网站
AIC_SCR29

0xFFF8.2074

R/W- 嵌入式底层驱动开发技术学习网站0 U; b( J2 `6 I0 U, X. D4 \3 o* d
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。& H$ R3 S3 }+ P% p' W/ W4 `
Source Control Register 29
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 N1 I4 P0 {8 K, p  A4 J
0x0000.0047
$ x$ I* [% V$ k! U4 u: T$ \mcuos.com


7 Q$ n  D/ _! a6 Dmcuos.com
AIC_SCR30

0xFFF8.2078

R/W
0 L/ {( O( S- `, k, S

0 _# h% H. r" \# j* HSource Control Register 30

: h" ^- y3 s; [3 s* J嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.00470 @0 U9 d9 D2 s

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% }8 w9 ^9 W9 R: {1 p: F
AIC_SCR31

0xFFF8.207C

R/W- 嵌入式底层驱动开发技术学习网站) x, ?, l5 h+ b$ t
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。5 l6 M3 `! F9 Z" I4 Y# \, H
Source Control Register 31
. |8 [/ r4 o1 E! x; i
0x0000.0047
0 ^$ _6 T% @# z5 P# jmcuos.com
mcuos.com/ y; l  L: \* d$ O+ m$ j
AIC_IRSR
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, c4 _( ~6 _6 @

0xFFF8.2100

R
0 G' `- z3 E. C5 B4 D  Z1 d/ Rmcuos.com

9 \" R1 ?1 d* {, vInterrupt Raw Status Register

- n  C- t9 }4 ?" Q, ^% q- X% t嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0000
: |2 p: v* R+ O1 [

  r& t# @5 a* ]% a' Pmcuos.comAIC_IASR

% y6 w. k9 M9 m- V. z* n: Q- 嵌入式底层驱动开发技术学习网站

0xFFF8.2104

R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。" l5 H- t( A8 B3 H6 d6 Q% R( L
嵌入式开发联盟$ c5 K. `- Y! ~/ M' r! ?
Interrupt Active Status Register
mcuos.com2 F' ^( I  b9 [, x- I  k/ w
0x0000.0000
, f& ?, T2 V# w# G嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

, \. Q' ?3 _, G, \- 嵌入式底层驱动开发技术学习网站AIC_ISR
- 嵌入式底层驱动开发技术学习网站: J7 ?9 K; J/ ]% L  Z0 e0 n3 U

0xFFF8.2108

R嵌入式开发联盟  f  t2 B! I: _3 K

$ i: {, e6 g0 h3 C* i& gInterrupt Status Register

: g" p$ t9 }' h; U8 @' e% N! W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000mcuos.com' g& W# T0 V9 `/ Y8 ~

4 ~9 B- j. D% {* N' {嵌入式开发联盟AIC_IPER
- 嵌入式底层驱动开发技术学习网站0 F1 h9 L5 }$ N$ h! U" I, W6 p

0xFFF8.210C

R- 嵌入式底层驱动开发技术学习网站, m6 t/ C, j4 I3 A& M* V" d

. j! S3 I, f3 @, ?mcuos.comInterrupt Priority Encoding Register
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! {9 j2 j% r$ C& c0 m
0x0000.0000
) m1 Q) r6 Q- I* M5 i嵌入式开发联盟
- 嵌入式底层驱动开发技术学习网站( N! ^" b  {) G; j  o
AIC_ISNR
mcuos.com  e$ v( `! U& C

0xFFF8.2110

R
6 }. ~1 I' k) Q2 q8 B( G嵌入式开发联盟
mcuos.com8 E8 e# x0 C/ ]+ c
Interrupt Source Number Register

7 k5 T  T$ a5 m! j, F- 嵌入式底层驱动开发技术学习网站
0x0000.0000
5 c% {1 ~% Q  E" _& ^- T% ~嵌入式开发联盟
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。# v' D' Q. [$ M. ]- l/ `
AIC_IMR
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! [# c5 B% }/ w' A

0xFFF8.2114

R- 嵌入式底层驱动开发技术学习网站7 y. k. Y0 o) Q- z0 v6 R, m6 }6 E

- ^  f' s- X* l5 E本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。Interrupt Mask Register
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 D7 V4 m0 E+ L+ b3 E
0x0000.0000
( l0 E7 B; f$ C- _$ a# p+ M3 z本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

  A& _- h- m/ [; ymcuos.com
AIC_OISR
- 嵌入式底层驱动开发技术学习网站" v! r7 j7 M6 v) H! z( A

0xFFF8.2118

R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. a* S" r8 I* Z$ q0 Q
mcuos.com. j8 |, j+ V3 a* [" {, U7 d
Output Interrupt Status Register
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 l- g, K- s4 x. l8 z# N
0x0000.0000
) n( L7 v, S8 v7 E& @嵌入式开发联盟

. T9 L. u2 D5 R7 B  N: _- 嵌入式底层驱动开发技术学习网站AIC_MECR
% \$ T0 h; u# r3 h  g' H

0xFFF8.2120

W
3 ?, P, F$ i2 mmcuos.com
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习: P. R: |, y) D, ?6 J/ V6 m! t
Mask Enable Command Register

  H! W- m  ^' E5 g: imcuos.com

Undefined


4 _: t% F, B) x4 k7 y" {- 嵌入式底层驱动开发技术学习网站AIC_MDCR

3 [4 o4 R# d: W

0xFFF8.2124

W3 j( m+ N' Q, Y6 w7 N
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。: p- t; j$ [2 }+ U
Mask Disable Command Register
mcuos.com" A0 m: E/ q1 z" {# ~9 Z! e* L' _

Undefined


5 y* |7 K) v; G嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习AIC_SSCR

+ u0 u) ]3 a  C2 W4 H: w2 p. g+ w嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

0xFFF8.2128

W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 ?: o" \8 P/ `! @3 w' `6 r- p

% T( J, m) Y  \本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。Source Set Command Register

, ?% X: Y% [5 T: d' O" _& V- 嵌入式底层驱动开发技术学习网站

Undefined


0 k' a$ U. `/ L& zmcuos.comAIC_SCCR

' b+ I% S+ x6 h; [- D+ b

0xFFF8.212C

W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习) R1 |- ]/ O+ l! ]

1 U  |6 b/ V( W" l/ R4 V( C: _( V嵌入式开发联盟Source Clear Command Register
mcuos.com  O' v/ X6 ]/ \: l- n

Undefined


' s! t: C* C: D" \mcuos.comAIC_EOSCR
( U/ [# P% n5 d7 q4 ^+ T# R5 j  ~6 C

0xFFF8.2130

W
, J$ U1 |4 V) |6 A" z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
: l" G! c  }' J' t7 I8 |2 h. }4 g
End of Service Command Register
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习5 q, w* i5 K, Y

Undefined

AIC_TEST

0xFFF8.2200

W
! Q, Y& d* Q; `mcuos.com

- x; s/ T( Y# K1 K. j嵌入式开发联盟ICE/Debug mode Register
- 嵌入式底层驱动开发技术学习网站0 K7 v; S7 s+ Q' }3 k9 R" f" m" ^" ?

Undefined


! @( O! j- V4 e  g2 c$ [4 ymcuos.com mcuos.com7 B: [; c4 E5 m3 R* P1 K7 u
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。5 g2 W4 I+ ^6 r$ W  G$ ~
- 嵌入式底层驱动开发技术学习网站- z% M$ ^4 C. q/ m; P; W1 R
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习# f. E4 b% O( y6 s' _0 E  v/ r6 C
1.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。5 y/ ]6 e( E3 Y$ K4 a/ N
功能描述
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; Y1 I* Q. Z& t  a1 `

4 x  j+ B+ x/ K" B; }1 g" D$ S- 嵌入式底层驱动开发技术学习网站
( M2 T- c- `8 h3 ]8 C; M- Omcuos.com
嵌入式开发联盟1 m- l) ^5 _+ B2 v) _
1.2.1.
: L+ v4 Q: D8 c+ f+ ?mcuos.com
配置中断通道
每个中断通道都有一个独立的控制寄存器来设置其类型和优先级。W90P910所有内部外部中断类型都是正电平触发的,这在通常的操作中不会被改变。 对于通道2345,设备驱动必须根据外部设备来设置相应的中断类型,每个中断通道的优先级别完全取决于中断设备。开机或重启之后,所有通道都会由AIC分派0-7的优先级。图2-2显示了源控制寄存器的内容。
2 J( [3 w) {# B3 n/ k; r3 @$ e嵌入式开发联盟
( L( C0 X( ~. r! O( s5 {' {9 m2 m嵌入式开发联盟- 嵌入式底层驱动开发技术学习网站! p9 ^% r) Q1 i! }1 {" |: P* Y
2
8 A; l& Y' Q# b, b. \
% d- b' L! s: t, w# F嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2$ {- @( h# g6 w1 k( N4 R
- 嵌入式底层驱动开发技术学习网站0 D& k* b1 X" |9 c. L

: r) e1 p2 c( N8 R! a! {! q& z
9 q$ {5 M0 x7 j7 ~) E% z" Dmcuos.com; e/ t- r9 t& h

: [! a! i- |( l4 ?. [+ m) I  Q
4 C' t% {% j7 {- 嵌入式底层驱动开发技术学习网站源控制寄存器mcuos.com+ W2 u, f! L- h4 t8 L+ M) [8 F
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; e/ ?  I. t6 ]9 y$ j- H. x% r
嵌入式开发联盟& N. |" a( o  C4 O+ I* w, z) X
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习/ L$ f4 [1 s- O. l4 H$ Z# [  V

& O- j- B8 y0 \0 ], p8 \; U- 嵌入式底层驱动开发技术学习网站
9 H3 q) d- b0 J% n3 N
3 ?" ~* l9 w& d5 C) G, m2 X嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
' B* `. I/ B. O/ L* u+ o# w# p/ n嵌入式开发联盟 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" ^% b- }: g7 a
1.1.1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 X0 `2 C  s2 K4 c& y$ H- @  I" R
中断屏蔽
W90P710 AIC 提供了一组可以屏蔽个别中断通道的寄存器。中断使能命令寄存器(AIC_MECR)- 嵌入式底层驱动开发技术学习网站. w# I7 m) x, i9 K3 d
是用来使能中断的,在MECR相应位写1就会使能相应的中断通道。相反,中断屏蔽命令寄存器 (AIC_MDCR)
/ g0 y; Y2 i- Z3 h3 {: Zmcuos.com
是用来屏蔽相应的中断,在MDCR相应位写1就会屏蔽掉相应的中断通道。在AIC_MECR AIC_MDCR任意位写0都是没有作用的。这样,驱动可以任意修改这两个寄存器而不用保存它们原始的值。如果需要的话,驱动可以读中断屏蔽寄存器 (AIC_IMR)来获知某个中断通道是否被使能或屏蔽,如果是使能的,则相应位为1,否则为0.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 t2 i1 Z7 [6 z% Z' T

: `  ^; D$ @0 V) o# M% Q4 C! S嵌入式开发联盟1.1.2." ]2 S% H  u' ?+ u8 K& D9 n
中断清除和设置
对于中断通道是电平敏感的,设备驱动不需要写Source Clear Command Register (AIC_SCCR)
' @& e+ f/ I) }3 r' }  E2 U9 i- 嵌入式底层驱动开发技术学习网站
或者嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习  A, m% K' T3 m; N7 H# e
End of Service Command Register (AIC_EOSCR)
来清空任何AIC 状态。设备的中断状态一被清除,AIC就禁止中断请求。对于中断通道是边缘触发的,设备驱动必须清除AIC的状态来禁止中断请求。要清除AIC状态,驱动程序可以写Source Clear Command Register (AIC_SCCR)
! U! P4 @! R/ |- 嵌入式底层驱动开发技术学习网站
或者 End of Service Command Register (AIC_EOSCR)。在AIC_SCCR的某位写1就会清除相应的中断。AIC_EOSCR 的使用会在硬件优先级这节讨论- 嵌入式底层驱动开发技术学习网站( V  `" |+ ~. I2 ?0 o
寄存器 Source Set Command Register (AIC_SSCR)
) K1 K3 q8 Y( h  J- 嵌入式底层驱动开发技术学习网站
是用来激活中断通道的,当他被设置成边缘触发的时候,在AIC_SSCR 某位写1会设置相应的中断,这个功能对于自动测试或软件调试是有帮助的。
1 ^4 D. i+ q/ F$ ~4 c嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
4 ^3 u. K" y# G1 O. `mcuos.com1.1.3.
: Q" {/ I: ]2 P, H, K/ n: D: u. p- {9 M嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
软件优先级
AIC提供了一个Interrupt Status Register (AIC_ISR)寄存器来标识中断源,如果一个中断通道被使能并且是活跃的话,AIC_ISR 中相应位会被设置成1FIQIRQ的中断处理函数能够通过读AIC_ISR来获取中断源,并且服务顺序是完全取决于软件算法的。
2 y: z' d2 |, Pmcuos.com通常有一个函数表来保存内部和外部设备的中断服务程序。当有中断被CPU识别时,FIQIRQ的异常处理会被首先执行,然后它会按照AIC_ISR的内容来调用正确的中断处理函数。图 2-3 给出了一个执行顺序示例,其中,通道1有最高优先级,1718是最低优先级。
, z/ g) {6 r4 g, I2 kmcuos.com
8 w' h6 ]2 k2 \# @8 Y1 g1 Z- 嵌入式底层驱动开发技术学习网站
/ h2 p$ j0 v  R" L! X$ I嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 7 c+ U. A" `& A7 ]0 X; a1 J" W

# H, \5 v/ V  f- E7 d# y- Emcuos.com图 2‑3 Sequential Priority Scheme  i; `0 g3 f2 G7 X$ j" {
0 N" \; n, e8 S+ a. Q% r

* H3 S8 F% r  n! B本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
2 C1 H* z! }7 ]: n( _# U0 smcuos.com1.1.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 x( k% f7 ?" q4 T
硬件优先级
AIC实现了一个私有的8级优先体系,要使用这个机制,应该在使能中断通道之前设置特定的AIC_SCRx寄存器。同样,当有中断被识别时,FIQIRQ的异常处理函数会被首先执行。这个异常处理和中断服务程序会按照预订的规则让这个机制正确工作。规则如下:嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' c) w" @7 n8 v6 Y* n
1.
+ H/ Q  X; C  |5 q
读寄存器AIC_IPER获取向量(IRQ x 4), 这时,AIC_ISNR会装载当前中断号,这个向量(IRQ x 4)表明了哪个中断是打开的,活跃的并且优先级是最高的,乘上4然后存在寄存器AIC_IPER 。从AIC_IPER 获取的数据(向量)方便下面中断服务程序地址的计算。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2 P/ R  V4 l8 W
2.- 嵌入式底层驱动开发技术学习网站2 l. R' [1 v" C7 ]  c% B* ]0 U
通过添加向量到中断向量表来跳到相应的中断服务程序执行。0 ^: ]$ l* c5 v) Y5 U
3.
; f; y7 f3 K7 i$ D. O. A
写任意值到AIC_EOSCR来结束中断。
0 e: \) G2 E  q2 o8 [6 _嵌入式开发联盟被使能并且是活跃的中断优先级被视为当前优先级。当读AIC_IPER时它会被放到优先级编码器 中。同时,AIC_ISNR 会装载当前编码过的中断通道号,这样可以防止AIC响应一个低优先级的中断请求。因此,中断服务程序必须写AIC_EOSCR 寄存器使当前优先级从优先级编码器中让出,让AIC服务低优先级的中断。这种硬件优先级控制对于中断嵌套系统是有帮助的。
) w- t3 S+ S( A$ @" f* ~嵌入式开发联盟与软件优先级对比,向量提供了更快的方法调用中断服务程序,把向量加到中断向量表可以轻松获取服务程序地址。图 2-4 是一段汇编示例代码; `$ N3 ?; j& H' o; S7 a" _

6 N0 Z& H6 P# m8 a
2 [2 k% n* U( K- M) y" n( ^; G- 嵌入式底层驱动开发技术学习网站注意,一旦ISRAIC_IPER,它必须写AIC_EOSCR 来回复正常中断状态。否则,下一个中断可能不会被正确响应。图2-5 显示使用硬件优先级的流程嵌入式开发联盟  q7 a0 b1 h8 }

% j% u& _; D* H4 P- 嵌入式底层驱动开发技术学习网站 2‑5 Using hardware priority schemeD 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; F( O1 E3 ?3 G' I0 `

' J" S+ b9 m  c6 Q9 B, k2 Smcuos.com
7 W) J+ q' ~" N; P, Bmcuos.com
1 p% N: `1 Y% A" `: L" {. Q嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% F8 x3 D; i* F" o/ L5 q
# R% ]) D! M0 M& u
/ o! Q. D7 k8 Y( j
mcuos.com1 U# |, T2 Y! x' |( h2 @; B
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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