返回列表 发帖

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

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

1.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习0 j0 C" y. q: n1 D/ v0 J
概述
W90P710合并的高级中断控制器 (AIC)mcuos.com2 E; x# b0 J* `2 P: X1 {2 N) G
有能力处理32个不同中断源的中断请求。目前,定义了31个中断源。每个中断源被唯一地分配到一个中断通道(1 31). 每个中断通道可以被独立开启或屏蔽。如果一个通道对应的中断源发生中断请求的话,这个通道的状态会被视为活动的。有好多状态寄存器被用来区别这些中断通道的状态。只有当至少有一个中断通道处于活动状态并且是被使能的时候,AIC才会向CPU(ARM7TDMI)声明一个中断请求。
- 嵌入式底层驱动开发技术学习网站: p, ~0 k/ M5 k5 N, F
驱动可以根据状态寄存器实现一个优先级方案,AIC本身也实现了一个8级优先方案来改善中断分派时间。它把31个中断源分成8个有限级别,0是最高级,7是最低级。在每个级别里,较低的通道编号具有较高的优先级。如果一个活跃的并且被使能的中断通道被分派成级别0的话,AIC会产生一个FIQ请求,如果被分派成其他级别的话,AIC会产生一个IRQ请求,FIQ会优先于IRQ产生。中断嵌套是由AIC自动执行的。
7 }7 Y# y- P- U本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。尽管W90P710的内部中断是高电平触发,我们在驱动中仍然可以把每个中断源配置成低电平触发,高电平触发,脉冲触发或者正电平触发。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& G7 G! e9 S4 X2 @0 [1 T( N

1 J+ h/ R: O! b! J1 V) ?4 p- 嵌入式底层驱动开发技术学习网站

! S  z" g3 m( k, {2 n嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习嵌入式开发联盟7 @# @/ u; N6 k+ x% j: C
- 嵌入式底层驱动开发技术学习网站" R; G$ d3 D( i# h" `0 g0 g3 W
3 r) U3 W7 H+ O* Z0 z

* y5 @+ P* G8 l& d6 B, I! t! kmcuos.com

0 V- v3 w; \) Y嵌入式开发联盟1.1.
8 |: F* I: U0 z0 v- 嵌入式底层驱动开发技术学习网站
寄存器

8 v( y- L- F5 i3 w0 D& r嵌入式开发联盟R :mcuos.com8 U( ]% I3 k5 i' _- |0 J; q
只读, W :
7 C) A& C% H6 J8 ~6 n
只写, R/W :- 嵌入式底层驱动开发技术学习网站1 S+ b) V) s. q+ P1 @5 w
读写, C :嵌入式开发联盟$ Z5 g: z* ]  d  {; s6 h6 D
只可写0
! z- l6 R/ C" b8 r2 y9 S4 H本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。表 2‑1 AIC 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 X8 Q2 u, H( h+ V& B, }
寄存器定义
" y  g  x) E6 D

Register嵌入式开发联盟! U+ _6 S* P  }9 M
Address
% V) x4 u: k9 u& E) u! g1 [嵌入式开发联盟
R/W
- f% ]% a' o& e7 \- l' z  k& jmcuos.com

Description

Reset Value嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 S+ p- w6 a& r0 w& @' O

嵌入式开发联盟% ^& v6 }1 ~! L- B. S. G3 D
AIC_SCR1

0xFFF8.2004

R/W- 嵌入式底层驱动开发技术学习网站$ T. b3 ~" m( X5 r9 w4 s5 L1 _4 p
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; K( t5 W, a# @
Source Control Register 1

2 P) v' W% X% e8 y& a/ j% c- 嵌入式底层驱动开发技术学习网站
0x0000.0047嵌入式开发联盟- v' C! W  }$ @7 G: s  ]# L


" E- p3 t+ T4 K, A& x1 Z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR2

0xFFF8.2008

R/W
% e  e! m/ }: b1 s$ u

9 F5 X" z7 U$ f  Z7 z- 嵌入式底层驱动开发技术学习网站Source Control Register 2

, `# @3 n; [  J3 M
0x0000.0047嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- }5 J$ b5 T; R/ i' k" m

