skip to main content
Skip header Section
ARM System Developer's Guide: Designing and Optimizing System SoftwareApril 2004
Publisher:
  • Morgan Kaufmann Publishers Inc.
  • 340 Pine Street, Sixth Floor
  • San Francisco
  • CA
  • United States
ISBN:978-1-55860-874-0
Published:01 April 2004
Skip Bibliometrics Section
Bibliometrics
Abstract

No abstract available.

Cited By

  1. Park T, Seo H, Liu Z, Choi J and Kim H Compact Implementations of LSH Revised Selected Papers of the 16th International Workshop on Information Security Applications - Volume 9503, (41-53)
  2. ACM
    Niyonkuru D and Wainer G Towards a DEVS-based Operating System Proceedings of the 3rd ACM SIGSIM Conference on Principles of Advanced Discrete Simulation, (101-112)
  3. ACM
    Fan X and Gong G Securing ZigBee smart energy profile 1.x with OpenECC library Proceedings of the first ACM workshop on Smart energy grid security, (17-22)
  4. ACM
    Johnson M and Hawick K Empirical measurement of instruction level parallelism for four generations of ARM CPUs Proceedings of the 2013 International Workshop on Programming Models and Applications for Multicores and Manycores, (101-106)
  5. ACM
    Becker M, Baldin D, Kuznik C, Joy M, Xie T and Mueller W XEMU Proceedings of the tenth ACM international conference on Embedded software, (33-42)
  6. ACM
    Mahalingam P and Asokan S A framework for optimizing GCC for ARM architecture Proceedings of the International Conference on Advances in Computing, Communications and Informatics, (337-342)
  7. Hawick K, Leist A, Playne D and Johnson M Speed and portability issues for random number generation on graphical processing units with CUDA and other processing accelerators Proceedings of the Ninth Australasian Symposium on Parallel and Distributed Computing - Volume 118, (3-12)
  8. Osvik D, Bos J, Stefan D and Canright D Fast software AES encryption Proceedings of the 17th international conference on Fast software encryption, (75-93)
  9. ACM
    Agullo E, Hadri B, Ltaief H and Dongarrra J Comparative study of one-sided factorizations with multiple software packages on multi-core hardware Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis, (1-12)
  10. Rast A, Khan M, Jin X, Plana L and Furber S A universal abstract-time platform for real-time neural networks Proceedings of the 2009 international joint conference on Neural Networks, (3378-3385)
  11. ACM
    Bungo J (2008). The use of compiler optimizations for embedded systems software, XRDS: Crossroads, The ACM Magazine for Students, 15:1, (8-15), Online publication date: 1-Sep-2008.
  12. ACM
    Choi Y and Han H (2008). Shared heap management for memory-limited java virtual machines, ACM Transactions on Embedded Computing Systems (TECS), 7:2, (1-32), Online publication date: 1-Feb-2008.
  13. ACM
    Choi Y and Han H Protected heap sharing for memory-constrained java environments Proceedings of the 2006 international conference on Compilers, architecture and synthesis for embedded systems, (212-222)
  14. ACM
    Morgan P, Taylor R, Hossell J, Bruce G and O'Rourke B Automated data cache placement for embedded VLIW ASIPs Proceedings of the 3rd IEEE/ACM/IFIP international conference on Hardware/software codesign and system synthesis, (39-44)
Contributors

Recommendations

Reviews

Wei-Ming Hu

How to write embedded and systems software for the ARM processor family is described in this book. Although generally useful, the material is particularly suitable to those who need to write systems-level and embedded software for the ARM. The chapters can be grouped into three major topics: processor instruction set, optimized algorithms for ARM, and operating systems programming. The book starts with the processor architecture, the 32-bit instruction set, and the more compact 16-bit Thumb instruction set. The authors then describe how to write efficient C and assembly language code. As part of this, the authors give readers tips on how to write assembly code that optimally schedules instructions, uses registers, and performs control flow operations cheaply. The examples, including a small operating system described later, are available on the book's Web site. The authors describe how to efficiently implement some commonly used operations. These include division, reciprocals, roots, exponentiation, trigonometric functions, bit operations, and the generation of pseudo-random numbers. After this, the authors describe how to write digital signal processing (DSP) applications using the ARM processor. The authors describe the representation of analog waveforms, and then present algorithms to compute common DSP functions, such as the dot-product, filters, and the Discrete Fourier Transform. Systems issues, such as exception and interrupt handling, and systems initialization and bootstrapping are covered in the last part of the book. This is followed by discussions of memory hierarchy. The authors start by describing cache organization and cache control operations, such as locking code and data in cache, and cleaning and flushing the cache contents. They proceed on to a discussion of how to set up memory protection, and how to use memory management units. The latter includes an example of a virtual memory implementation. The book concludes with a set of appendices on the instruction sets, and other references. The book covers more than the instruction set; the authors succeed in giving readers a good understanding of how to program the ARM processor. The authors do this by providing many well-worked and relevant examples. I particularly liked the chapters that describe how to implement common math operations, and DSP applications. These examples present both the algorithms, and specific optimizations that take advantage of the ARM processor architecture. Similarly, the chapters on memory protection and management are also very clear, and are effective in illustrating and reinforcing their respective topics. It is worthwhile to note that the book is applicable to the entire ARM family. Where there are differences, the authors took care to explain how the code would change depending on the ARM implementation. In summary, I believe that reading this book will help you become a better ARM programmer. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.