Log In
Or create an account -> 
Imperial Library
  • Home
  • About
  • News
  • Upload
  • Forum
  • Help
  • Login/SignUp

Index
Architecting High-Performance Embedded Systems Why subscribe? Contributors About the author About the reviewer Packt is searching for authors like you Preface
Intended audience for this book What this book covers To get the most out of this book Download the example code files Download the color images Conventions used Get in touch Reviews
Section 1: Fundamentals of High-Performance Embedded Systems Chapter 1: Architecting High-Performance Embedded Systems
Technical requirements Elements of embedded systems
Power source Digital processing Software and firmware Specialized circuitry Input from the environment Output to the environment
Operating in real time
Periodic operation Event-driven operation Real-time operating systems
FPGAs in embedded systems
Digital logic gates Flip-flops Elements of FPGAs FPGA synthesis Hardware design languages The benefits of using FPGAs in embedded system designs Xilinx FPGAs and development tools
Summary
Chapter 2: Sensing the World
Technical requirements Introducing passive, active, and smart sensors Applying analog-to-digital converters The types of sensors used in embedded systems
Light Temperature Pressure Humidity Fluid flow Force Ultrasonic Audio Magnetic Chemical Ionizing radiation Radar Lidar Video and infrared Inertial GPS
Communicating with sensors
GPIO Analog voltage I2C SPI CAN bus Wireless
Processing sensor data Summary
Chapter 3: Operating in Real Time
Technical requirements What does real-time mean? Attributes of a real-time embedded system
Performing multiple tasks Rate-monotonic scheduling
Understanding key RTOS features and challenges
Mutexes Semaphores Queues Event flags Timers Dynamic memory allocation Deadlock Priority inversion
Popular real-time operating systems
embOS FreeRTOS INTEGRITY Neutrino µc/OS-III VxWorks
Summary
Section 2: Designing and Constructing High-Performance Embedded Systems Chapter 4: Developing Your First FPGA Program
Technical requirements Using FPGAs in real-time embedded system designs
Block RAM and distributed RAM FPGA I/O pins and associated features Specialized hardware resources Processor cores
FPGA implementation languages
VHDL Verilog Block diagrams C/C++
The FPGA development process
Defining system requirements Allocating functionality to the FPGA Identifying required FPGA features Implementing the FPGA design Testing the implementation
Developing your first FPGA project
Project description Installing the Vivado tools Creating a project Creating VHDL source files Testing the logic behavior Defining I/O signals Creating a top-level VHDL file Synthesizing and implementing the FPGA bitstream Downloading the bitstream to the board Programming the bitstream to onboard flash memory
Summary
Chapter 5: Implementing systems with FPGAs
Technical requirements The FPGA compilation process
Design entry Logic synthesis Design optimization High-level synthesis Optimization and constraints
Algorithm types most suitable for FPGA implementation
Algorithms that process high-speed data streams Parallel algorithms Algorithms using nonstandard data sizes
Kicking off the oscilloscope FPGA project
Project description Baseline Vivado project
Summary
Chapter 6: Designing Circuits with KiCad
Technical requirements Introducing KiCad Basic KiCad procedures
Placing and connecting circuit components Creating component symbols
Developing the project schematic diagram
Adding text annotations Adding signal labels Adding global labels Creating differential signal pairs Creating offboard connections Symbol annotation and electrical rules checking
Laying out the PCB Prototyping the circuit board Summary
Chapter 7: Building High-Performance Digital Circuits
Technical requirements Circuit board assembly tools and procedures
Optical magnification Tweezers Flux Solder Electrostatic discharge protection Hand soldering Solder wick Solder paste application Reflow soldering
Preparing for assembly and placing parts Reflow soldering and hand soldering
Hand soldering
Post-assembly board cleaning and inspection Summary
Section 3: Implementing and Testing Real-Time Firmware Chapter 8: Bringing Up the Board for the First Time
Technical requirements Preparing for power-up
Supplying power to the board
Checking our circuit's basic functionality
Testing the board power supplies Testing the analog amplifiers Testing the ADC
Adapting the circuit in case of problems
Cutting PCB traces Installing solder jumpers and jumper wires Removing components Adding components Generating the ADC encoder clock and 1 KHz calibration signal
Summary
Chapter 9: The Firmware Development Process
Technical requirements Designing and implementing the FPGA algorithm
Digital oscilloscope system overview Adding the deserializer Adding a FIFO buffer Adding the AXI bus interface Adding the MQTT protocol
Coding style
Naming things Comments in code Avoid literal numeric values Braces, indentation, and vertical spacing Prioritize readability and correctness Avoid premature optimization Avoid implementation-defined behavior Avoid unconditional jumps Minimize the scope of identifiers Indicate that constant things are constant Automated code formatters
Statically analyzing source code
What is static code analysis? Static code analysis tools Using static code analysis effectively Working with existing code Begin with only the most severe messages Resolving analyzer output messages Common source code analyzer messages
Source code version control
Version control with Git
Test-driven development
TDD applied to embedded systems
Summary
Chapter 10: Testing and Debugging the Embedded System
Technical requirements Designing system-level tests
Requirements-driven testing Testing under nominal and off-nominal conditions Unit testing versus functional testing Negative testing and penetration testing Testing in a simulated environment Achieving repeatable test results Developing a test plan
Conducting tests and recording results
Identify the data to be collected Configuring the system under test Executing the test procedures Quick-look assessment of test results Repeating tests when necessary Regression testing existing code
Ensuring comprehensive test coverage
Requirements traceability matrix Tracking code coverage Dealing with syntax and compilation errors and warnings Working with static code analysis and unit testing Define the problem clearly and attempt to duplicate it Determine whether the input is correct Find ways to gain visibility into the system Using a binary search debugging process temporarily removing portions of functionality Make the smallest program that demonstrates the problem
Summary of best practices for high-performance embedded system development
Designing for test Leave room for growth Design hardware with future capabilities in mind Developing only the code you need right now Maintain strict version control Develop unit tests as code is in development Begin system-level testing as soon as functionality is present
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
  • ← Prev
  • Back
  • Next →
  • ← Prev
  • Back
  • Next →

Chief Librarian: Las Zenow <zenow@riseup.net>
Fork the source code from gitlab
.

This is a mirror of the Tor onion service:
http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion