标题：嵌入式Linux开发
图书描述
《嵌入式Linux开发(英文版)》是一部全面易懂的嵌入式Linux开发实用指南。本书集中讲解高效、高价值Linux的嵌入式产品所必需的知识，提供最常见技术问题的解决方案，示范如何创建高效的嵌入式Linux环境，并展示如何最有效地使用它，是一本为每一位嵌入式开发人员和工程师而写的全面易懂的实用指南。主要内容包括：处理器基础、Linux内核、内核初始化、系统初始化、Bootloader、设备驱动基础、文件系统、MTD子系统、BusyBox、嵌入式开发环境、开发工具、内核调试技术、调试嵌入式Linux应用程序、Linux与实时等。
作者简介
Christopher Hallinan，是MontaVista公司的FAE(现场应用工程师)，拥有25年以上的网络和通信行业经验，做过多种产品的开发工作，在软件接口方面的深厚的开发背景。加盟MontaVista之前，Chris是一位Linux顾问，拥有4年Linux系统移植、设备驱动和bootloader开发经验，在U-Boot(一个流行的bootloader)项目中做出了杰出的贡献。
图书目录
Chapter1　Introduction1.1　WhyLinux?　2
1.2　EmbeddedLinuxToday　3
1.3　OpenSourceandtheGPL　3
1.3.1　FreeVersusFreedom　4
1.4　StandardsandRelevantBodies　5
1.4.1　LinuxStandardBase　5
1.4.2　OpenSourceDevelopmentLabs　5
1.5　ChapterSummary　7
1.5.1　SuggestionsforAdditionalReading　7Chapter2　YourFirstEmbeddedExperience2.1　EmbeddedorNot?　10
2.1.1　BIOSVersusBootloader　11
2.2　AnatomyofanEmbeddedSystem　12
2.2.1　TypicalEmbeddedLinuxSetup　14
2.2.2　StartingtheTargetBoard　15
2.2.3　BootingtheKernel　16
2.2.4　KernelInitialization:Overview　17
2.2.5　FirstUserSpaceProcess:init　19
2.3　StorageConsiderations　19
2.3.1　FlashMemory　20
2.3.2　NANDFlash　22
2.3.3　FlashUsage　23
2.3.4　FlashFileSystems　24
2.3.5　MemorySpace　25
2.3.6　ExecutionContexts　26
2.3.7　ProcessVirtualMemory　28
2.3.8　Cross-DevelopmentEnvironment　30
2.4　EmbeddedLinuxDistributions　32
2.4.1　CommercialLinuxDistributions　33
2.4.2　Do-It-YourselfLinuxDistributions　34
2.5　ChapterSummary　34
2.5.1　SuggestionsforAdditionalReading　35Chapter3　ProcessorBasics3.1　Stand-aloneProcessors　38
3.1.1　IBM970FX　39
3.1.2　IntelPentiumM　39
3.1.3　FreescaleMPC7448　40
3.1.4　CompanionChipsets　41
3.2　IntegratedProcessors:SystemsonChip　43
3.2.1　PowerPC　44
3.2.2　AMCCPowerPC　44
3.2.3　FreescalePowerPC　47
3.2.4　MIPS　52
3.2.5　BroadcomMIPS　53
3.2.6　AMDMIPS　55
3.2.7　OtherMIPS　56
3.2.8　ARM　56
3.2.9　TIARM　56
3.2.10　FreescaleARM　58
3.2.11　IntelARMXScale　59
3.2.12　OtherARM　60
3.2.13　OtherArchitectures　60
3.3　HardwarePlatforms　61
3.3.1　CompactPCI　61
3.3.2　ATCA　61
3.4　ChapterSummary　62
3.4.1　SuggestionsForAdditionalReading　63Chapter4　TheLinuxKernel4.1　Background　66
4.1.1　KernelVersions　67
4.1.2　KernelSourceRepositories　69
4.2　LinuxKernelConstruction　70
4.2.1　Top-LevelSourceDirectory　70
4.2.2　CompilingtheKernel　71
4.2.3　TheKernelProper:vmlinux　73
4.2.4　KernelImageComponents　75
4.2.5　SubdirectoryLayout　79
4.3　KernelBuildSystem　79
4.3.1　TheDot-Config　80
4.3.2　ConfigurationEditor(s)　82
4.3.3　MakefileTargets　85
4.3.4　KernelConfiguration　88
4.3.5　CustomConfigurationOptions　90
4.3.6　KernelMakefiles　94
4.3.7　KernelDocumentation　95
4.4　ObtainingaLinuxKernel　96
4.4.1　WhatElseDoINeed?　96
4.5　ChapterSummary　97
4.5.1　SuggestionsforAdditionalReading　98Chapter5　KernelInitialization5.1　CompositeKernelImage:PiggyandFriends　100
5.1.1　TheImageObject　103
5.1.2　ArchitectureObjects　104
5.1.3　BootstrapLoader　105
5.1.4　BootMessages　106
5.2　InitializationFlowofControl　109
5.2.1　KernelEntryPoint:head.o　111
5.2.2　KernelStartup:main.c　113
5.2.3　ArchitectureSetup　114
5.3　KernelCommandLineProcessing　114
5.3.1　The__setupMacro　116
5.4　SubsystemInitialization　121
5.4.1　The*__initcallMacros　122
5.5　TheinitThread　123
5.5.1　Initializationviainitcalls　125
5.5.2　FinalBootSteps　126
5.6　ChapterSummary　128
5.6.1　SuggestionsforAdditionalReading　128Chapter6　SystemInitialization6.1　RootFileSystem　130
6.1.1　FHS:FileSystemHierarchyStandard　131
6.1.2　FileSystemLayout　131
6.1.3　MinimalFileSystem　132
6.1.4　TheRootFSChallenge　134
6.1.5　Trial-and-ErrorMethod　135
6.1.6　AutomatedFileSystemBuildTools　135
6.2　Kernel’sLastBootSteps　136
6.2.1　FirstUserSpaceProgram　137
6.2.2　ResolvingDependencies　138
6.2.3　CustomizedInitialProcess　138
6.3　TheInitProcess　139
6.3.1　inittab　142
6.3.2　ExampleWebServerStartupScript　144
6.4　InitialRAMDisk　145
6.4.1　InitialRAMDiskPurpose　146
6.4.2　Bootingwithinitrd　146
6.4.3　BootloaderSupportforinitrd　147
6.4.4　initrdMagic:linuxrc　149
6.4.5　TheinitrdPlumbing　150
6.4.6　BuildinganinitrdImage　151
6.5　Usinginitramfs　152
6.6　Shutdown　153
6.7　ChapterSummary　154
6.7.1　SuggestionsforAdditionalReading　155Chapter7　Bootloaders7.1　RoleofaBootloader　158
7.2　BootloaderChallenges　159
7.2.1　DRAMController　159
7.2.2　FlashVersusRAM　160
7.2.3　ImageComplexity　160
7.2.4　ExecutionContext　163
7.3A　UniversalBootloader:DasU-Boot　164
7.3.1　SystemConfiguration:U-Boot　164
7.3.2　U-BootCommandSets　167
7.3.3　NetworkOperations　167
7.3.4　StorageSubsystems　170
7.3.5　BootingfromDisk:U-Boot　171
7.4　PortingU-Boot　172
7.4.1　EP405U-BootPort　172
7.4.2　U-BootMakefileConfigurationTarget　174
7.4.3　EP405ProcessorInitialization　174
7.4.4　Board-SpecificInitialization　177
7.4.5　PortingSummary　180
7.4.6　U-BootImageFormat　181
7.5　OtherBootloaders　183
7.5.1　Lilo　183
7.5.2　GRUB　184
7.5.3　StillMoreBootloaders　186
7.6　ChapterSummary　186
7.6.1　SuggestionsforAdditionalReading　187Chapter8　DeviceDriverBasics8.1　DeviceDriverConcepts　190
8.1.1　LoadableModules　191
8.1.2　DeviceDriverArchitecture　192
8.1.3　MinimalDeviceDriverExample　192
8.1.4　ModuleBuildInfrastructure　193
8.1.5　InstallingYourDeviceDriver　197
8.1.6　LoadingYourModule　198
8.2　ModuleUtilities　199
8.2.1　insmod　199
8.2.2　ModuleParameters　199
8.2.3　lsmod　201
8.2.4　modprobe　201
8.2.5　depmod　203
8.2.6　rmmod　203
8.2.7　modinfo　204
8.3　DriverMethods　205
8.3.1　DriverFileSystemOperations　205
8.3.2　DeviceNodesandmknod　208
8.4　BringingItAllTogether　209
8.5　DeviceDriversandtheGPL　211
8.6　ChapterSummary　211
8.6.1　SuggestionsforAdditionalReading　212Chapter9　FileSystems9.1　LinuxFileSystemConcepts　214
9.1.1　Partitions　214
9.2　ext2　216
9.2.1　MountingaFileSystem　218
9.2.2　CheckingFileSystemIntegrity　219
9.3　ext3　221
9.4　ReiserFS　224
9.5　JFFS2　225
9.6　cramfs　228
9.7　NetworkFileSystem　230
9.7.1　RootFileSystemonNFS　232
9.8　PseudoFileSystems　234
9.8.1　ProcFileSystem　234
9.8.2　sysfs　238
9.9　OtherFileSystems　240
9.10　BuildingaSimpleFileSystem　242
9.11　ChapterSummary　243
9.11.1　SuggestionsforAdditionalReading　244Chapter10　MTDSubsystem10.1　EnablingMTDServices　248
10.1.1　BuildingMTD　250
10.2　MTDBasics　251
10.2.1　ConfiguringMTD　253
10.3　MTDPartitions　253
10.3.1　RedbootPartitionTablePartitioning　255
10.3.2　KernelCommandLinePartitioning　259
10.3.3　MappingDriver　260
10.3.4　FlashChipDrivers　262
10.3.5　Board-SpecificInitialization　263
10.4　MTDUtilities　265
10.4.1　JFFS2RootFileSystem　268
10.5　ChapterSummary　270
10.5.1　SuggestionsforAdditionalReading　271Chapter11　BusyBox11.1　IntroductiontoBusyBox　274
11.1.1　BusyBoxisEasy　275
11.2　BusyBoxConfiguration　275
11.2.1　Cross-CompilingBusyBox　277
11.3　BusyBoxOperation　278
11.3.1　BusyBoxInit　281
11.3.2　ExamplercSInitializationScript　283
11.3.3　BusyBoxTargetInstallation　284
11.3.4　BusyBoxCommands　286
11.4　ChapterSummary　288
11.4.1　SuggestionsforAdditionalReading　288Chapter12　EmbeddedDevelopment12.1　Cross-DevelopmentEnvironment　290
12.1.1　“HelloWorld”——Embedded　291
12.2　HostSystemRequirements　295
12.2.1　HardwareDebugProbe　296
12.3　HostingTargetBoards　296
12.3.1　TFTPServer　296
12.3.2　BOOTP/DHCPServer　298
12.3.3　NFSServer　300
12.3.4　TargetNFSRootMount　302
12.3.5　U-BootNFSRootMountExample　304
12.4　ChapterSummary　306
12.4.1　SuggestionsforAdditionalReading　307Chapter13　DevelopmentTools13.1　GNUDebugger(GDB)　310
13.1.1　DebuggingaCoreDump　311
13.1.2　InvokingGDB　313
13.1.3　DebugSessioninGDB　315
13.2　DataDisplayDebugger　317
13.3　cbrowser/cscope　319
13.4　TracingandProfilingTools　321
13.4.1　strace　321
13.4.2　straceVariations　325
13.4.3　ltrace　327
13.4.4　ps　328
13.4.5　top　330
13.4.6　mtrace　332
13.4.7　dmalloc　334
13.4.8　KernelOops　337
13.5　BinaryUtilities　340
13.5.1　readelf　340
13.5.2　ExaminingDebugInfoUsingreadelf　342
13.5.3　objdump　344
13.5.4　objcopy　345
13.6　MiscellaneousBinaryUtilities　346
13.6.1　strip　346
13.6.2　addr2line　346
13.6.3　strings　347
13.6.4　ldd　347
13.6.5　nm　348
13.6.6　prelink　349
13.7　ChapterSummary　349
13.7.1　SuggestionsforAdditionalReading　350Chapter14　KernelDebuggingTechniques14.1　ChallengestoKernelDebugging　352
14.2　UsingKGDBforKernelDebugging　353
14.2.1　KGDBKernelConfiguration　355
14.2.2　TargetBootwithKGDBSupport　355
14.2.3　UsefulKernelBreakpoints　358
14.3　DebuggingtheLinuxKernel　360
14.3.1　gdbRemoteSerialProtocol　361
14.3.2　DebuggingOptimizedKernelCode　364
14.3.3　gdbUser-DefinedCommands　369
14.3.4　UsefulKernelgdbMacros　370
14.3.5　DebuggingLoadableModules　378
14.3.6　printkDebugging　383
14.3.7　MagicSysReqKey　384
14.4　Hardware-AssistedDebugging　385
14.4.1　ProgrammingFlashUsingaJTAGProbe　387
14.4.2　DebuggingwithaJTAGProbe　389
14.5　WhenItDoesn’tBoot　392
14.5.1　EarlySerialDebugOutput　393
14.5.2　DumpingtheprintkLogBuffer　394
14.5.3　KGDBonPanic　396
14.6　ChapterSummary　397
14.6.1　SuggestionsforAdditionalReading　398Chapter15　DebuggingEmbedded15.1　TargetDebugging　400
15.2　Remote(Cross)Debugging　400
15.2.1　gdbserver　403
15.3　DebuggingwithSharedLibraries　405
15.3.1　SharedLibraryEventsinGDB　407
15.4　DebuggingMultipleTasks　411
15.4.1　DebuggingMultipleProcesses　411
15.4.2　DebuggingMultithreadedApplications　414
15.4.3　DebuggingBootloader/FlashCode　417
15.5　AdditionalRemoteDebugOptions　417
15.5.1　DebuggingviaSerialPort　418
15.5.2　AttachingtoaRunningProcess　418
15.6　ChapterSummary　419
15.6.1　SuggestionsforAdditionalReading　419Chapter16　PortingLinux16.1　LinuxSourceOrganization　422
16.1.1　TheArchitectureBranch　422
16.2　CustomLinuxforYourBoard　424
16.2.1　PrerequisitesandAssumptions　426
16.2.2　CustomizingKernelInitialization　427
16.2.3　StaticKernelCommandLine　429
16.3　PlatformInitialization　431
16.3.1　EarlyVariableAccess　435
16.3.2　BoardInformationStructure　436
16.3.3　Machine-DependentCalls　438
16.4　PuttingItAllTogether　439
16.4.1　OtherArchitectures　442
16.5　ChapterSummary　442
16.5.1　SuggestionsforAdditionalReading　443Chapter17　LinuxandRealTime17.1　WhatIsRealTime?　446
17.1.1　SoftRealTime　446
17.1.2　HardRealTime　446
17.1.3　LinuxScheduling　447
17.1.4　Latency　447
17.2　KernelPreemption　449
17.2.1　ImpedimentstoPreemption　449
17.2.2　PreemptionModels　451
17.2.3　SMPKernel　452
17.2.4　SourcesofPreemptionLatency　453
17.3　Real-TimeKernelPatch　453
17.3.1　Real-TimeFeatures　455
17.3.2　O(1)Scheduler　458
17.3.3　CreatingaReal-TimeProcess　458
17.3.4　CriticalSectionManagement　459
17.4　DebuggingtheReal-TimeKernel　460
17.4.1　SoftLockupDetection　460
17.4.2　PreemptionDebugging　461
17.4.3　DebugWakeupTiming　461
17.4.4　WakeupLatencyHistory　462
17.4.5　InterruptOffTiming　462
17.4.6　InterruptOffHistory　462
17.4.7　LatencyTracing　464
17.4.8　DebuggingDeadlockConditions　466
17.4.9　RuntimeControlofLockingMode　467
17.5　ChapterSummary　467
17.5.1　SuggestionsforAdditionalReading　467
AppendixA:GNUPublicLicense　469
AppendixB:U-BootConfigurableCommands　479
AppendixC:BusyBoxCommands　483
AppendixD:SDRAMInterfaceConsiderations　491
D.1　SDRAMBasics　492
D.1.1　SDRAMRefresh　493
D.2　Clocking　494
D.3　SDRAMSetup　495
D.4　Summary　500
D.4.1　SuggestionsforAdditionalReading　500
AppendixE:OpenSourceResources　501
AppendixF:SampleBDI-2000ConfigurationFile　505
Index　513
……