目錄(182章)
倒序
- 封面
- 版權頁
- Credits
- Foreword
- About the Author
- About the Reviewers
- www.PacktPub.com
- Support files eBooks discount offers and more
- Preface
- What this book covers
- What you need for this book
- Who this book is for
- Conventions
- Reader feedback
- Customer support
- Chapter 1. Starting Out
- Selecting the right operating system
- The players
- Project lifecycle
- Open source
- Hardware for embedded Linux
- Hardware used in this book
- Software used in this book
- Summary
- Chapter 2. Learning About Toolchains
- What is a toolchain?
- Types of toolchain - native versus cross toolchain
- Choosing the C library
- Finding a toolchain
- Anatomy of a toolchain
- Other tools in the toolchain
- Looking at the components of the C library
- Linking with libraries: static and dynamic linking
- The art of cross compiling
- Problems with cross compiling
- Summary
- Chapter 3. All About Bootloaders
- What does a bootloader do?
- The boot sequence
- Booting with UEFI firmware
- Moving from bootloader to kernel
- Introducing device trees
- Choosing a bootloader
- U-Boot
- Barebox
- Summary
- Chapter 4. Porting and Configuring the Kernel
- What does the kernel do?
- Choosing a kernel
- Building the kernel
- Compiling
- Cleaning kernel sources
- Booting your kernel
- Porting Linux to a new board
- Additional reading
- Summary
- Chapter 5. Building a Root Filesystem
- What should be in the root filesystem?
- Programs for the root filesystem
- Libraries for the root filesystem
- Device nodes
- The proc and sysfs filesystems
- Kernel modules
- Transfering the root filesystem to the target
- Creating a boot ramdisk
- The init program
- Configuring user accounts
- Starting a daemon process
- A better way of managing device nodes
- Configuring the network
- Creating filesystem images with device tables
- Mounting the root filesystem using NFS
- Using TFTP to load the kernel
- Additional reading
- Summary
- Chapter 6. Selecting a Build System
- No more rolling your own embedded Linux
- Build systems
- Package formats and package managers
- Buildroot
- The Yocto Project
- Further reading
- Summary
- Chapter 7. Creating a Storage Strategy
- Storage options
- Accessing flash memory from the bootloader
- Accessing flash memory from Linux
- Filesystems for flash memory
- Filesystems for NOR and NAND flash memory
- Filesystems for managed flash
- Read-only compressed filesystems
- Temporary filesystems
- Making the root filesystem read-only
- Filesystem choices
- Updating in the field
- Further reading
- Summary
- Chapter 8. Introducing Device Drivers
- The role of device drivers
- Character devices
- Block devices
- Network devices
- Finding out about drivers at runtime
- Finding the right device driver
- Device drivers in user-space
- Writing a kernel device driver
- Loading kernel modules
- Discovering hardware configuration
- Additional reading
- Summary
- Chapter 9. Starting up - the init Program
- After the kernel has booted
- Introducing the init programs
- BusyBox init
- System V init
- systemd
- Further reading
- Summary
- Chapter 10. Learning About Processes and Threads
- Process or thread?
- Processes
- Threads
- Scheduling
- Further reading
- Summary
- Chapter 11. Managing Memory
- Virtual memory basics
- Kernel space memory layout
- User space memory layout
- Process memory map
- Swap
- Mapping memory with mmap
- How much memory does my application use?
- Per-process memory usage
- Identifying memory leaks
- Running out of memory
- Further reading
- Summary
- Chapter 12. Debugging with GDB
- The GNU debugger
- Preparing to debug
- Debugging applications using GDB
- Remote debugging using gdbserver
- Starting to debug
- Debugging shared libraries
- Just-in-time debugging
- Debugging forks and threads
- Core files
- GDB user interfaces
- Debugging kernel code
- Additional reading
- Summary
- Chapter 13. Profiling and Tracing
- The observer effect
- Beginning to profile
- Profiling with top
- Introducing perf
- Other profilers: OProfile and gprof
- Tracing events
- Introducing Ftrace
- Using LTTng
- Using Valgrind for application profiling
- Callgrind
- Helgrind
- Using strace to show system calls
- Summary
- Chapter 14. Real-time Programming
- What is real-time?
- Identifying the sources of non-determinism
- Understanding scheduling latency
- Kernel preemption
- The real-time Linux kernel (PREEMPT_RT)
- Threaded interrupt handlers
- Preemptible kernel locks
- Getting the PREEMPT_RT patches
- High resolution timers
- Avoiding page faults in a real-time application
- Interrupt shielding
- Measuring scheduling latencies
- Further reading
- Summary
- Index 更新時間:2021-07-30 09:45:30
推薦閱讀
- Python概率統計
- Computer Vision for the Web
- Mastering Concurrency in Go
- VMware vSphere 6.7虛擬化架構實戰指南
- 從學徒到高手:汽車電路識圖、故障檢測與維修技能全圖解
- Learning Salesforce Einstein
- 從零開始學C語言
- Instant Nancy Web Development
- R數據科學實戰:工具詳解與案例分析
- Spring Boot從入門到實戰
- ArcGIS Blueprints
- Instant OpenCV for iOS
- 自然語言處理NLP從入門到項目實戰:Python語言實現
- 看漫畫學Python:有趣、有料、好玩、好用(全彩版)
- OpenACC并行編程實戰
- Python接口自動化測試
- 程序員面試筆試通關寶典
- 電子系統設計基礎
- 從Scratch進階到Python(基礎篇)
- Python數據科學導論
- 區塊鏈原理、技術及應用
- Python 3.7從零開始學
- Data Lake Development with Big Data
- 商用機器學習:數據科學實踐
- Visual FoxPro 6.0程序設計實驗指導
- 亮劍Java項目開發案例導航
- Lua解釋器構建:從虛擬機到編譯器
- C語言程序設計教程
- Web Development with MongoDB and NodeJS(Second Edition)
- WordPress 5 Cookbook