嵌入式开发联盟0 n1 L0 U! L# b
AIC_SCR3

0xFFF8.200C

R/W
2 Z7 X6 x7 f$ T7 M0 U" B1 ?" L3 ^) L( t嵌入式开发联盟
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, m) X5 g' E$ O! t4 ]
Source Control Register 3
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习+ _& C8 F4 v8 [% h+ r1 l
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ f" {+ j% V) h4 M) P( g7 {

嵌入式开发联盟3 D& ]& ]+ m' r2 j
AIC_SCR4

0xFFF8.2010

R/W
4 u! Q9 @$ b& ]& q8 g8 G嵌入式开发联盟
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习$ p1 |8 n' M2 h& S$ `/ ?
Source Control Register 4
. L( a7 O( [" X" k1 z
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/ F2 l" K+ N9 ^3 A+ y& g2 j2 Q

mcuos.com5 b) ?: Z0 z! n3 P1 q% W, X
AIC_SCR5

0xFFF8.2014

R/W
: l5 z+ b" F9 e9 |# W% [' d+ o  R( K) r本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

6 x* h0 S: |" U) M; E嵌入式开发联盟Source Control Register 5
嵌入式开发联盟  I: [" n  M' n# N. D" |  F' E, k1 d
0x0000.0047
7 u; ?: X" s( y  ^+ z% M. Emcuos.com


0 R$ k! t! C$ m1 v# u, `+ e% m
AIC_SCR6

0xFFF8.2018

R/W
. k1 x4 a2 W% F$ Zmcuos.com
. _  C* u5 r# x: g
Source Control Register 6
- 嵌入式底层驱动开发技术学习网站+ K& {. j4 G8 w* w# Q4 e" }
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。* B' L& d: k  ]


3 ^8 n  Q, X9 _5 p$ Y; e- 嵌入式底层驱动开发技术学习网站
AIC_SCR7

0xFFF8.201C

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/ X, D4 r. k: j; d1 r

. \9 u* Z# C: J嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习Source Control Register 7

9 y' T: d9 C/ D3 o: b! Zmcuos.com
0x0000.0047mcuos.com/ l! g1 l- e8 P- x0 z# a

mcuos.com! h  p- Z  T0 `) q
AIC_SCR8

0xFFF8.2020

R/W
! D4 J  q8 o+ R* e. ^0 T8 F嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

& N3 {5 K% n2 S: i% P9 a$ Gmcuos.comSource Control Register 8

8 `/ E6 N$ w; s# o0 a0 amcuos.com
0x0000.00477 U7 D7 N+ L* O) l

本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 v1 z0 U6 c" D; v' c0 M& R1 v8 a
AIC_SCR9

0xFFF8.2024

R/W嵌入式开发联盟9 V; |: O2 ?! ]. w  ^( r
嵌入式开发联盟. X  B6 I# n$ D6 E
Source Control Register 9
嵌入式开发联盟6 N' f$ z# _0 H& i- l
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。: ]! D, H& L* d% f3 X% f& B2 j+ I' `

本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。# v2 o+ N) ~2 s7 p  V$ a" y
AIC_SCR10

0xFFF8.2028

R/W
5 J! K4 U8 ?3 n; l' d* S% C嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
- 嵌入式底层驱动开发技术学习网站) Q# U6 l$ h9 u0 q' N
Source Control Register 10
嵌入式开发联盟8 T1 D, t. I6 X) S7 K6 z+ c
0x0000.0047嵌入式开发联盟, |( H' q) T3 I

- 嵌入式底层驱动开发技术学习网站8 F- w6 `3 a$ ~( W
AIC_SCR11

0xFFF8.202C

R/W- 嵌入式底层驱动开发技术学习网站6 b' R5 ^& D2 m" i, W/ m

4 i8 }4 o: v  H9 LSource Control Register 11

9 d" n8 g, i1 F1 T
0x0000.0047mcuos.com5 F" f  q1 j/ v# R

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 I5 ~5 x3 F+ q4 B6 b- G
AIC_SCR12

0xFFF8.2030

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。! h% L5 m* a9 D% J. q3 D- \
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ }( v+ |1 N% P' G  T5 m, B
Source Control Register 12

8 v7 R% e* @) O# X/ ]. ]. X3 Mmcuos.com
0x0000.0047
9 ^% x- {5 v/ S) p嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; `3 @7 V1 x1 L' A2 u# L& T
AIC_SCR13

0xFFF8.2034

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。( [& ~# z) _7 g5 N% |1 I( \

: K# [) u& q" o% p  g嵌入式开发联盟Source Control Register 13
嵌入式开发联盟3 v# T9 {; E. n/ ~
0x0000.0047
1 E4 F: v3 m, ?9 q# l嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

mcuos.com/ m, P+ X0 d1 o$ k5 X$ G
AIC_SCR14

0xFFF8.2038

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, F) z, f& P0 ?
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; ~  i9 i$ C+ {3 s% T
Source Control Register 14
4 n9 L  Y2 q( ]% Z9 X
0x0000.0047- 嵌入式底层驱动开发技术学习网站# Y; G+ z1 M! E


. {* z# w0 @3 T  T+ n6 i
AIC_SCR15

0xFFF8.203C

R/Wmcuos.com7 L& @* p  V7 ]* f. }6 n6 ]
嵌入式开发联盟  y7 ]4 p# D' ^! |0 Z/ g
Source Control Register 15
mcuos.com/ k7 U! z5 H3 i) q6 s! m0 Y% e
0x0000.0047嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习0 V8 N) e: z2 b% G3 Q/ j3 T/ E

mcuos.com2 ^- z" h3 v0 Y& K* B4 ?% ?/ S
AIC_SCR16

0xFFF8.2040

R/W
  x$ {; H" i& t嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
嵌入式开发联盟- t  _! }+ C( C, S
Source Control Register 16
mcuos.com. o. N2 V5 o% V  t/ s9 V( I. l
0x0000.0047嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习. ?& E  e$ q: q4 b# J

嵌入式开发联盟( Q$ k5 c+ k9 |7 [3 [' \
AIC_SCR17

0xFFF8.2044

R/W2 w0 t) @$ `9 r6 q4 p  z* [

6 e3 M5 k4 ?, ~# n% [8 ]( l7 emcuos.comSource Control Register 17

7 `2 }, U  J6 a% Q$ W. }0 R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0047嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习5 s. {9 v8 h$ O& R- q* t


! U+ Z- z6 b4 P+ E/ o  ]) f2 Y9 p3 Ymcuos.com
AIC_SCR18

0xFFF8.2048

R/W
! d# ^  F' a0 Y! s- 嵌入式底层驱动开发技术学习网站

0 T' ?' U; O. A" H* A0 m/ b% j- 嵌入式底层驱动开发技术学习网站Source Control Register 18
嵌入式开发联盟% `5 v! c$ G/ q5 G
0x0000.0047
0 I8 E8 _' i/ J0 s& A3 @7 D: V本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。


" }( I' g- R3 w+ T( J) d嵌入式开发联盟
AIC_SCR19

0xFFF8.204C

R/W
( E, _4 O6 L+ F& f% R% \" v- 嵌入式底层驱动开发技术学习网站
mcuos.com" [/ c. t& N& ^4 A3 G
Source Control Register 19
嵌入式开发联盟1 v- \7 M2 ^8 Q  d4 ]
0x0000.0047
. k# y1 d5 F0 Z- `$ G2 B


- w0 T" i4 E4 }! B6 T6 Q3 F" N, h( R& N嵌入式开发联盟
AIC_SCR20

0xFFF8.2050

R/W
; y* x( l4 m6 Z; n
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。! b" |! E, z# ^6 w
Source Control Register 20

% |% j1 w  x. Y! ~2 t嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0047mcuos.com$ P9 ^! H! C/ P8 P) T


" D2 M1 z" x9 _% K% Y! H6 J2 a+ o嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR21

0xFFF8.2054

R/W嵌入式开发联盟& _3 o% N, T7 }, q

: J$ I. k* P  E+ X4 X* U4 h( a本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。Source Control Register 21
- 嵌入式底层驱动开发技术学习网站" S! L) @0 q8 k$ ^2 x
0x0000.0047
+ C/ s$ ^+ s7 o/ }1 ^" jmcuos.com


5 `! b% T* Z5 f本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
AIC_SCR22

0xFFF8.2058

R/W
( c) _8 E5 I3 a; n# C3 d

* K9 M  `. e$ v, ?9 N& F本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。Source Control Register 22

( P0 C- E" \" x! c- 嵌入式底层驱动开发技术学习网站
0x0000.0047本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 U/ `! c5 h* X( ~) r

mcuos.com' X; h& q% h7 f+ h3 A3 }: O
AIC_SCR23

0xFFF8.205C

R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习: G+ h% u" l3 P

5 j5 n: R$ u+ _3 M2 z: f6 n- 嵌入式底层驱动开发技术学习网站Source Control Register 23

! g3 ~- ]: `8 s! Z  m9 t6 p( n本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0047
5 u5 U0 |& T9 j4 Y) r# M  ?' B

mcuos.com. a2 ^+ {' v* O& ]4 f2 W! D
AIC_SCR24

0xFFF8.2060

R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 l0 K  k$ L. A5 ]! O
- 嵌入式底层驱动开发技术学习网站- \$ T& V8 y9 V  v/ P+ e
Source Control Register 24

6 g# [. P$ z4 U8 L. l6 {嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0047
& x7 ]. h# Q. y


, z9 V  J9 I' z6 d2 V
AIC_SCR25

0xFFF8.2064

R/W
# B: S8 A6 L3 t; vmcuos.com

7 P. ~0 k0 y2 W8 R# V, I3 p0 c嵌入式开发联盟Source Control Register 25

2 u3 w* d" w( c9 @2 o- B嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0047
5 J* k' A! ]& {5 m" {! b( @mcuos.com


; ^7 i( v/ b8 A; }嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR26

0xFFF8.2068

R/Wmcuos.com+ o; M! Y. ^7 W
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- A/ g3 o5 A! F4 Y- |
Source Control Register 26

! u+ o' G# [& }% J' @8 Nmcuos.com
0x0000.00475 \1 p  q- `/ b, _" D


: {, v9 x$ x6 V- r  P; ]' w7 {" W2 e" jmcuos.com
AIC_SCR27

0xFFF8.206C

R/W4 y, `  ?8 i9 ^% h6 t" R

) v/ {8 i, i  X: B7 D+ H/ ?Source Control Register 27
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习. E% a7 J: w$ u, `! a4 d5 j* J
0x0000.0047
1 A, Z9 k8 N* t, Z' `; q嵌入式开发联盟

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习/ v7 x! f" V, \8 D0 M
AIC_SCR28

0xFFF8.2070

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。* h% C* F; q! ?. h  ]1 D8 R, S- P

