Firmware Development: A Guide to Specialized Systemic Knowledge
- Length: 435 pages
- Edition: 1
- Language: English
- Publisher: Apress
- Publication Date: 2022-10-17
- ISBN-10: 1484279735
- ISBN-13: 9781484279731
- Sales Rank: #1204270 (See Top 100 Books)
Build your own system firmware. This book helps you understand system firmware architecture and minimalistic design, and provides a specialized knowledge of firmware development. The book includes guidance on understanding the system firmware build procedure, integrating pieces of firmware and allowing configuration, updating system firmware, creating a development infrastructure for allowing multi-party collaboration in firmware development, and gaining advanced system firmware debugging knowledge.
After reading the book you will be able to assume better control while developing your own firmware and know how to interact with native hardware while debugging. You will understand key principles for future firmware development using newer technology, and be ready for the introduction of modern safe programming languages for firmware development. Detailed system firmware development case studies using a futuristic approach cover:
- Future scalable system firmware development models
- Types of firmware development (system firmware, device firmware, manageability firmware)
- Tools and their usage while creating system firmware
- How to build infrastructure for seamless firmware development using a multi-party development model
- Debugging methodologies used during various phases of firmware product development
- Setting up key expectations for future firmware, including thinner firmware footprints and faster execution time, easier configuration, and increased transparent security
What You Will Learn
- Understand the system firmware working model of the future
- Gain knowledge to say goodbye to proprietary firmware for different types of firmware development
- Know the different types of tools required for creating firmware source code before flashing the final image into the boot device of the embedded system
- Develop skills to understand the failure in firmware or in the system and prepare the debugging environment to root cause the defects
- Discern the platform minimal security requirement
- Optimize the system firmware boot time based on the target hardware requirement
- Comprehend the product development cycle using open source firmware development
Who This Book Is For
Embedded firmware and software engineers migrating the product development from closed source firmware to open source firmware for product adaptation needs as well as engineers working for open source firmware development. A secondary audience includes engineers working on various bootloaders such as open source firmware, UEFI, and Slim Bootloader development, as well as undergraduate and graduate students working on developing firmware skill sets.
Table of Contents About the Authors About the Technical Reviewer About the Foreword Author Foreword by Christian Walter Preface Acknowledgments Introduction Chapter 1: Spotlight on Future Firmware Migrating to Open Source Firmware Ring -1: System Firmware Ring -2: System Management Mode Ring -3: Manageability Firmware Open Source System Firmware Development Hybrid System Firmware Model coreboot Using Firmware Support Package FSP Integration FSP Interfacing FSP Configuration Data Open Source Challenges with FSP Configuration Data coreboot and FSP Communications Using APIs FSP Drivers Mitigate Open Source Challenges with FSP Driver EDKII Minimum Platform Firmware Minimum Platform Architecture Dispatch Mode Platform Min-Tree Minimum Platform Stage Approach Stage I: Minimal Debug Stage II: Memory Functional Stage III: Boot to UI Stage IV: Boot to OS Stage V: Security Enable Stage VI: Advanced Feature Selection Stage VII: Optimization Open Source System Firmware Model oreboot = Coreboot - C + Much More oreboot Code Structure oreboot Internals Flash Layout Build Infrastructure Device Tree Driver Model oreboot Boot Flow Bootblob Romstage Payloader Stage Payload Open Source Device Firmware Development Legacy Device Firmware/Option ROM UEFI OpROM Why Is Open Source Device Firmware Needed? Open Source Manageability Firmware Development Baseboard Management Controller Intelligent Platform Management Interface OpenBMC u-bmc RunBMC Zephyr OS: An Open Source Embedded Controller Firmware Development Embedded Controller EC Firmware Architecture Tasks Callbacks GPIOs Modules Debugging Host CPU to EC Communication Host Commands Embedded Controller Interface Shared Memory Map Challenges with Closed Source EC Firmware Modular Embedded Controller Card Zephyr-Based EC Firmware Power Sequencing Peripheral Management Button Array Devices Switches System Management Controller Thermal Management Power Monitoring Battery Management ACPI Host Interface Keyboard Controller Keyboard Scan Matrix Summary Chapter 2: Tools Build Tools EDKII Build Tools and Process Build Environment Setup Build Binaries Build Process AutoGen Process Make Process ImageGen Process coreboot Build Tools and Process Build Environment Setup Build Binaries Kconfig Sconfig cbfstool Build Process AutoGen Process Make Process ImageGen Process Configuration Tools Human Interface Infrastructure YAML-Based Configuration Firmware Configuration Interface Binary Configuration Tool (BCT)/Config Editor Flashing Tools Hardware-Based Tools SPINOR Programmer Servo Software-Based Tools Flashrom UEFI Tools and Utility Summary Chapter 3: Infrastructure for Building Your Own Firmware Overview of Source Control Management Version Control System Subversion Git Git Working Model Data Structure Setting Up Git Installing Git on Windows Installing Git on Linux Create and Register Git SSH Git Cheat Sheet Version Control Repository Hosting Service GitHub Code Review Application Gerrit Best Known Mechanism of Source Code Management Code of Conduct Coding Standard Indentation Maximum Columns per Line Using Braces Need for Spaces Naming Conventions Typedefs Commenting Write a Good Commit Message Summary Chapter 4: System Firmware Debugging Hardware-Assisted Debugging Generic Debugging Oscilloscope Protocol Analyzers SoC-Specific Debugging Hardware Interface eXtended Debug Port Direct Connect Interface Serial Wire Debug Software Interface CodeXL Intel System Debugger Arm Debugger OxM-Secific Debugging AMIDebug Rx XHCI Debug Capability Closed Case Debug Software-Assisted Debugging Traditional Breakpoint I/O-Based Checkpoint Serial Message or Serial Buffer Preboot Environment ACPI Debug Windows Debugger GNU Debugger Summary Chapter 5: Security at Its Core Revisiting the Definition of Firmware with a Security Mindset Why Is Firmware Security Required? Threats and Issues Security Primer Terminology Integrity Confidentiality Authenticity Anti-replay Availability Anti-rollback Root of Trust Threat Modeling Adversary Modeling Security Assumptions Approach to Security Design for Firmware Platform Configuration for Firmware Firmware with Security Mindset in a Computing System Access Control Secure Boot or Firmware Authentication Security Assurance Firmware Update and Resiliency Summary Chapter 6: Looking at the Future of System Firmware Designing LITE Firmware Design Principle Conclusion Designing a Feature Kernel Design Principle Conclusion Design Multithreaded System Firmware Design Principles Conclusion Innovation in Hardware Design Design Principles Hardware Design Principles Firmware Design Principle Conclusion Summary Appendix A: The Evolution of System Programming Languages The History of System Programming Languages System Programming Languages Today The Future of System Programming Languages Appendix B: initramfs: A Call for Type-Safe Languages Glossary Reference Websites References for Chapter 5 Books, Conferences, Journals, and Papers Index
Donate to keep this site alive
How to download source code?
1. Go to: https://github.com/Apress
2. In the Find a repository… box, search the book title: Firmware Development: A Guide to Specialized Systemic Knowledge
, sometime you may not get the results, please search the main title.
3. Click the book title in the search results.
3. Click Code to download.
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.