ARM ® FirmwareSuite User Guide

Version 1.4

Table of Contents

About this document
Intended audience
Using this book
Typographical conventions
Further reading
ARM publications
Other publications
Feedback on this book
Feedback on the ARM Firmware Suite
1. Introduction to the ARM Firmware Suite
1.1. About the ARM Firmware Suite
1.2. What is firmware?
1.2.1. µHAL Libraries
1.3. Flash library and utilities
1.3.1. The flash library APIs
1.3.2. The ARM Flash Utility
1.3.3. The ARM Boot Flash Utility
1.3.4. Boot switcher
1.3.5. Boot monitor
1.3.6. Managing images in flash
1.4. Additional libraries
1.4.1. PCI library
1.4.2. Chaining library
1.4.3. RealMonitor library
1.4.4. The zlib library
1.5. µHAL demonstration programs
1.5.1. Simple tests
1.5.2. Timing tests
1.5.3. Board-specific demonstration programs
1.6. Angel
2. An Introduction to µHAL
2.1. About µHAL
2.1.1. Licensing
2.1.2. Frequently asked questions
2.1.3. Application programming interfaces
2.1.4. Application operating modes
2.1.5. System support provided by µHAL
2.1.6. µHAL naming conventions
2.2. Building a new µHAL-based application
2.2.1. Building with GNUmake
2.3. Building the µHAL library
3. Running the LED Application
3.1. About the LED application
3.1.1. Files used with the LED application
3.1.2. Overview of the µHAL LED functions
3.1.3. Selecting semihosted or standalone operation
3.2. Building the LED application
3.2.1. Using the makefile
3.2.2. Using the project file
3.2.3. Changing the image format
3.3. Using Multi-ICE to load and debugimages
3.3.1. Preparing the board
3.3.2. Starting the debugger
3.3.3. Loading an image into RAM with Multi-ICE
3.3.4. Loading an image into flash with Multi-ICE
3.4. Using Angel to load and debug images
3.4.1. Verifying Angel is in flash
3.4.2. Using a terminal to detect Angel
3.4.3. Loading an image into RAM with Angel
3.4.4. Running the flash utility from a debugger
3.4.5. Using a serial port and the boot monitorto load and run images
3.5. Modifying the application
3.5.1. Changing build options
3.5.2. Stepping through the code
4. Running the Timer Application
4.1. How the application uses µHAL
4.1.1. The interrupt function
4.1.2. Displaying the board details
4.1.3. Installing the timer interrupt
4.1.4. Displaying the timer value
4.2. Running the application
5. Creating a New Application
5.1. How to create a new application
5.2. Extending the existing directory structure
5.2.1. Using CodeWarrior projects
5.2.2. Using makefiles
5.3. Creating a separate directory structure
5.3.1. Using the CodeWarrior IDE
5.3.2. Using makefiles
6. Troubleshooting and Frequently Asked Questions
6.1. Frequently asked questions
6.1.1. Does AFS support Thumb?
6.1.2. How do I build AFS components using ADS?
6.1.3. How do I use the C library?
6.1.4. Is µHAL free?
6.1.5. Can I use µHAL in my project?
6.1.6. What boards are supported?
6.1.7. How do I use boot monitor with Multi-ICE?
6.1.8. How can I verify that Angel is installed?
6.2. Troubleshooting
6.2.1. µHAL does not work with my processor
6.2.2. The boot switcher fails to run an image from flash
6.2.3. AXD cannot download to Integrator flash memory
6.2.4. The switch settings do not behaveas expected
6.2.5. Integrator images fail to load after Multi-ICE Auto-Configuration
6.2.6. Exception vector errors when using Multi-ICE
6.2.7. I cannot enable a timer that has not been requested
6.2.8. Enabled timer interval is too long
6.2.9. Terminal emulator does not work with boot monitor
6.2.10. I cannot use ELF format in my application
6.2.11. Demo applications run slower as standalone

Proprietary Notice

Words and logos marked with ® or ™ are registered trademarks or trademarksowned by ARM Limited. Other brands and names mentioned herein maybe the trademarks of their respective owners.

Neither the whole nor any part of the information containedin, or the product described in, this document may be adapted orreproduced in any material form except with the prior written permissionof the copyright holder.

The product described in this document is subject to continuousdevelopments and improvements. All particulars of the product andits use contained in this document are given by ARM in good faith.However, all warranties implied or expressed, including but notlimited to implied warranties of merchantability, or fitness forpurpose, are excluded.

This document is intended only to assist the reader in theuse of the product. ARM Limited shall not be liable for any lossor damage arising from the use of any information in this document,or any error or omission in such information, or any incorrect useof the product.

Revision History
Revision A April2000 New document
Revision B June2001 Second version
Revision C March2002 Third version
Revision D September2002 Interim release for Excalibur support
Copyright © 2000-2002 ARM Limited. All rights reserved. ARM DUI 0136D