8 U4 @$ i" |1 a; ?7 a6 q% OSource Control Register 28
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, G7 z" U" ?' b" O9 X) Z
0x0000.0047
) }0 |8 c5 \8 n- ~. L嵌入式开发联盟

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! y5 R3 K7 s3 C. R
AIC_SCR29

0xFFF8.2074

R/Wmcuos.com+ T$ J" Z3 M6 s' P
嵌入式开发联盟3 Z& n$ ]" l2 M- a# U
Source Control Register 29

. ]& l& @8 o9 q" p5 a; N) @4 _+ @3 }本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0047
; a) f( h7 d' J3 S嵌入式开发联盟


3 |& \7 H* e% V1 ^3 F) ]嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_SCR30

0xFFF8.2078

R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1 l2 Q, t. M8 e! ?' P& @% R
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习8 t, x2 {/ F+ [+ N( k4 H
Source Control Register 30
- 嵌入式底层驱动开发技术学习网站% Y9 n; W# n( L# D' o
0x0000.0047
) T  M. L4 s' {. R6 _

mcuos.com" w( P4 u0 f# H/ r" D- g
AIC_SCR31

0xFFF8.207C

R/W
0 p+ R; d6 |7 c  E6 u嵌入式开发联盟
- 嵌入式底层驱动开发技术学习网站# k3 W& C  a6 K# `5 X1 Y
Source Control Register 31
- 嵌入式底层驱动开发技术学习网站$ U/ [/ M- N) Y" B5 L3 l4 {" w
0x0000.0047
3 E# W" ^/ k2 N; E/ n8 \6 H嵌入式开发联盟
mcuos.com8 @* V* d* x! K4 x- `4 L# ~
AIC_IRSR

0 R1 P' q' G! d. E9 a) |4 D嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

0xFFF8.2100

R嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* U& Q3 H$ g4 H' j7 p( j
- J. |$ ?  m4 g7 G
Interrupt Raw Status Register
嵌入式开发联盟! E( t/ r: Y) g( l) o' V
0x0000.0000
+ R+ R9 Y0 c  b! a; p5 ~嵌入式开发联盟

/ w5 y% `3 A" r7 I% S( Imcuos.comAIC_IASR
- 嵌入式底层驱动开发技术学习网站2 [. ]0 ^9 u2 U- m$ d4 p8 S

0xFFF8.2104

R
9 {- N+ f/ b# G- p8 q* W; p嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

+ X5 ]4 `& W+ D, N: X) YInterrupt Active Status Register
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习5 L# [! N6 u6 ?' Q& T! t- b. T
0x0000.0000本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1 }5 U. y2 \2 ^# V* y5 e' Q

6 L; j/ V) o: v/ m" r, @嵌入式开发联盟AIC_ISR
嵌入式开发联盟' P* c/ m$ M% o/ q% @4 B- Z5 d

0xFFF8.2108

R
+ e" q/ }) g* @8 ~嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

# ^3 p3 v1 S% D4 j- 嵌入式底层驱动开发技术学习网站Interrupt Status Register

# C( e: T1 ?) m/ y/ q8 Z5 ?
0x0000.0000mcuos.com0 l  P8 w: q3 y6 k0 N! S

2 y! c$ d; t% S$ U% n+ t# O' y. M- 嵌入式底层驱动开发技术学习网站AIC_IPER
- I4 C$ r8 c0 s$ y8 \' \. s

0xFFF8.210C

Rmcuos.com+ p1 n1 N1 a' W* ~) `1 x3 ^8 i

$ ?* }% n% i5 X) ]/ q- 嵌入式底层驱动开发技术学习网站Interrupt Priority Encoding Register
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。: e3 ]) S0 Z$ R- ], d
0x0000.0000
0 _- o/ R! M* r  Z8 mmcuos.com

