|

baw0hyb1bfg64010925.gif
1 z7 R! b( X1 u1 E% q
点击上方蓝色字体,关注我们
4 n' v5 H7 ]9 P
, D7 |/ z/ O3 ]/ V# ~) t6 q! ^处理器架构决定了地址空间的大小以及如何映射到内存、外设等资源。
/ u' C& y8 y, g( W% G% i$ R. k6 Q' Z3 _( d* m
SoC设计者会为内部模块、外设控制器(如GPIO、UART、SPI等)以及外部存储器(如DDR、Flash)预留地址范围。! Z, T3 O" s H0 ?) k: L
4 G5 ^! k/ j4 l; _, u$ L$ C# a
这些地址往往是硬编码在硬件中的,例如某些外设的寄存器地址是固定的。. d. Y1 G, `1 {: ~/ I
! `# ~8 @5 i8 h0 f. o% J: K
板级设计决定了如何将物理地址空间分配给板上的外设、扩展存储器等硬件资源。这里涉及到PCB上的内存、外设连接方式。1 m% i# \3 s# u/ u' m
1 V: r1 P" D- D o设备树文件用于描述嵌入式系统中硬件资源的具体分布,包括外设的地址映射。 W0 o: i) J0 ~/ Z) a
/ |+ \1 V# J/ Z/ E. k' L/ Z
这些信息最终由操作系统的设备驱动程序解释,并显示在类似/proc/iomem这样的文件中。
( T* S# L% O+ `) p7 C$ O+ y6 N8 `' J( t& p
在系统启动时,固件负责初始化硬件,并根据系统配置将硬件资源映射到特定的物理地址空间。
, n3 f- d: H) v( T, s+ ?9 P) Z4 B4 n. s. ]: Q0 i8 B
例如,U-Boot初始化DDR、Flash、外设时,会设置它们在物理地址空间中的位置。
2 F# V4 q. J; z/ x: F' I# B( p ^' ^
内核从固件和设备树中读取硬件布局信息,并负责管理和调度物理地址空间中的资源。7 S- n3 r0 c$ O3 n2 A: |. b% l
3 W# \$ d; G- }最终,这些信息会反映在/proc/iomem等内核接口中,供用户态程序查看。+ S( k! b; s( b! O' L9 p- n/ j
2
- r! f& L+ _- ~3 d2 @% _% j. o3 j是由板子上的什么决定的?
y* p5 M9 }- L; k( ?, JSoC或处理器与外设之间的连接方式决定了外设的物理地址。8 A& |8 m) z; _# v% k z
aamvymsjb0t64011025.png
% m5 G6 `! ?" e/ X) _. a' p5 \$ s; H
例如,外部存储器(如NOR Flash、NAND Flash)和外设控制器(如GPIO、SPI)通常有固定的地址映射方式,板级电路设计会根据这些要求来布线。
O S5 r3 n% R1 U8 u9 R
! j1 ^6 u0 E, |设计时需要为各种外设(如UART、I2C、SPI控制器等)预留地址空间,通常这些是硬件预先定义的。
! | z9 W( m8 Q# h" \( n: v- v& `: p/ r2 k" g
SoC的数据手册或参考手册会指定不同外设的地址范围。
# z* |$ T) C z. \
+ C1 C! ]/ E; }) G3 ~0 i例如,DDR的起始地址、外设控制器的寄存器地址等都由处理器的数据手册规定,这些通常在硬件设计阶段就确定了。
# ^- K9 U+ ]4 _0 a3
3 ^# g3 b+ Y; ]5 N) u6 J添加外设时的地址布局如何确定?
3 x6 t, C# R. b, r5 B4 W% B5 V: j+ z% r在嵌入式系统中,设备树描述了硬件的物理地址布局。3 k6 |* h d, n, ^" r; A! x: J( @" k
}8 _) a* _+ A: L- J% q5 q) `8 I6 R) D
新添加的外设可以通过设备树文件配置,将外设的寄存器地址映射到物理地址空间的某个空闲区域。
! v1 |6 ~) ~ I$ k5 i8 h; f' ^7 s( K( \: i
设备树中的地址映射配置会被内核读取,并展示在/proc/iomem中。1 M9 {: S0 d+ N) V" I
; a5 k3 F3 y8 S, i) h
对于可枚举的设备(如PCI设备),操作系统启动后会自动扫描总线,发现新的设备并为其分配物理地址。这种地址分配方式是动态的。
k3 x. j, y6 n3 T- Y# }! N2 D
0 U2 z W: O, K$ G; ?2 p% F! c在某些情况下,固件会在系统启动时初始化新设备,并分配地址。这种情况下,地址布局会在固件阶段确定。* o: N9 _5 Q& p0 r1 ~, y+ p
qno21c2222m64011125.jpg
6 G1 W# E; p4 W# b, o4 |* ?
ioegkrmqdh564011225.gif
* h2 |6 I$ T& Y" ?% O' h( k2 V点击阅读原文,更精彩~ |
|