21回答

0收藏

嵌入式Linux设备驱动程序开发指南(原书第2版) PDF 电子书

电子书 电子书 2766 人阅读 | 21 人回复 | 2023-09-01

Java电子书:嵌入式Linux设备驱动程序开发指南(原书第2版) 格式 pdf 电子书 PDF 电子书 Java吧 java8.com
! Q4 c- D: W7 n9 Y$ e6 Y/ g
% Z# c' h0 W% D+ F# J

( D8 n0 o' W% i! h( A# J. t' ?
编号:mudaima-P0320【Java吧 java8.com】
1 ?4 q/ b) j: {% u9 E: a

) T0 Q8 V4 s% B- h) d
& @) `% i6 j1 n5 C0 v# T  T0 t- {& l' J. R# i( x
Java电子书目录:第1章 构建系统13 z. Q5 L( a" R' Z) n1 G+ D( w0 S
1.1 引导加载程序1
, S+ ~( v- A% r" {3 S8 F1.2 Linux内核3
, S* y( n$ n! O% r4 I7 d1.3 系统调用接口和C运行时库69 T+ ^( C8 [/ Z* s1 K
1.4 系统共享库7. j3 b+ I& F$ y8 ~+ D& ?  H! }
1.5 根文件系统8
$ M$ U, r( ^1 ~& F; s2 w! e1.6 Linux启动过程9
  P6 @$ \! o( s6 `$ A7 s3 t8 {% v1.7 构建嵌入式Linux系统10+ B( b+ B3 f7 x, i" H
1.8 设置以太网通信11* _# I4 O& m5 {7 e) X' V, v
1.9 为NXP i.MX7D处理器构建嵌入式Linux系统11$ d  u. t1 c0 c' C  b5 b
1.9.1 简介12
- N$ h' J3 C# d( _9 ?6 z1.9.2 主机软件包12
: E; Q6 j  U4 g1.9.3 设置repo工具13
8 k, c- T8 w2 ?9 u0 \( B4 Z1.9.4 Yocto工程的安装和映像构建13
. j  z9 f( D, D; j' b+ s3 @& E' h1.9.5 Yocto 之外的工作15! K5 E+ `( ]+ |7 n* A+ p3 N$ p; L
1.9.6 构建Linux内核18
1 L' P4 ~) |' d# T3 k/ S! m& U1.9.7 安装TFTP服务器20
2 |; I+ S. B) y: Z" ~3 R1.9.8 安装NFS服务器20
* _5 w; M. J8 }* \1.9.9 设置U-Boot环境变量219 p2 I/ F0 i- i( g
1.10 为Microchip SAMA5D2处理器构建嵌入式Linux系统217 H& S1 Y, O8 K# @$ [/ i4 h
1.10.1 简介22
( ^  v* }. f& w" ^; L& t' F1.10.2 主机软件包22& U; W+ J6 I+ C, k3 \( N1 m3 u
1.10.3 Yocto工程的安装和映像构建22% o; a4 d; ?: }; F) s6 ~$ a$ S
1.10.4 Yocto 之外的工作25: Q  U6 h2 y: t* v" f7 b! V9 Q1 n
1.10.5 构建Linux内核25' p8 B, C  B: u* }$ F
1.10.6 安装TFTP服务器27
, m: ^* H' @& t6 d! S* O6 O1.10.7 安装NFS服务器278 C: J$ u0 Z% s6 h7 A& g) M& f! T2 N
1.10.8 设置U-Boot环境变量28# L9 J2 E, D* h; I, G- P
1.11 为Broadcom BCM2837处理器构建Linux嵌入式系统28- m6 i# F8 m' ?: [$ d' ]
1.11.1 Raspbian28+ d3 O7 N+ R  }; l- |: t8 z1 J
1.11.2 构建Linux内核29
9 R% \8 C; r+ B& n6 x- o1 h7 b8 n1.11.3 将文件复制到Raspberry Pi31
7 @! V4 L- T9 q$ i, R0 _2 I1.12 使用Eclipse33. r: X. x/ {! q& m
1.12.1 用于内核源码的Eclipse配置33
1 [. b: \0 e$ b  V: d- E1.12.2 用于开发Linux驱动程序的Eclipse配置38
, ]' [& ]2 T! f9 p第2章 Linux设备与驱动模型42
8 @0 ~, n1 e2 C, n5 j2.1 总线核心驱动42
- F& m: H8 @8 I2.2 总线控制器驱动45
- {2 i) p$ b, {+ e+ \& D2.3 设备驱动45
; ^( t+ u* g0 D+ S2.4 设备树简介46  t% B! Q9 x7 u5 ]
第3章 简驱动程序50
5 u  w6 S' \% y  L2 J3.1 许可证51
% {" x* ?- D1 o3.2 实验3-1:“helloworld”模块51
( Z% Z- ?7 p) d- s& ^2 g3.3 代码清单3-1:helloworld_imx.c52" v4 v& m* J, O4 D3 v0 |: V0 r! B
3.4 代码清单3-2:Makefile52
# o$ o( W) {8 w* }3.5 helloworld_imx.ko演示53+ v" a/ q3 k! M1 |" P8 L
3.6 实验3-2:“带参数的helloworld”模块53
. ?3 h, i) y/ G4 F3.7 代码清单3-3:helloworld_imx_with_parameters.c54$ ^  k9 a  K0 f- p) {2 W- T( Y
3.8 helloworld_imx_with_parameters.ko演示54
8 s( w" V; V9 s+ `; I. C3.9 实验3-3:“helloworld计时”模块55
6 W' u' a/ T5 e7 T" {0 @3 O3.10 代码清单3-4:helloworld_imx_with_timing.c55
+ i$ V( `  M0 q; h0 [3.11 helloworld_imx_with_timing.ko演示56
0 v  h8 Y. b( J7 D0 v第4章 字符设备驱动57
$ y: M6 k& n- D9 y1 _4.1 实验4-1:“helloworld字符设备”模块59
. d2 e3 \, k4 a. v2 u5 P) y; ?) J4.2 代码清单4-1:helloworld_imx_char_driver.c63& Y0 b0 c; r* B9 X  v! [
4.3 代码清单4-2:Makefile65- @: r7 h' ~- _7 b2 ]7 k/ _. l
4.4 代码清单 4-3:ioctl_test.c65
9 m9 p# x9 ?) Q8 a/ T4.5 helloworld_imx_char_driver.ko演示668 r8 l) b% c* t) V
4.6 将模块添加到内核构建66& C2 a: Y, L6 o, E
4.7 使用设备文件系统创建设备文件679 s  F7 q0 M) [9 _% h; {+ G
4.8 实验4-2:“class字符设备”模块68
/ G: m2 g2 R: x2 S4.9 代码清单4-4:helloworld_imx_class_driver.c70
) J" g6 X, Y& m7 q$ o1 K: g4.10 helloworld_imx_class_driver.ko演示724 w2 v% a" W5 T( S4 H# n1 f
4.11 杂项字符设备驱动72
  G7 S# {5 P' a8 U+ E! q4 J4.12 实验4-3:“杂项字符设备”模块73
; [# E4 z2 c! l4.13 代码清单4-5:misc_imx_driver.c743 {7 ~8 |4 W$ b
4.14 misc_imx_driver.ko演示75
; |2 ~) P1 [! c7 ^2 Z5 e) Z2 ^" s第5章 平台设备驱动76
6 q9 s" Z  S, S5.1 实验5-1:“平台设备”模块783 C: s0 I/ Z( y. V! @4 W1 Q
5.2 代码清单5-1:hellokeys_imx.c81
& c  l' W" K# e5.3 hellokeys_imx.ko演示82/ w. [7 F. R7 f$ l
5.4 操作硬件的文档823 H$ F1 n+ d- O3 Z2 N" x' p- C
5.5 硬件命名约定83
6 H0 l7 j- `2 _/ X- e6 J$ s2 `5.6 引脚控制器84
4 U% t& e4 b1 o, `0 p6 b5.7 引脚控制子系统86
2 m( f3 }+ z+ e& O1 X5.8 设备树引脚控制器绑定92
) r% J9 a' ]) c1 U1 ?3 n; ]4 F5.9 GPIO 控制器驱动96
7 {0 [5 ~: g" a5.10 GPIO描述符使用者接口98; E3 c. C% I3 q
5.10.1 获取和释放GPIO98
: N9 h6 Z- G8 H: O3 |% D5.10.2 使用GPIO99$ y: B3 T1 t, U7 [6 p' j0 n/ ?
5.10.3 GPIO映射到中断99# ]" X. u" Y% G6 p* c
5.10.4 GPIO设备树100& m1 }$ U0 |. f5 ~# C6 @
5.11 在内核和用户态之间交换数据100
. L2 X; v1 O" O; m) s5.12 MMIO(内存映射I/O)设备访问101
( V) Y2 Q8 w5 B9 ^$ e$ k' z; F5.13 实验5-2:“RGB LED平台设备”模块103
& x! w! [' j+ y' @# z5.13.1 i.MX7D处理器的硬件描述103
3 X9 d& ~" ^0 {$ L; V5.13.2 SAMA5D2处理器的硬件描述1053 _& X7 ]* Z& D1 {$ p5 G) M  B
5.13.3 BCM2837处理器的硬件描述107  Q5 N6 ?( W* B% r" @2 @1 B
5.13.4 i.MX7D处理器的设备树107: q# y5 q' m. A# b/ l
5.13.5 SAMA5D2处理器的设备树111
  w0 X% C+ N. D7 t: y6 ^8 h5.13.6 BCM2837处理器的设备树114
# c" y$ Y1 S2 s2 |3 G5.13.7 “RGB LED平台设备”模块的代码描述115" A8 a1 t- l0 Y2 m
5.14 代码清单5-2:ledRGB_sam_platform.c119
5 ~6 b1 l; q' c% l9 w  `5.15 ledRGB_sam_platform.ko演示1245 [! r2 x* D1 d- i3 z% D
5.16 平台驱动资源124
  R: x) Q: L/ c5.17 Linux LED类126/ k5 P3 Q; B$ P$ R( l% a0 N
5.18 实验5-3:“RGB LED类”模块1285 w8 b/ o# M  B( C# f
5.18.1 i.MX7D、SAMA5D2和BCM2837处理器的设备树128
: z( J2 j; q  O- I2 b% p9 X1 h5.18.2 “RGB LED类”模块的代码描述130/ w# _' O- E7 R, g- h' I4 u: l
5.19 代码清单5.3:ledRGB_sam_class_platform.c134! A6 s6 K! O2 B7 b0 R  n% ~* P
5.20 ledRGB_sam_class_platform.ko演示137# H% N# \& i- x: i* T  q' v# ~6 P
5.21 用户态中的平台设备驱动1375 j; `9 h3 y$ s# N6 `1 o7 _
5.22 用户定义的I/O:UIO139! ]5 k9 x& y0 w8 }' p5 M9 S2 s2 ]$ N
5.22.1 UIO如何运转140
" W$ i2 I3 P, b8 `8 s5.22.2 内核中的UIO API141- n" i" Y3 C% i: W3 J4 |+ o" b
5.23 实验5-4:“LED UIO平台”模块142
! G$ C1 E5 d: S" l5 s4 i$ n5.23.1 i.MX7D、SAMA5D2和BCM2837处理器的设备树143
  t$ H$ E! G0 p+ W# W5.23.2 “LED UIO平台”模块的代码描述144, g* k' l+ c- k& U1 Q
5.24 代码清单5-4:led_sam_UIO_platform.c1460 N( {* H* ^  k" M* E
5.25 代码清单5-5:UIO_app.c148
+ ]; j  B3 |6 w; F; H- z5.26 led_sam_UIO_platform.ko及UIO_app演示150
% y8 f2 M# `. P4 W- [4 R2 S第6章 I2C从端驱动151
0 J1 g- g! S( e- {' r# Q3 R6.1 Linux I2C 子系统152
* H, _5 {  u* v' v" o& {2 g0 `. N6.2 编写I2C 从端驱动155
: a- f5 V  ^0 A, B6.2.1 注册I2C从端驱动1552 s# D" |9 O/ C
6.2.2 在设备树中声明I2C设备157+ M0 A( S, c- ?" E, m; l% e
6.3 实验6-1:“I2C I/O 扩展设备”模块159  g. v$ c( x" P( I' R5 M! U9 j1 r
6.3.1 i.MX7D处理器的硬件描述159
( a% J" \5 m* |% @7 z& c6.3.2 SAMA5D2 处理器的硬件描述159
( d/ G9 K0 \. v, z6.3.3 BCM2837处理器的硬件描述160
6 s- u( u0 c( k& L# \6.3.4 i.MX7D处理器的设备树161! M, t9 O  O' K
6.3.5 SAMA5D2处理器的设备树162
* O1 W2 D; E/ `6 g" B$ M6.3.6 BCM2837处理器的设备树163
+ t, S. o9 M8 ^+ O0 x. E6.3.7 “I2C I/O扩展设备”模块的代码描述164* Y* s& h0 D- ?. D* I5 g
6.4 代码清单6-1:io_imx_expander.c167; u4 t1 H: ~+ f: V% d2 f
6.5 io_imx_expander.ko演示170$ @1 |0 V6 m( g/ L
6.6 sysfs文件系统171. s' h" O9 |9 y  c
6.7 实验6-2:“I2C多显LED”模块174- c1 o0 d! t. x; E- L2 i
6.7.1 i.MX7D处理器的硬件描述1752 g) R- v* {7 i* t5 P# O! R6 I
6.7.2 SAMA5D2处理器的硬件描述176: p6 _5 w3 C8 P4 n
6.7.3 BCM2837处理器的硬件描述176, j, M3 P$ [4 W6 D6 w- J' J
6.7.4 i.MX7D处理器的设备树177
& r/ h- G: a! H& d$ d6.7.5 SAMA5D2处理器的设备树1782 M# A& k* z0 q
6.7.6 BCM2837处理器的设备树1807 y: s6 C) y- v( }" ^  d
6.7.7 ACPI和设备树的统一设备属性接口1811 V+ j1 f2 h" [9 w" E
6.7.8 “I2C多显LED”模块的代码描述182
# L4 @  a# R# L7 l6.8 代码清单6-2:ltc3206_imx_led_class.c186
- L8 E, [) f1 [4 h! H5 W; a/ _6.9 ltc3206_imx_led_class.ko演示1926 C- c2 i9 W3 R$ L
第7章 处理设备驱动中的中断194
- f( K0 @$ P/ T+ q4 ^7.1 GPIO控制器在Linux内核的中断域196
8 r1 g# ~* ?7 X% q' O# n3 N# U# N7.2 设备树中断处理203
  ?3 Z' h/ [4 e: U) V$ W7.3 在Linux设备驱动中申请中断206( ?5 l) Y" `0 e  E. N
7.4 实验7-1:“按钮中断设备”模块207
* r; d2 p3 m- C1 Y7.4.1 i.MX7D处理器的硬件描述208% s( w# O; a8 R3 B: E4 m" ?- ?
7.4.2 SAMA5D2处理器的硬件描述208- Q) O. K8 @, H; W- H7 i6 A2 R
7.4.3 BCM2837处理器的硬件描述208! z" L) W/ i. J+ W$ D
7.4.4 i.MX7D 处理器的设备树208
9 a5 U1 x2 Q" n" h7.4.5 SAMA5D2 处理器的设备树209
; ]1 \6 a' z+ L! h' G7.4.6 BCM2837 处理器的设备树2106 x* r! d; }7 V1 D6 a2 V" J6 Q
7.4.7 “按钮中断设备”模块的代码描述211
1 L  ?: p; M" g) T$ y7 C1 v7.5 代码清单7-1:int_imx_key.c2131 w7 f  o- j# L
7.6 int_imx_key.ko演示2151 q9 J& f3 \5 q) E5 h
7.7 延迟工作215
, m7 n$ ]8 e1 P! ^  w6 s7.7.1 软中断216
8 h7 Y5 p0 l) ~) l1 x. z# a7.7.2 tasklet217# Z& d9 V8 n0 X% z/ e& S
7.7.3 定时器218
( c2 V  C; S4 y/ L* V$ d% z7.7.4 线程化的中断221
7 L8 p0 `) O6 ^0 s( `8 A0 E0 ]7.7.5 工作队列223
% A: h! t* S* c5 A7.8 内核中的锁226
  j# Y% I8 H! z  ?  H$ e7.8.1 锁和单处理器内核227
, n3 c4 H5 X; m& l! J7 x7.8.2 在中断和进程上下文之间共享自旋锁227# t/ s4 u$ r! x  N# J8 r
7.8.3 在用户上下文使用锁2276 o) a, D7 e+ e' [
7.9 内核中的睡眠228
7 A( ^' _/ x/ t4 [7.10 实验7-2:“睡眠设备”模块2295 w+ T7 ]9 h( ]1 U1 j
7.10.1 i.MX7D处理器的设备树230
$ L2 d+ E8 a' Y8 |. A7.10.2 SAMA5D2处理器的设备树2310 I; h* j# t* l3 V0 |
7.10.3 BCM2837处理器的设备树232& J5 q9 |/ s, S
7.10.4 “睡眠设备”模块的代码描述233: l0 n6 E! y( X0 {& `. z) n' w1 O
7.11 代码清单7-2:int_imx_key_wait.c2367 c+ M/ r; A; b1 L6 g" Q
7.12 int_imx_key_wait.ko演示239
2 n  ]# D, u( x. d0 b# ?$ D7.13 内核线程239
- a. }; Q# R  J9 t9 d7.14 实验7-3:“keyled类”模块240
; I4 x0 j- @/ O7.14.1 i.MX7D处理器的硬件描述240
: x2 l! m% D0 c, S6 q5 v- U7.14.2 SAMA5D2处理器的硬件描述241; k- v1 N9 O* V" N3 ?  y+ m( e
7.14.3 BCM2837处理器的硬件描述241" m8 h1 `; z! S7 e& B3 J9 y
7.14.4 i.MX7D 处理器的设备树2421 A/ _+ W# s9 j# z9 }) @1 p9 H: E
7.14.5 SAMA5D2处理器的设备树245' g6 P9 ~/ p! d- I
7.14.6 BCM2837处理器的设备树247
* j1 r, Z$ I6 i6 a# r4 j7.14.7 “keyled类”模块的代码描述249
: y+ ~. J4 G/ `+ _/ ?7.15 代码清单7-3:keyled_imx_class.c255; A+ q. f% R4 v1 y+ I
7.16 keyled_imx_class.ko演示2648 b; _2 l  V) `0 L! D/ Y
第8章 在Linux驱动中分配内存266% k9 L% ]/ u# c; U( @
8.1 查询ARM的MMU转换表267
$ W! G) C2 z9 u- {8.2 Linux地址的类型271/ j5 {1 |( P) y: G3 A6 ]$ h% Q- n$ a
8.3 用户进程的虚拟地址到物理地址的映射273
+ M7 z1 Q: p( H( c# [4 @8.4 内核的虚拟地址到物理地址的映射273
- |/ p, T' n' w- |# Q9 z8.5 内核内存分配器275
. @, j) X. _9 W) Q# U8.5.1 页面分配器275
* G3 [8 z+ p, w. p+ Y7 I5 K/ ?+ [+ O8.5.2 页面分配器接口275
1 m! R. |" D8 q- o+ ?# |8.5.3 SLAB分配器276# |2 Z$ G5 P9 d& `+ l, Q, h  W
8.5.4 SLAB分配器接口278
6 Z3 r! I9 U0 l7 F) x8.5.5 kmalloc内存分配器279
1 i9 @3 E- E6 l" v# N! `+ |, Y" X8.6 实验8-1:“链表内存分配”模块2809 q6 ?) \+ n2 ]' N
8.7 代码清单8-1:linkedlist_imx_platform.c2837 `. _4 Z( t9 w
8.8 linkedlist_imx_platform.ko演示287
" i' L3 z8 c% e第9章 在Linux设备驱动中使用DMA288, T* f2 j% S) A& Q3 n) [( a
9.1 缓存一致性288, p7 b& S( C0 `% A
9.2 Linux DMA引擎API2899 V% i4 [- n9 u' U) f2 h
9.3 实验9-1:“流式DMA”模块295
" d$ c- J4 i! `; b& ^0 x9.4 代码清单9-1:sdma_imx_m2m.c302
  a0 G. D$ U3 C9.5 sdma_imx_m2m.ko演示 3061 ~- K0 N9 g  F7 Q  h
9.6 DMA分散/聚集映射306# G- ~7 w% {+ U0 Q9 n0 `! R7 G
9.7 实验9-2:“分散/聚集DMA设备”模块 307
7 ]! G' q2 `: g, s4 @  O9.8 代码清单9-2:sdma_imx_sg_m2m.c3105 u  z9 h7 g/ e( [4 ]
9.9 sdma_imx_sg_m2m.ko演示 3155 ^4 R4 U/ D( v& d
9.10 用户态DMA315
- e: I" j: m& l" ]8 F. U; |( u9.11 实验9-3:“用户态DMA”模块317$ r! T; [1 A7 v
9.12 代码清单9-3:sdma_imx_mmap.c319
# J' M' |8 Y- k2 M* k+ z9.13 代码清单9-4:sdma.c323
0 b9 M  o* _% k* G4 E/ u! |9.14 sdma_imx_mmap.ko演示324
9 L8 P8 g% c6 |1 n) u第10章 输入子系统设备驱动框架325
) b9 F2 X, e" J8 x8 w7 d% B10.1 输入子系统驱动程序326
* i! x2 F7 g" ?- m1 R10.2 实验10-1:“输入子系统加速度计”模块327. F& {! c/ d  Q# @4 |9 W; l. `
10.2.1 设备树3297 a0 L& e- l" m9 P9 I/ U* _
10.2.2 使用I2C交互的输入框架330$ x8 P% ^* @! g- a% {
10.2.3 使用输入设备的输入框架331
3 [4 ^6 G' v. `( o( \& x, W* S10.3 代码清单10-1:i2c_imx_accel.c334
7 L& ]- `; N, T- U" C5 h5 Q) V10.4 i2c_imx_accel.ko演示336- x8 P" [6 [; B7 {3 y
10.5 在Linux中使用SPI337
. i: @6 \& y) v3 l10.6 Linux的SPI子系统339java8.com; a- D% U. H5 ]' a" d$ }
10.7 编写SPI从设备驱动程序 342
% Q! z: R0 C& ?! f  R10.7.1 注册SPI从设备驱动程序 342
4 {6 m6 I. Y. M  T5 {, m% R10.7.2 在设备树中声明SPI设备343
! K9 ]" [5 e2 F8 L* |: T, n10.8 实验10-2:“SPI加速度计输入设备”模块346" i% M; n3 P6 Q2 t, W0 r6 \
10.8.1 i.MX7D 处理器的硬件描述347
; P, y, E! s: r; d10.8.2 SAMA5D2处理器的硬件描述 347
6 y; {5 e! y$ W10.8.3 BCM2837处理器的硬件描述 348: e9 E) @9 P& k) ?1 q! o) o
10.8.4 i.MX7D处理器的设备树348
# h, |+ a% [) T& N& E7 @10.8.5 SAMA5D2处理器的设备树 349& c1 c0 k* e4 d2 {4 M" u
10.8.6 BCM2837处理器的设
# R# {% `# A" i& N) L- Q2 S6 x
百度云盘下载地址(完全免费-绝无套路):
游客,如果您要查看本帖隐藏内容请回复

1 N3 u  n, ^/ o0 p% t/ f9 H

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
关注下面的标签,发现更多相似文章
分享到:

回答|共 21 个

都市无眠人

发表于 2023-9-22 16:29:54 | 显示全部楼层

我又来了 白漂开始

打破权力垄断

发表于 2023-9-23 09:08:35 | 显示全部楼层

我来白漂了 多谢

最强雇佣兵书包杜

发表于 2023-9-24 09:21:47 | 显示全部楼层

真的免费下载 难得

锦瑟付流年

发表于 2023-9-24 14:39:45 | 显示全部楼层

不错不错,下载到了

大牙嘎嘎乐

发表于 2023-9-26 08:56:20 | 显示全部楼层

以后学java 就靠java吧了

心近自然暖

发表于 2023-9-26 09:54:30 | 显示全部楼层

免费下载的网站 头一次遇到 不错

港口

发表于 2023-9-27 08:23:46 | 显示全部楼层

白漂来了

经纪人李波

发表于 2023-9-27 14:54:19 | 显示全部楼层

都是干货,谢谢啦

一群骗子有意思

发表于 2023-9-29 15:49:40 | 显示全部楼层

资料免费 给力
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则