xviEmbedded Linux Primer, Second Edition26710.2MTDPartitions10.2.1..269Redboot Partition Table Partitioning.10.2.2.273Kernel Command-LinePartitioning27410.2.3MappingDriver.10.2.4.276FlashChipDrivers10.2.5..276Board-Specific Initialization.....27910.3MTDUtilities28110.3.1JFFS2RootFileSystem.28410.4UBIFileSystem..284Configuring for UBIFS...10.4.1..28410.4.2BuildingaUBIFSImage.28710.4.3UsingUBIFS as theRoot FileSystem:..28710.5Summary10.5.1Suggestions forAdditional Reading.288.289Chapter11BusyBox..29011.1 Introduction to BusyBox...29111.1.1 BusyBox Is Easy...29111.2 BusyBoxConfiguration.29311.2.1Cross-Compiling BusyBox..29311.3BusyBoxOperation..29711.3.1BusyBoxinit29911.3.2SamplercsInitialization Script..30011.3.3BusyBoxTarget Installation..30211.3.4BusyBoxApplets.11.4Summary...30330411.4.1Suggestions for Additional Reading
ptg xvi Embedded Linux Primer, Second Edition 10.2 MTD Partitions . . 267 10.2.1 Redboot Partition Table Partitioning . 269 10.2.2 Kernel Command-Line Partitioning . 273 10.2.3 Mapping Driver . 274 10.2.4 Flash Chip Drivers . 276 10.2.5 Board-Specific Initialization . 276 10.3 MTD Utilities . . 279 10.3.1 JFFS2 Root File System . 281 10.4 UBI File System . . 284 10.4.1 Configuring for UBIFS . 284 10.4.2 Building a UBIFS Image . 284 10.4.3 Using UBIFS as the Root File System . 287 10.5 Summary . . 287 10.5.1 Suggestions for Additional Reading . 288 Chapter 11 BusyBox .289 11.1 Introduction to BusyBox . . 290 11.1.1 BusyBox Is Easy . 291 11.2 BusyBox Configuration . . 291 11.2.1 Cross-Compiling BusyBox . 293 11.3 BusyBox Operation . . 293 11.3.1 BusyBox init . . 297 11.3.2 Sample rcS Initialization Script . 299 11.3.3 BusyBox Target Installation . . 300 11.3.4 BusyBox Applets . . 302 11.4 Summary . . 303 11.4.1 Suggestions for Additional Reading . . 304 Download at www.wowebook.com
Contentsxvii.305Chapter12EmbeddedDevelopmentEnvironment...30612.1Cross-DevelopmentEnvironment.12.1.1HelloWorld”Embedded..30731112.2HostSystemRequirements.31112.2.1HardwareDebugProbe..31212.3Hosting Target Boards..31212.3.1TFTPServer12.3.2BOOTP/DHCPServer.313..31612.3.3NFSServer..31812.3.4TargetNFSRootMount.12.3.5320U-BootNFSRootMountExample32212.4Summary.32312.4.1Suggestions for Additional Reading....325Chapter13 DevelopmentTools32613.11GNUDebugger(GDB)..32713.1.1Debugging a Core Dump1.32913.1.2Invoking GDB...13.1.3DebugSessioninGDB.33113.2.333Data DisplayDebugger13.3..335cbrowser/cscope.33713.4Tracing and Profiling Tools.13.4.1.337strace13.4.2....341strace Variations...13.4.3...343ltrace34413.4.4ps13.4.5346top
ptg Contents xvii Chapter 12 Embedded Development Environment .305 12.1 Cross-Development Environment . . 306 12.1.1 “Hello World” Embedded . . 307 12.2 Host System Requirements . . 311 12.2.1 Hardware Debug Probe . . 311 12.3 Hosting Target Boards . . 312 12.3.1 TFTP Server . . 312 12.3.2 BOOTP/DHCP Server. . 313 12.3.3 NFS Server . . 316 12.3.4 Target NFS Root Mount . . 318 12.3.5 U-Boot NFS Root Mount Example . . 320 12.4 Summary . . 322 12.4.1 Suggestions for Additional Reading . . 323 Chapter 13 Development Tools .325 13.1 GNU Debugger (GDB) . . 326 13.1.1 Debugging a Core Dump . 327 13.1.2 Invoking GDB . 329 13.1.3 Debug Session in GDB . 331 13.2 Data Display Debugger . 333 13.3 cbrowser/cscope . 335 13.4 Tracing and Profiling Tools . . 337 13.4.1 strace . 337 13.4.2 strace Variations . 341 13.4.3 ltrace . 343 13.4.4 ps . 344 13.4.5 top . 346 Download at www.wowebook.com
xvili Embedded Linux Primer, Second Edition.34813.4.6mtrace13.4.7..350dmalloc...35313.4.8KernelOops.35513.5BinaryUtilities.35513.5.1readelf13.5.2...357Examining Debug Information Usingreadelf...35913.5.3objdump13.5.4360objcopy13.6Miscellaneous BinaryUtilities..36113.6.1..361strip13.6.2..361addr2line13.6.3.362strings13.6.4..3621dd.13.6.5..363nm13.6.6.364prelink..36413.7Summary..36513.7.1Suggestions for Additional Reading......367Chapter14 KernelDebuggingTechniques.36814.1Challenges toKernel Debuggin...36914.2 Using KGDB for Kernel Debugging -.....37114.2.1KGDBKernelConfiguration.37214.2.2TargetBootwithKGDBSupport...37614.2.3Useful Kernel Breakpoints.14.2.4Sharinga ConsoleSerial PortwithKGDB..37714.2.5..379Debugging Very Early Kernel Code ..38014.2.6KGDB Support in the Mainline Kernel
ptg xviii Embedded Linux Primer, Second Edition 13.4.6 mtrace . . 348 13.4.7 dmalloc . . 350 13.4.8 Kernel Oops . . 353 13.5 Binary Utilities . . 355 13.5.1 readelf . . 355 13.5.2 Examining Debug Information Using readelf . . 357 13.5.3 objdump . . 359 13.5.4 objcopy . . 360 13.6 Miscellaneous Binary Utilities . . 361 13.6.1 strip . 361 13.6.2 addr2line . . 361 13.6.3 strings . . 362 13.6.4 ldd . . 362 13.6.5 nm . . 363 13.6.6 prelink . . 364 13.7 Summary . . 364 13.7.1 Suggestions for Additional Reading . . 365 Chapter 14 Kernel Debugging Techniques .367 14.1 Challenges to Kernel Debugging . 368 14.2 Using KGDB for Kernel Debugging . . 369 14.2.1 KGDB Kernel Configuration . . 371 14.2.2 Target Boot with KGDB Support . . 372 14.2.3 Useful Kernel Breakpoints . 376 14.2.4 Sharing a Console Serial Port with KGDB . 377 14.2.5 Debugging Very Early Kernel Code . 379 14.2.6 KGDB Support in the Mainline Kernel . 380 Download at www.wowebook.com
Contentsxix38114.3KernelDebuggingTechniques..38214.3.1gdbRemoteSerialProtocol14.3.2Debugging Optimized Kernel Code....38514.3.3392GDBUser-DefinedCommands14.3.4.393UsefulKernelGDBMacros...40214.3.5Debugging Loadable Modules....40714.3.6printkDebugging.14.3.7409Magic SysReqKey..41014.4 Hardware-Assisted Debugging..41114.4.1ProgrammingFlashUsinga JTAGProbe.41314.4.2Debugging with a JTAG Probe41714.5WhenItDoesn'tBoot..41714.5.1Early Serial Debug Output ...41714.5.2Dumpingtheprintk Log Buffer42014.5.3KGDB on Panic..42114.6Summary42214.6.1SuggestionsforAdditional Reading..423Chapter 15 Debugging Embedded Linux Applications.42415.1TargetDebugging.42415.2 Remote (Cross) Debugging.42715.2.1gdbserver.42915.3 Debugging with Shared Libraries...43115.3.1SharedLibraryEventsinGDB...43515.4DebuggingMultipleTasks.43515.4.1DebuggingMultipleProcesses43815.4.2DebuggingMultithreadedApplications15.4.3.441Debugging Bootloader/FlashCode
ptg Contents xix 14.3 Kernel Debugging Techniques . . 381 14.3.1 gdb Remote Serial Protocol . 382 14.3.2 Debugging Optimized Kernel Code . 385 14.3.3 GDB User-Defined Commands . 392 14.3.4 Useful Kernel GDB Macros . 393 14.3.5 Debugging Loadable Modules. . 402 14.3.6 printk Debugging . 407 14.3.7 Magic SysReq Key . 409 14.4 Hardware-Assisted Debugging . . 410 14.4.1 Programming Flash Using a JTAG Probe . 411 14.4.2 Debugging with a JTAG Probe . 413 14.5 When It Doesn’t Boot . . 417 14.5.1 Early Serial Debug Output . 417 14.5.2 Dumping the printk Log Buffer . 417 14.5.3 KGDB on Panic . . 420 14.6 Summary . . 421 14.6.1 Suggestions for Additional Reading . 422 Chapter 15 Debugging Embedded Linux Applications .423 15.1 Target Debugging . 424 15.2 Remote (Cross) Debugging . . 424 15.2.1 gdbserver . 427 15.3 Debugging with Shared Libraries . . 429 15.3.1 Shared Library Events in GDB . 431 15.4 Debugging Multiple Tasks . . 435 15.4.1 Debugging Multiple Processes . 435 15.4.2 Debugging Multithreaded Applications . 438 15.4.3 Debugging Bootloader/Flash Code . 441 Download at www.wowebook.com
Embedded Linux Primer, Second EditionX44215.5AdditionalRemoteDebugOptions...44215.5.1 Debugging Using a Serial Port.....44215.5.2Attachingto a RunningProcess.44315.6Summary.44415.6.1Suggestions forAdditional Reading...445Chapter16Open SourceBuild Systems..44616.1WhyUseaBuildSystem?.44716.2Scratchbox..44716.2.1Installing Scratchbox...44816.2.2Creating a Cross-Compilation Target.16.3451Buildroot...45116.3.1Buildroot Installation...45116.3.2Buildroot Configuration...45216.3.3Buildroot Build..45416.4OpenEmbedded....45516.4.1OpenEmbeddedComposition.....45616.4.2BitBake Metadata...45616.4.3Recipe Basics.16.4.4Metadata Tasks..46016.4.5..461Metadata Classes..46216.4.6ConfiguringOpenEmbedded46316.4.7Building Images.46416.5Summary464Suggestions for Additional Reading.16.5.1
ptg xx Embedded Linux Primer, Second Edition 15.5 Additional Remote Debug Options . . 442 15.5.1 Debugging Using a Serial Port . . 442 15.5.2 Attaching to a Running Process . . 442 15.6 Summary . . 443 15.6.1 Suggestions for Additional Reading . . 444 Chapter 16 Open Source Build Systems .445 16.1 Why Use a Build System? . 446 16.2 Scratchbox. . 447 16.2.1 Installing Scratchbox . . 447 16.2.2 Creating a Cross-Compilation Target . . 448 16.3 Buildroot . . 451 16.3.1 Buildroot Installation . . 451 16.3.2 Buildroot Configuration . 451 16.3.3 Buildroot Build . 452 16.4 OpenEmbedded . . 454 16.4.1 OpenEmbedded Composition . 455 16.4.2 BitBake Metadata . 456 16.4.3 Recipe Basics . 456 16.4.4 Metadata Tasks . 460 16.4.5 Metadata Classes . 461 16.4.6 Configuring OpenEmbedded . 462 16.4.7 Building Images . 463 16.5 Summary . . 464 16.5.1 Suggestions for Additional Reading . . 464 Download at www.wowebook.com