Android bottom driver analysis and porting
Introduction
The content of this book is divided into 3 parts, a total of 22 chapters, which explain the typical driver knowledge in the Android underlying system step by step. This book starts from obtaining the source code and analyzing the source code structure, and then explains the basic knowledge of the basic knowledge, the Android proprietary driver, and the typical driver transplantation. When explaining each driver, start with the architecture of the Android system, from the kernel analysis to the specific driver implementation, then from the JNI layer architecture analysis to the interface application of the Java application layer, and finally to the transplantation and development of the typical drive system, and thoroughly analyze it. The complete implementation process of each typical drive system is described. This book covers almost all the content of Android underlying driver, the explanation method is easy to understand, and the content is informative. It is not only suitable for the learning of application masters, but also particularly conducive to the learning and digestion of beginners.
This book is suitable as a learning book for Android driver developers, Linux developers, Android low-level learners, Android enthusiasts, Android source code analysts, and Android application developers, as well as related training schools and colleges. Teaching books for related majors in colleges and universities.
Book Catalog
The first basic knowledge article
Chapter 1 Android underlying development foundation.............. ......... 2
1.1 Introduction to Android system............................. ......... 2
1.2 Introduction to Android system architecture............ .. 2
1.3 Get the Android source code... . 5
1.5 Compile the source code...................................... ............ 20
Chapter 2 Basics of Android Driver Development........ 28< /p>
2.1 Driver Basics........................................ .. 28
2.2 Basics of Linux Development... .... 30
2.3 Linux kernel structure........................ ...... 35
2.4 Analyze the Linux kernel source code............................... 40
2.5 How to learn Linux kernel...........................50
2.6 Type 3 drivers in Linux...54
2.7 Basics of Android system transplantation... ...65
2.8 The interface between kernel space and user space.......... 67
2.9 Writing JNI method...................................... .... 72
Chapter 3 Mainstream Kernel System Analysis............76
p>3.1 Goldfish kernel and driver analysis... ... 76
3.2 MSM kernel and driver architecture............ 85
Part 2 Android Proprietary Drivers
Chapter 4 Analyze the Hardware Abstraction Layer......................... ...... 98
4.1 HAL basics....................... ................98
4.2 Analysis of HAL module architecture..................... .... 101
4.3 Analyze the file hardware.c ........................ 103< /p>
4.4 Analyze the loading process of the hardware abstraction layer...106
4.5 Analyze the hardware access service... .........................109
4.6 Analyze the Mokoid example............. ..................... 111
4.7 HAL and system migration...... .... 120
4.8 Develop your own HAL driver ... .. 126
Chapter 5 Detailed explanation of Binder communication driver...130
5.1 Analysis of Binder Driver........................ 130
5.2 Binder package library driver........ ........................ 153
5.3 Initialize the Java layer Binder framework............ ... 160
5.4 The driver of the entity object binder_node.............. 163
5.5 The local object BBinder driver... ......................167
5.6 Reference object binder_ref driver............... ....... 177
5.7 Proxy object BpBinder driver........ ............... 180
Chapter 6 Detailed Explanation of Logger Drive Architecture............. 185
6.1 Analyze the Logger driver............ 185
6.2 Log Library Liblog driver ...201
6.3 Log writing interface driver. ...............206
Chapter 7 Ashmem driver detailed explanation..... ..... 217
7.1 Analysis of Ashmem driver ... ....... 217
7.2 C++ access interface layer.............................. ....... 231
7.3 Interface layer that implements Java access....................... 243
7.4 Actual combat exercise-reading data in kernel space...247
Chapter 8 Setting up a test environment... ... 250
8.1 Setting up the S3C6410 development environment..................... .. 250
8.2 Introduction to other development environments......................257
p>8.3 The method of test drive............ 259
Chapter 9 Low Memory Management Driver............. 266
9.1 OOM Mechanism..............................................266 p>
9.2 Low Memory Killer architecture mechanism of Android system....... 273
9.3 Detailed explanation of Low Memory Killer driver............... 274
9.4 Actual combat exercise-Obtaining objects from the memory pool... 280
9.5 Actual combat exercise- —Use the user program to read the data in the kernel space....... 282
Chapter 3 Typical Driver Porting
Chapter 10 Power Management Driver..... ..........286
10.1 Power Management Architecture Foundation............ . 286
10.2 Analysis of the Framework layer.............. 287
10.3 Analysis of JNI layer structure............ 309
10.4 Analysis of Kernel layer architecture...... 311
10.5 wakelock and early_suspend............ ... 319
10.6 Battery system architecture and management..............323
10.7 JobScheduler energy-saving scheduling mechanism..... ...........331
Chapter 11 PMEM memory driver architecture............339
11.1 Preliminary PMEM.........................................339 p>
11.2 PMEM driver architecture........................341
11.3 User space interface......................................367
11.4 Actual combat exercise-adding PMEM to the kernel... 370
11.5 Actual combat exercise-adding PMEM to the kernel... ......372
11.6 Actual combat exercise-PMEM application in Camera...... 373
11.7 Actual combat exercise-PMEM transplantation and testing. .. 375
Chapter 12 Debugging Mechanism Drives Ram Console ........ 378
12.1 Introduction to Ram Console............ .................... 378
12.2 Actual Now Ram Console................................378
Chapter 13 USB Gadget driver. .......................389
13.1 Analyze the USB driver of the Linux kernel.....389
< p>13.2 Detailed explanation of USB Gadget driver architecture...40113.3 Practical drill-USB driver routine analysis... 437
13.4 Actual combat drill... ...450
Chapter 14 Time Device Driver........................453
< p>14.1 Timed Output drive architecture........ 453Practical exercise-to realize the read and write operations of the device.. ........460
14.2 Timed Gpio driver architecture..........................461
p>Chapter 15 Alarm System Drive Alarm .......467
15.1 Basics of Alarm System........ ............... 467
15.2 RTC driver architecture.......... ..... 468
15.3 Alarm drive architecture........ ................. 469
15.4 JNI layer detailed explanation... ...... 491
15.5 Java layer detailed explanation...... ............... 493
15.6 The concrete realization of the simulator environment......... .............503
15.7 Actual combat drills.......................... ..... 504
Chapter 16 Vibrator Drive Architecture and Migration ...512
16.1 Vibrator system architecture ... .............512
16.2 Hardware abstraction layer architecture........................ .......... 513
16.3 JNI layer architecture............................ ...............514
16.4 Java layer architecture....................... .........515
16.5 Actual Combat Drill-Transplanting Vibrator System...519
p>16.6 Actual combat exercise-Vibrator drive on the MSM platform...........520
16.7 Actual combat exercise-Vibrator drive on the MTK platform.. .......... 523
16.8 Actual combat exercise-transplanting the vibrator driver...........526
Chapter 17 Input System driver............................ 527
17.1 Input system architecture analysis... ..........................527
17.2 The method of transplanting input system driver......... ......... 528
17.3 Input system driver detailed explanation.............. 529
17.4 Hardware abstraction Detailed explanation of layers........ 551
17.5 Actual combat drill... ........................................... 561
Chapter 18 LCD Display Driver...573
18.1 LCD system introduction. ....................................573
18.2 Detailed explanation of the FrameBuffer core layer. ..... 573
18.3 Detailed Explanation of Hardware Abstraction Layer... ................. 6 00
18.4 Detailed explanation of FrameBuffer driver in Goldfish...........607
18.5 Driver using Gralloc module........ .... 610
18.6 MSM display driver in Qualcomm processor........ 620
18.7 Detailed explanation of Gralloc driver in MSM..... . 623
The realization of the display driver in the 18.8 OMAP processor...630
18.9 Actual combat drill............... ...............633
Chapter 19 Audio System Driver..... ..........664
19.1 Audio system architecture basis............ ........ 664
19.2 Detailed audio system hierarchy......... ...........668
19.3 Porting Audio system........................... ....... 672
19.4 Practical drill——Realize Audio driver on MSM platform..........680
19.5 Practical drill——in OSS platform realizes Audio driver.............684
19.6 Practical drill——Realize Audio system on ALSA platform...........692< /p>
Chapter 20 Detailed Explanation of Overlay System Driver...710
20.1 Video output system structure...... ........................710
20.2 Transplant Overlay System.............. ...711
20.3 Detailed hardware abstraction layer... ..............711
20.4 Implementation of Overlay hardware abstraction layer......715
p>20.5 Actual Combat Exercise-Realizing Overlay System on OMAP Platform.........717
< p>20.6 Actual Combat Exercise-Calling Overlay HAL at the System Layer...724Chapter 21 Camera Driver... ........................ 729
21.1 The structure of the Camera system....... ......729
21.2 Porting Camera System...... ......737
21.3 Actual Combat Drill-Realizing Camera Driver on MSM Platform....... 747
21.4 Actual Combat Exercise-Implementing Camera Driver on OMAP Platform.........750
21.5 Android Implementing S5PV210 FIMC Driver............. 751
Chapter 22 Bluetooth System Driver...764
< p>22.1 Bluetooth module in Android system......76422.3 Detailed explanation of Bluetooth low energy protocol stack......... .............767
22.4 BlueDroid in Android ......................769< /p>
22.5 Operation process of Android Bluetooth module............783
Latest: BREW (English word)
Next: Low-level development