Embedded Systems: ARM Programming and Optimization combines an exploration of the ARM architecture with an examination of the facilities offered by the Linux operating system to explain how various features of program design can influence processor performance. It demonstrates methods by which a programmer can optimize program code in a way that does not impact its behavior but improves its performance. Several applications, including image transformations, fractal generation, image convolution, computer vision tasks, and now machine learning, are used to describe and demonstrate these methods. From this, the reader will gain insight into computer architecture and application design, as well as gain practical knowledge in embedded software design for modern embedded systems. The second edition has been expanded to include more topics of interest to upper level undergraduate courses in embedded systems.
1. Cover image - p. i 2. Title page - p. ii 3. Table of Contents - p. iii 4. Copyright - p. iv 5. Preface - p. xi 6. Acknowledgments - p. xiii 7. Chapter 1. The Linux/ARM embedded platform - p. 1 8. Chapter 2. Multicore and data-level optimization: OpenMP and SIMD - p. 55 9. Chapter 3. Arithmetic optimization and the Linux framebuffer - p. 105 10. Chapter 4. Memory optimization and video processing - p. 151 11. Chapter 5. Embedded heterogeneous programming with OpenCL - p. 191 12. Appendix A. Adding PMU support to Raspbian for the generation 1 Raspberry Pi - p. 233 13. Appendix B. NEON intrinsic reference - p. 237 14. Appendix C. OpenCL reference - p. 253 15. Index - p. 291
Embedded Systems: ARM Programming and Optimization combines an exploration of the ARM architecture with an examination of the facilities offered by the Linux operating system to explain how various features of program design can influence processor performance. It demonstrates methods by which a programmer can optimize program code in a way that does not impact its behavior but improves its performance. Several applications, including image transformations, fractal generation, image convolution, computer vision tasks, and now machine learning, are used to describe and demonstrate these methods. From this, the reader will gain insight into computer architecture and application design, as well as gain practical knowledge in embedded software design for modern embedded systems. The second edition has been expanded to include more topics of interest to upper level undergraduate courses in embedded systems.
1. Cover image - p. i 2. Title page - p. ii 3. Table of Contents - p. iii 4. Copyright - p. iv 5. Preface - p. xi 6. Acknowledgments - p. xiii 7. Chapter 1. The Linux/ARM embedded platform - p. 1 8. Chapter 2. Multicore and data-level optimization: OpenMP and SIMD - p. 55 9. Chapter 3. Arithmetic optimization and the Linux framebuffer - p. 105 10. Chapter 4. Memory optimization and video processing - p. 151 11. Chapter 5. Embedded heterogeneous programming with OpenCL - p. 191 12. Appendix A. Adding PMU support to Raspbian for the generation 1 Raspberry Pi - p. 233 13. Appendix B. NEON intrinsic reference - p. 237 14. Appendix C. OpenCL reference - p. 253 15. Index - p. 291