: b5 C; H( q, F$ t本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。AIC_ISNR

$ V3 h/ a' i; a2 S; r: e. M% {

0xFFF8.2110

Rmcuos.com( e' i) w! M4 y: P/ B

+ P8 O5 z7 }) |# I* ^Interrupt Source Number Register
mcuos.com) V9 C# x6 d$ F+ C6 g+ |
0x0000.0000
9 w0 `5 T# M* ?& D嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

% \- m4 A% b$ C) y* `mcuos.comAIC_IMR

3 _  u6 E; U, R0 C6 V/ @- a# Fmcuos.com

0xFFF8.2114

R
) w0 T! j  Z4 J5 M

. o6 S$ Y. o3 D: @- 嵌入式底层驱动开发技术学习网站Interrupt Mask Register

; F( u7 G3 |/ Q7 G  @嵌入式开发联盟
0x0000.00000 y* f* u, T" L9 t

+ F7 S% j- ]' ^/ ]+ \2 h1 E嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AIC_OISR
mcuos.com% W; }' j+ ^+ p2 h# `$ q9 h" E

0xFFF8.2118

R
- _2 u6 d6 S" |2 X0 z1 W$ I% k1 r嵌入式开发联盟
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习$ e$ W, h1 Z/ b6 z( L0 A0 e
Output Interrupt Status Register
嵌入式开发联盟2 o$ ~$ d/ A! I
0x0000.0000- 嵌入式底层驱动开发技术学习网站; x2 p# H$ h. D5 S4 u* k# C

( O% f# @. B* n3 f! xAIC_MECR
- 嵌入式底层驱动开发技术学习网站9 e  M- C0 w4 K1 D2 E

0xFFF8.2120

W- 嵌入式底层驱动开发技术学习网站) c6 J) A5 H2 L7 @

