嵌入式Linux开发(英文版)
![嵌入式Linux开发(英文版)](http://image.wangchao.net.cn/small/product/1247169886654.jpg)
分類: 图书,计算机与互联网,操作系统,Linux,Linux 编程开发,
品牌: Christopher Hallinan
基本信息·出版社:人民邮电出版社
·页码:537 页
·出版日期:2008年
·ISBN:9787115172259
·条形码:9787115172259
·包装版本:1版
·装帧:平装
·开本:16
·正文语种:英语
产品信息有问题吗?请帮我们更新产品信息。
内容简介本书是一部全面易懂的嵌入式Linux开发实用指南。主要内容包括:处理器基础、Linux内核、内核初始化、系统初始化、Bootloader、设备驱动基础、文件系统、MTD子系统、BusyBox、嵌入式开发环境、开发工具、内核调试技术、调试嵌入式Linux应用程序、Linux与实时等。
本书适合有一定的C语言编程基础,对本地局域网和互连网有基本了解的嵌入式开发人员和工程师阅读。
目录
Chapter 1Introduction1
1.1Why Linux?2
1.2Embedded Linux Today3
1.3Open Source and the GPL3
1.3.1Free Versus Freedom4
1.4Standards and Relevant Bodies5
1.4.1Linux Standard Base5
1.4.2Open Source Development Labs5
1.5Chapter Summary7
1.5.1Suggestions for Additional Reading7
Chapter 2Your First Embedded Experience9
2.1Embedded or Not?10
2.1.1BIOS Versus Bootloader11
2.2Anatomy of an Embedded System12
2.2.1Typical Embedded Linux Setup14
2.2.2Starting the Target Board15
2.2.3Booting the Kernel16
2.2.4Kernel Initialization: Overview17
2.2.5First User Space Process: init19
2.3Storage Considerations19
2.3.1Flash Memory20
2.3.2NAND Flash22
2.3.3Flash Usage23
2.3.4Flash File Systems24
2.3.5Memory Space25
2.3.6Execution Contexts26
2.3.7Process Virtual Memory28
2.3.8Cross-Development Environment30
2.4Embedded Linux Distributions32
2.4.1Commercial Linux Distributions33
2.4.2Do-It-Yourself Linux Distributions34
2.5Chapter Summary34
2.5.1Suggestions for Additional Reading35
Chapter 3Processor Basics37
3.1Stand-alone Processors38
3.1.1IBM 970FX39
3.1.2Intel Pentium M39
3.1.3Freescale MPC744840
3.1.4Companion Chipsets41
3.2Integrated Processors: Systems on Chip43
3.2.1PowerPC44
3.2.2AMCC PowerPC44
3.2.3Freescale PowerPC47
3.2.4MIPS52
3.2.5Broadcom MIPS53
3.2.6AMD MIPS55
3.2.7Other MIPS56
3.2.8ARM56
3.2.9TI ARM56
3.2.10Freescale ARM58
3.2.11Intel ARM XScale59
3.2.12Other ARM60
3.2.13Other Architectures60
3.3Hardware Platforms61
3.3.1CompactPCI61
3.3.2ATCA61
3.4Chapter Summary62
3.4.1Suggestions For Additional Reading63
Chapter 4The Linux Kernel——A Different Perspective65
4.1Background66
4.1.1Kernel Versions67
4.1.2Kernel Source Repositories69
4.2Linux Kernel Construction70
4.2.1Top-Level Source Directory70
4.2.2Compiling the Kernel71
4.2.3The Kernel Proper: vmlinux73
4.2.4Kernel Image Components75
4.2.5Subdirectory Layout79
4.3Kernel Build System79
4.3.1The Dot-Config80
4.3.2Configuration Editor(s)82
4.3.3Makefile Targets85
4.3.4Kernel Configuration88
4.3.5Custom Configuration Options90
4.3.6Kernel Makefiles94
4.3.7Kernel Documentation95
4.4Obtaining a Linux Kernel96
4.4.1What Else Do I Need?96
4.5Chapter Summary97
4.5.1Suggestions for Additional Reading98
Chapter 5Kernel Initialization99
5.1Composite Kernel Image: Piggy and Friends100
5.1.1The Image Object103
5.1.2Architecture Objects104
5.1.3Bootstrap Loader105
5.1.4Boot Messages106
5.2Initialization Flow of Control109
5.2.1Kernel Entry Point: head.o111
5.2.2Kernel Startup: main.c113
5.2.3Architecture Setup114
5.3Kernel Command Line Processing114
5.3.1The __setup Macro116
5.4Subsystem Initialization121
5.4.1The *__initcall Macros122
5.5The init Thread123
5.5.1Initialization via initcalls125
5.5.2Final Boot Steps126
5.6Chapter Summary128
5.6.1Suggestions for Additional Reading128
Chapter 6System Initialization129
6.1Root File System130
6.1.1FHS: File System Hierarchy Standard131
6.1.2File System Layout131
6.1.3Minimal File System132
6.1.4The Root FS Challenge134
6.1.5Trial-and-Error Method135
6.1.6Automated File System Build Tools135
6.2Kernel’s Last Boot Steps136
6.2.1First User Space Program137
6.2.2Resolving Dependencies138
6.2.3Customized Initial Process138
6.3The Init Process139
6.3.1inittab142
6.3.2Example Web Server Startup Script144
6.4Initial RAM Disk145
6.4.1Initial RAM Disk Purpose146
6.4.2Booting with initrd146
6.4.3Bootloader Support for initrd147
6.4.4initrd Magic: linuxrc149
6.4.5The initrd Plumbing150
6.4.6Building an initrd Image151
6.5Using initramfs152
6.6Shutdown153
6.7Chapter Summary154
6.7.1Suggestions for Additional Reading155
Chapter 7Bootloaders157
7.1Role of a Bootloader158
7.2Bootloader Challenges159
7.2.1DRAM Controller159
7.2.2Flash Versus RAM160
7.2.3Image Complexity160
7.2.4Execution Context163
7.3 AUniversal Bootloader: Das U-Boot164
7.3.1System Configuration: U-Boot164
7.3.2U-Boot Command Sets167
7.3.3Network Operations167
7.3.4Storage Subsystems170
7.3.5Booting from Disk: U-Boot171
7.4Porting U-Boot172
7.4.1EP405 U-Boot Port172
7.4.2U-Boot Makefile Configuration Target174
7.4.3EP405 Processor Initialization174
7.4.4Board-Specific Initialization177
7.4.5Porting Summary180
7.4.6U-Boot Image Format181
7.5Other Bootloaders183
7.5.1Lilo183
7.5.2GRUB184
7.5.3Still More Bootloaders186
7.6Chapter Summary186
7.6.1Suggestions for Additional Reading187
Chapter 8Device Driver Basics189
8.1Device Driver Concepts190
8.1.1Loadable Modules191
8.1.2Device Driver Architecture192
8.1.3Minimal Device Driver Example192
8.1.4Module Build Infrastructure193
8.1.5Installing Your Device Driver197
8.1.6Loading Your Module198
8.2Module Utilities199
8.2.1insmod199
8.2.2Module Parameters199
8.2.3lsmod201
8.2.4modprobe201
8.2.5depmod203
8.2.6rmmod203
8.2.7modinfo204
8.3Driver Methods205
8.3.1Driver File System Operations205
8.3.2Device Nodes and mknod208
8.4Bringing It All Together209
8.5Device Drivers and the GPL211
8.6Chapter Summary211
8.6.1Suggestions for Additional Reading212
Chapter 9File Systems213
9.1Linux File System Concepts214
9.1.1Partitions214
9.2ext2216
9.2.1Mounting a File System218
9.2.2Checking File System Integrity219
9.3ext3221
9.4ReiserFS224
9.5JFFS2225
9.6cramfs228
9.7Network File System230
9.7.1Root File System on NFS232
9.8Pseudo File Systems234
9.8.1Proc File System234
9.8.2sysfs238
9.9Other File Systems240
9.10Building a Simple File System242
9.11Chapter Summary243
9.11.1Suggestions for Additional Reading244
Chapter 10MTD Subsystem247
10.1Enabling MTD Services248
10.1.1Building MTD250
10.2MTD Basics251
10.2.1Configuring MTD253
10.3MTD Partitions253
10.3.1Redboot Partition Table Partitioning 255
10.3.2Kernel Command Line Partitioning259
10.3.3Mapping Driver260
10.3.4Flash Chip Drivers262
10.3.5Board-Specific Initialization263
10.4MTD Utilities265
10.4.1JFFS2 Root File System268
10.5Chapter Summary270
10.5.1Suggestions for Additional Reading271
Chapter 11BusyBox273
11.1Introduction to BusyBox274
11.1.1BusyBox is Easy275
11.2BusyBox Configuration275
11.2.1Cross-Compiling BusyBox277
11.3BusyBox Operation278
11.3.1BusyBox Init281
11.3.2Example rcS Initialization Script283
11.3.3BusyBox Target Installation284
11.3.4BusyBox Commands286
11.4Chapter Summary288
11.4.1Suggestions for Additional Reading288
Chapter 12Embedded Development Environment289
12.1Cross-Development Environment290
12.1.1“Hello World”——Embedded291
12.2Host System Requirements295
12.2.1Hardware Debug Probe296
12.3Hosting Target Boards296
12.3.1TFTP Server296
12.3.2BOOTP/DHCP Server298
12.3.3NFS Server300
12.3.4Target NFS Root Mount302
12.3.5U-Boot NFS Root Mount Example304
12.4Chapter Summary306
12.4.1Suggestions for Additional Reading307
Chapter 13Development Tools309
13.1GNU Debugger (GDB)310
13.1.1Debugging a Core Dump311
13.1.2Invoking GDB313
13.1.3Debug Session in GDB315
13.2Data Display Debugger317
13.3cbrowser/cscope319
13.4Tracing and Profiling Tools321
13.4.1strace321
13.4.2strace Variations325
13.4.3ltrace327
13.4.4ps328
13.4.5top330
13.4.6mtrace332
13.4.7dmalloc334
13.4.8Kernel Oops337
13.5Binary Utilities340
13.5.1readelf340
13.5.2Examining Debug Info Using readelf342
13.5.3objdump344
13.5.4objcopy345
13.6Miscellaneous Binary Utilities346
13.6.1strip346
13.6.2addr2line346
13.6.3strings347
13.6.4ldd347
13.6.5nm348
13.6.6prelink349
13.7Chapter Summary349
13.7.1Suggestions for Additional Reading350
Chapter 14Kernel Debugging Techniques351
14.1Challenges to Kernel Debugging352
14.2Using KGDB for Kernel Debugging353
14.2.1KGDB Kernel Configuration355
14.2.2Target Boot with KGDB Support355
14.2.3Useful Kernel Breakpoints358
14.3Debugging the Linux Kernel360
14.3.1gdb Remote Serial Protocol361
14.3.2Debugging Optimized Kernel Code364
14.3.3gdb User-Defined Commands369
14.3.4Useful Kernel gdb Macros370
14.3.5Debugging Loadable Modules378
14.3.6printk Debugging383
14.3.7Magic SysReq Key384
14.4Hardware-Assisted Debugging385
14.4.1Programming Flash Using a JTAG Probe387
14.4.2Debugging with a JTAG Probe389
14.5When It Doesn’t Boot392
14.5.1Early Serial Debug Output393
14.5.2Dumping the printk Log Buffer394
14.5.3KGDB on Panic396
14.6Chapter Summary397
14.6.1Suggestions for Additional Reading398
Chapter 15Debugging Embedded Linux Applications399
15.1Target Debugging400
15.2Remote (Cross) Debugging400
15.2.1gdbserver403
15.3Debugging with Shared Libraries405
15.3.1Shared Library Events in GDB407
15.4Debugging Multiple Tasks411
15.4.1Debugging Multiple Processes411
15.4.2Debugging Multithreaded Applications414
15.4.3Debugging Bootloader/Flash Code417
15.5Additional Remote Debug Options417
15.5.1Debugging via Serial Port418
15.5.2Attaching to a Running Process418
15.6Chapter Summary419
15.6.1Suggestions for Additional Reading419
Chapter 16Porting Linux421
16.1Linux Source Organization422
16.1.1The Architecture Branch422
16.2Custom Linux for Your Board424
16.2.1Prerequisites and Assumptions426
16.2.2Customizing Kernel Initialization427
16.2.3Static Kernel Command Line429
16.3Platform Initialization431
16.3.1Early Variable Access435
16.3.2Board Information Structure436
16.3.3Machine-Dependent Calls438
16.4Putting It All Together439
16.4.1Other Architectures442
16.5Chapter Summary442
16.5.1Suggestions for Additional Reading443
Chapter 17Linux and Real Time445
17.1What Is Real Time?446
17.1.1Soft Real Time446
17.1.2Hard Real Time446
17.1.3Linux Scheduling447
17.1.4Latency447
17.2Kernel Preemption449
17.2.1Impediments to Preemption449
17.2.2Preemption Models451
17.2.3SMP Kernel452
17.2.4Sources of Preemption Latency453
17.3Real-Time Kernel Patch453
17.3.1Real-Time Features455
17.3.2O(1) Scheduler458
17.3.3Creating a Real-Time Process458
17.3.4Critical Section Management459
17.4Debugging the Real-Time Kernel460
17.4.1Soft Lockup Detection460
17.4.2Preemption Debugging461
17.4.3Debug Wakeup Timing461
17.4.4Wakeup Latency History462
17.4.5Interrupt Off Timing462
17.4.6Interrupt Off History462
17.4.7Latency Tracing464
17.4.8Debugging Deadlock Conditions466
17.4.9Runtime Control of Locking Mode467
17.5Chapter Summary467
17.5.1Suggestions for Additional Reading467
Appendix A: GNU Public License469
Appendix B: U-Boot Configurable Commands479
Appendix C: BusyBox Commands483
Appendix D: SDRAM Interface Considerations491
D.1SDRAM Basics492
D.1.1SDRAM Refresh493
D.2Clocking494
D.3SDRAM Setup495
D.4Summary500
D.4.1Suggestions for Additional Reading500
Appendix E: Open Source Resources501
Appendix F: Sample BDI-2000 Configuration File505
Index513
……[看更多目录]
文摘