嵌入式Linux開發

嵌入式Linux開發

《嵌入式Linux開發》是一部全面易懂的嵌入式Linux開發實用指南圖書。本書適合有一定的C語言編程基礎,對本地區域網路和互連網有基本了解的嵌入式開發人員和工程師閱讀。 主要內容包括處理器基礎、Linux核心、核心初始化、系統初始化、Bootloader、設備驅動基礎、檔案系統、MTD子系統、BusyBox、嵌入式開發環境、開發工具、核心調試技術、調試嵌入式Linux應用程式、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 Introduction

1.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 7

Chapter2 YourFirstEmbeddedExperience

2.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 35

Chapter3 ProcessorBasics

3.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 63

Chapter4 TheLinuxKernel

4.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 98

Chapter5 KernelInitialization

5.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 128

Chapter6 SystemInitialization

6.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 155

Chapter7 Bootloaders

7.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 187

Chapter8 DeviceDriverBasics

8.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 212

Chapter9 FileSystems

9.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 244

Chapter10 MTDSubsystem

10.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 271

Chapter11 BusyBox

11.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 288

Chapter12 EmbeddedDevelopment

12.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 307

Chapter13 DevelopmentTools

13.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 350

Chapter14 KernelDebuggingTechniques

14.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 398

Chapter15 DebuggingEmbedded

15.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 419

Chapter16 PortingLinux

16.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 443

Chapter17 LinuxandRealTime

17.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

……

相關詞條

相關搜尋

熱門詞條

聯絡我們