Firmware Development : A Guide to Specialized Systemic Knowledge
معرفی کتاب «Firmware Development : A Guide to Specialized Systemic Knowledge» نوشتهٔ Subrata Banik و Vincent Zimmer، منتشرشده توسط نشر Apress L. P. در سال 2022. این کتاب در 423 صفحه، فرمت pdf، زبان انگلیسی ارائه شده است. «Firmware Development : A Guide to Specialized Systemic Knowledge» در دستهٔ ریاضیات قرار دارد.
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 4 About the Authors 8 About the Technical Reviewer 10 About the Foreword Author 11 Foreword by Christian Walter 12 Preface 14 Acknowledgments 17 Introduction 18 Chapter 1: Spotlight on Future Firmware 31 Migrating to Open Source Firmware 33 Ring -1: System Firmware 35 Ring -2: System Management Mode 35 Ring -3: Manageability Firmware 36 Open Source System Firmware Development 40 Hybrid System Firmware Model 42 coreboot Using Firmware Support Package 43 FSP Integration 43 FSP Interfacing 45 FSP Configuration Data 46 Open Source Challenges with FSP Configuration Data 47 coreboot and FSP Communications Using APIs 50 FSP Drivers 52 Mitigate Open Source Challenges with FSP Driver 53 EDKII Minimum Platform Firmware 59 Minimum Platform Architecture 59 Dispatch Mode 61 Platform 65 Min-Tree 67 Minimum Platform Stage Approach 69 Stage I: Minimal Debug 69 Stage II: Memory Functional 71 Stage III: Boot to UI 72 Stage IV: Boot to OS 73 Stage V: Security Enable 74 Stage VI: Advanced Feature Selection 75 Stage VII: Optimization 76 Open Source System Firmware Model 77 oreboot = Coreboot - C + Much More 78 oreboot Code Structure 79 oreboot Internals 81 Flash Layout 82 Build Infrastructure 84 Device Tree 86 Driver Model 88 oreboot Boot Flow 90 Bootblob 92 Romstage 94 Payloader Stage 96 Payload 97 Open Source Device Firmware Development 99 Legacy Device Firmware/Option ROM 101 UEFI OpROM 107 Why Is Open Source Device Firmware Needed? 112 Open Source Manageability Firmware Development 114 Baseboard Management Controller 118 Intelligent Platform Management Interface 120 OpenBMC 125 u-bmc 128 RunBMC 130 Zephyr OS: An Open Source Embedded Controller Firmware Development 132 Embedded Controller 133 EC Firmware Architecture 136 Tasks 136 Callbacks 136 GPIOs 137 Modules 137 Debugging 137 Host CPU to EC Communication 138 Host Commands 138 Embedded Controller Interface 139 Shared Memory Map 142 Challenges with Closed Source EC Firmware 143 Modular Embedded Controller Card 143 Zephyr-Based EC Firmware 145 Power Sequencing 148 Peripheral Management 150 Button Array Devices 150 Switches 150 System Management Controller 152 Thermal Management 152 Power Monitoring 152 Battery Management 152 ACPI Host Interface 152 Keyboard Controller 153 Keyboard Scan Matrix 154 Summary 156 Chapter 2: Tools 158 Build Tools 161 EDKII Build Tools and Process 163 Build Environment Setup 165 Build Binaries 167 Build Process 170 AutoGen Process 171 Make Process 173 ImageGen Process 175 coreboot Build Tools and Process 178 Build Environment Setup 180 Build Binaries 182 Kconfig 183 Sconfig 184 cbfstool 185 Build Process 188 AutoGen Process 188 Make Process 189 ImageGen Process 190 Configuration Tools 191 Human Interface Infrastructure 192 YAML-Based Configuration 195 Firmware Configuration Interface 197 Binary Configuration Tool (BCT)/Config Editor 199 Flashing Tools 200 Hardware-Based Tools 201 SPINOR Programmer 201 Servo 202 Software-Based Tools 202 Flashrom 202 UEFI Tools and Utility 203 Summary 203 Chapter 3: Infrastructure for Building Your Own Firmware 205 Overview of Source Control Management 206 Version Control System 207 Subversion 207 Git 208 Git Working Model 211 Data Structure 214 Setting Up Git 221 Installing Git on Windows 221 Installing Git on Linux 222 Create and Register Git SSH 222 Git Cheat Sheet 224 Version Control Repository Hosting Service 228 GitHub 228 Code Review Application 231 Gerrit 232 Best Known Mechanism of Source Code Management 236 Code of Conduct 238 Coding Standard 240 Indentation 242 Maximum Columns per Line 243 Using Braces 244 Need for Spaces 245 Naming Conventions 246 Typedefs 247 Commenting 248 Write a Good Commit Message 249 Summary 253 Chapter 4: System Firmware Debugging 254 Hardware-Assisted Debugging 260 Generic Debugging 261 Oscilloscope 261 Protocol Analyzers 263 SoC-Specific Debugging 265 Hardware Interface 266 eXtended Debug Port 269 Direct Connect Interface 271 Serial Wire Debug 272 Software Interface 274 CodeXL 275 Intel System Debugger 276 Arm Debugger 279 OxM-Secific Debugging 283 AMIDebug Rx 283 XHCI Debug Capability 283 Closed Case Debug 286 Software-Assisted Debugging 288 Traditional Breakpoint 288 I/O-Based Checkpoint 289 Serial Message or Serial Buffer 292 Preboot Environment 293 ACPI Debug 294 Windows Debugger 295 GNU Debugger 297 Summary 299 Chapter 5: Security at Its Core 300 Revisiting the Definition of Firmware with a Security Mindset 303 Why Is Firmware Security Required? 304 Threats and Issues 306 Security Primer 306 Terminology 306 Integrity 307 Confidentiality 307 Authenticity 308 Anti-replay 308 Availability 309 Anti-rollback 310 Root of Trust 310 Threat Modeling 310 Adversary Modeling 311 Security Assumptions 312 Approach to Security Design for Firmware 312 Platform Configuration for Firmware 313 Firmware with Security Mindset in a Computing System 314 Access Control 323 Secure Boot or Firmware Authentication 323 Security Assurance 328 Firmware Update and Resiliency 329 Summary 330 Chapter 6: Looking at the Future of System Firmware 332 Designing LITE Firmware 336 Design Principle 340 Conclusion 352 Designing a Feature Kernel 353 Design Principle 355 Conclusion 356 Design Multithreaded System Firmware 357 Design Principles 361 Conclusion 368 Innovation in Hardware Design 369 Design Principles 371 Hardware Design Principles 371 Firmware Design Principle 374 Conclusion 378 Summary 379 Appendix A: The Evolution of System Programming Languages 380 The History of System Programming Languages 381 System Programming Languages Today 383 The Future of System Programming Languages 385 Appendix B: initramfs: A Call for Type-Safe Languages 394 Glossary 399 Reference 404 Websites 404 References for Chapter 5 408 Books, Conferences, Journals, and Papers 408 Index 410
دانلود کتاب Firmware Development : A Guide to Specialized Systemic Knowledge