4 y' [4 {/ ~8 G* N- 嵌入式底层驱动开发技术学习网站Mask Enable Command Register
mcuos.com& m- z! M: Q6 J( t, k( Y

Undefined


  ]" F1 l# D$ cmcuos.comAIC_MDCR
mcuos.com7 k3 `/ U' Z) \$ r' [# p

0xFFF8.2124

Wmcuos.com2 @( m. l2 b+ y! L; Y; c  @

9 E) M% a3 [, h7 I3 ?  E* a( a9 u嵌入式开发联盟Mask Disable Command Register
嵌入式开发联盟2 ~3 p2 w: A% `9 e( i

Undefined


( o, U" n+ F& }- W( e5 M$ `, [2 e嵌入式开发联盟AIC_SSCR

- {. @! ?6 v: |2 {/ q) y: @0 k5 o

0xFFF8.2128

W- 嵌入式底层驱动开发技术学习网站* z3 o  j- c, F3 }

- y1 y1 ]% ~0 q9 P嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习Source Set Command Register
mcuos.com5 Y* m% {/ m5 r0 ~7 b4 w. i

Undefined


. c. k- C0 x6 `mcuos.comAIC_SCCR
mcuos.com# c0 ^0 W' `. |7 u) ?7 C

0xFFF8.212C

Wmcuos.com& e" P  \+ N7 B8 U% @; Q
- 嵌入式底层驱动开发技术学习网站3 ^' |* X) M2 J+ v  e2 I
Source Clear Command Register

( S3 @4 a$ n" V) N* `; y$ q嵌入式开发联盟

Undefined

mcuos.com6 E- a$ }  v4 u; V* P1 j. @. C
AIC_EOSCR

6 L" I( N0 |! ?, K, @5 \# h1 _- 嵌入式底层驱动开发技术学习网站

0xFFF8.2130

W- 嵌入式底层驱动开发技术学习网站1 C5 n, F* H( D9 A( b( d, n9 ?

  F) o) F) T7 M% @$ q8 R$ R' Tmcuos.comEnd of Service Command Register

! s6 x# t7 |1 M嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

Undefined

AIC_TEST

0xFFF8.2200

W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ o) M- ]: ?3 s! H

( D& E( q3 s# E; X2 ~5 Hmcuos.comICE/Debug mode Register
mcuos.com6 R1 X! E0 }1 |9 x

Undefined

mcuos.com) j( r0 p. U: H7 ?6 e! P

4 B5 K3 h- x3 i+ |* l6 E6 ?6 l
7 \9 ?; ]/ |5 N& F; f嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 mcuos.com7 |2 U/ w1 d3 S/ ?8 f5 r: R

1 w% v5 {( Q+ `  gmcuos.com1.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. K  l2 H; b4 @2 \7 {* J- B3 [
功能描述
mcuos.com/ o& C" g5 T) p; |& |2 [
嵌入式开发联盟  u  B5 q: b- j8 r" m1 j- r
# E  e, e( E  H( ]  w8 {
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 X3 o8 R+ O# n
1.2.1.- 嵌入式底层驱动开发技术学习网站/ A5 `# M& s/ ~$ A
配置中断通道
每个中断通道都有一个独立的控制寄存器来设置其类型和优先级。W90P910所有内部外部中断类型都是正电平触发的,这在通常的操作中不会被改变。 对于通道2345,设备驱动必须根据外部设备来设置相应的中断类型,每个中断通道的优先级别完全取决于中断设备。开机或重启之后,所有通道都会由AIC分派0-7的优先级。图2-2显示了源控制寄存器的内容。% v# `# [( H3 l2 b( l& M0 |9 x
嵌入式开发联盟0 E! Q8 a) n5 y" [8 Q

4 {0 g4 E" j7 E3 {嵌入式开发联盟2- 嵌入式底层驱动开发技术学习网站: \! `0 H  a6 |
- 嵌入式底层驱动开发技术学习网站% q% m8 Q5 m, }* i2 W/ A
2mcuos.com7 K" K" H+ j% x; }0 ~! I' m
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 {9 m) R( N- @$ v! }8 r: {7 x6 B

/ S, k8 c. x4 U& E- V+ g+ x本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- 嵌入式底层驱动开发技术学习网站7 Z  H9 J+ K; C
mcuos.com0 \5 b  F6 x# @8 n* R" k/ U- l

( g& V# `1 g# U8 M9 j8 \, ]$ \嵌入式开发联盟
/ G- `  m/ [4 I( h. r8 U2 M+ `源控制寄存器
, n# n+ f3 O) E# f! ^6 b* g3 i嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习mcuos.com1 P2 A! w0 A+ e2 ?

1 k3 b( R6 v9 q; B6 y3 }$ e- p
  }7 F( H& }1 l2 }" d 嵌入式开发联盟: z9 D; [8 c* s& F0 |- Z- l
