Firmware Development: A Guide to Specialized Systemic Knowledge

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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.

Author(s): Subrata Banik, Vincent Zimmer
Edition: 1
Publisher: Apress
Year: 2022

Language: English
Commentary: Publisher PDF
Pages: 431
City: New York, NY
Tags: Firmware; Open Source Firmware; UEFI; ROM; OpROM; Firmware Debugging

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