嵌入式开发联盟: N$ S+ D4 g$ I- d) n" t
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& p4 R) _7 A( e4 q
- 嵌入式底层驱动开发技术学习网站9 U3 [( ~. t, O1 y; t
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。: Z0 h  T2 i. N: X' S0 v! Z# q
1.1.1.
4 E7 P; n! d' \; f0 i5 L嵌入式开发联盟
中断屏蔽
W90P710 AIC 提供了一组可以屏蔽个别中断通道的寄存器。中断使能命令寄存器(AIC_MECR)本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。' k: X+ u2 L& H% `/ d& T
是用来使能中断的,在MECR相应位写1就会使能相应的中断通道。相反,中断屏蔽命令寄存器 (AIC_MDCR)
8 i9 X# Z# d1 D嵌入式开发联盟
是用来屏蔽相应的中断,在MDCR相应位写1就会屏蔽掉相应的中断通道。在AIC_MECR AIC_MDCR任意位写0都是没有作用的。这样,驱动可以任意修改这两个寄存器而不用保存它们原始的值。如果需要的话,驱动可以读中断屏蔽寄存器 (AIC_IMR)来获知某个中断通道是否被使能或屏蔽,如果是使能的,则相应位为1,否则为0.
$ E8 ^6 y0 m3 f, l! e
6 s6 {( Z) b3 cmcuos.com1.1.2.
# u( U# f" w8 m" I; \
中断清除和设置
对于中断通道是电平敏感的,设备驱动不需要写Source Clear Command Register (AIC_SCCR)嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, T" G" ^: [- y; K
或者嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' a# {7 r0 {6 Y2 k$ s
End of Service Command Register (AIC_EOSCR)
来清空任何AIC 状态。设备的中断状态一被清除,AIC就禁止中断请求。对于中断通道是边缘触发的,设备驱动必须清除AIC的状态来禁止中断请求。要清除AIC状态,驱动程序可以写Source Clear Command Register (AIC_SCCR)
$ H: a$ d5 B6 `; }- [9 Y# }mcuos.com
或者 End of Service Command Register (AIC_EOSCR)。在AIC_SCCR的某位写1就会清除相应的中断。AIC_EOSCR 的使用会在硬件优先级这节讨论
+ M7 a( Z5 o' T8 i7 ]- 嵌入式底层驱动开发技术学习网站寄存器 Source Set Command Register (AIC_SSCR)# `$ `+ C* B. Y
是用来激活中断通道的,当他被设置成边缘触发的时候,在AIC_SSCR 某位写1会设置相应的中断,这个功能对于自动测试或软件调试是有帮助的。
. Z) @' R* j9 tmcuos.com
/ h8 P2 ?6 z3 H. z3 M# |嵌入式开发联盟1.1.3.7 b7 {9 c9 C/ u! |
软件优先级
AIC提供了一个Interrupt Status Register (AIC_ISR)寄存器来标识中断源,如果一个中断通道被使能并且是活跃的话,AIC_ISR 中相应位会被设置成1FIQIRQ的中断处理函数能够通过读AIC_ISR来获取中断源,并且服务顺序是完全取决于软件算法的。
6 |6 [2 K' ?# W8 \* j1 {. l3 d嵌入式开发联盟通常有一个函数表来保存内部和外部设备的中断服务程序。当有中断被CPU识别时,FIQIRQ的异常处理会被首先执行,然后它会按照AIC_ISR的内容来调用正确的中断处理函数。图 2-3 给出了一个执行顺序示例,其中,通道1有最高优先级,1718是最低优先级。
' E! \3 J; J; q, Q( d( c0 H" ^/ T嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
# c5 s) X( V* V! `6 h5 J+ I本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
$ G  s' ]7 J8 T% Y# W  ~5 ymcuos.com mcuos.com( O5 Y8 W. P) p0 o4 d
* G( c4 m4 y9 P3 c% ?6 p
图 2‑3 Sequential Priority Scheme嵌入式开发联盟3 o4 y- ?9 E! _! p  t# |- l
mcuos.com- W' F8 {7 p+ ~9 y: q5 C* m

( ~' I- g% K5 F7 g3 z" Umcuos.com嵌入式开发联盟, T6 n- X$ h8 ]# ~% x# q  g
1.1.1.) J* Y: h9 M1 _" B6 A2 i( v
硬件优先级
AIC实现了一个私有的8级优先体系,要使用这个机制,应该在使能中断通道之前设置特定的AIC_SCRx寄存器。同样,当有中断被识别时,FIQIRQ的异常处理函数会被首先执行。这个异常处理和中断服务程序会按照预订的规则让这个机制正确工作。规则如下:嵌入式开发联盟4 c( K; G3 S9 B) `7 V$ U/ {
1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 i' w/ A; x# O% R, u$ l
读寄存器AIC_IPER获取向量(IRQ x 4), 这时,AIC_ISNR会装载当前中断号,这个向量(IRQ x 4)表明了哪个中断是打开的,活跃的并且优先级是最高的,乘上4然后存在寄存器AIC_IPER 。从AIC_IPER 获取的数据(向量)方便下面中断服务程序地址的计算。; X4 y( R/ J) I4 T2 C3 L
2.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习/ G  ?8 \6 R& g* ~  w% r+ T, x# J/ E
通过添加向量到中断向量表来跳到相应的中断服务程序执行。
2 G! t4 o+ A; p3 L% ?- 嵌入式底层驱动开发技术学习网站3.
2 s9 X& W- d5 L% F; A嵌入式开发联盟
写任意值到AIC_EOSCR来结束中断。
1 [, w8 P4 K+ c# u6 X8 d% w1 v7 X被使能并且是活跃的中断优先级被视为当前优先级。当读AIC_IPER时它会被放到优先级编码器 中。同时,AIC_ISNR 会装载当前编码过的中断通道号,这样可以防止AIC响应一个低优先级的中断请求。因此,中断服务程序必须写AIC_EOSCR 寄存器使当前优先级从优先级编码器中让出,让AIC服务低优先级的中断。这种硬件优先级控制对于中断嵌套系统是有帮助的。mcuos.com5 y* G' B% ^# P! j) }
与软件优先级对比,向量提供了更快的方法调用中断服务程序,把向量加到中断向量表可以轻松获取服务程序地址。图 2-4 是一段汇编示例代码mcuos.com2 u! u# t8 T( H4 U% N

& g7 s; D; J" t( D) x/ mmcuos.com
/ w" t" r* o7 x* b注意,一旦ISRAIC_IPER,它必须写AIC_EOSCR 来回复正常中断状态。否则,下一个中断可能不会被正确响应。图2-5 显示使用硬件优先级的流程- 嵌入式底层驱动开发技术学习网站- {' _9 v) Q5 v) f* W; I

: S5 s; e/ M' mmcuos.com 2‑5 Using hardware priority schemeD
) t  u" t5 m( |" o# A* dmcuos.com
: {  \5 |# Y# B$ R: F嵌入式开发联盟
8 A6 v6 U4 ?: d, x1 G嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习+ b/ q5 l7 b$ I1 t; y
mcuos.com! a5 i4 |( b" B& D0 I/ J

  W& z2 ]0 ~3 K9 H7 z本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。嵌入式开发联盟0 D% S( ?$ ^! A/ i

- f* O# C4 z0 ^& X
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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