ARM Evaluation Board (KPI-0041A) User Guide ARM DUI 0091A Open Access ARM Evaluation Board User Guide Change log Date Issue Change August 1998 A First release Proprietary notice ARM, EmbeddedICE, and Muliti-ICE are trademarks of ARM Limited. All other products or services mentioned herein may be trademarks of their respective owners. Neither the whole nor any part of the information contained in, or the product described in, this document may be adapted or reproduced in any material form except with the prior written permission of the copyright holder. The product described in this document is subject to continuous developments and improvements. All particulars of the product and its use contained in this document are given by ARM Limited in good faith. However, all warranties implied or expressed, including but not limited to implied warranties or merchantability, or fitness for purpose, are excluded. This document is intended only to assist the reader in the use of the product. ARM Limited shall not be liable for any loss or damage arising from the use of any information in this document, or any error or omission in such information, or any incorrect use of the product. Confidentiality and information status This document is: Open Access No restriction on distribution Final Complete information on a developed product Electromagnetic compatability ii © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Preface ARM Evaluation Board About this document This document describes the ARM Evaluation Board (KPI-0041A), which is a simple means of evaluating an ARM processor and its peripheral technology. Intended audience This document has been written for experienced engineers. Typographical conventions The following typographical conventions are used in this document: bold highlights menu items and signal names within the text italic highlights important notes, ARM-specific terminology, cross references, and references to other publications monospace highlights directory names, file names, and code examples italic monospaced highlights variables which should be substituted with actual text. ARM DUI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access iii Preface Related publications The following ARM documents may be useful: iv • the ARM Evaluation Board Welcome Guide (ARM DGI 0005A) • the ARM Target Development System User Guide (ARM DUI 0061) • the ARM7DI Databook (ARM DDI 0027D) • the ARM7DI Test Chip Implementation Guide (ARM DXI 0027B) • the ARM SDT User Guide (ARM DUI 0040C) • the ARM SDT Reference Guide (ARM DUI 0040C) • the Sharp LH77790A Embedded Microcontroller User’s Guide v2.1. © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Preface Feedback on this document If you have any comments or suggestions about this document, please contact your supplier giving: ARM DUI 0091A • the document title • the document number • the page number(s) to which your comments refer • a concise explanation of your comments. © Copyright ARM Limited 1998. All rights reserved. Open Access v Preface vi © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Contents ARM Evaluation Board Preface Chapter 1 Overview 1.1 1.2 1.3 1.4 1.5 1.6 Chapter 2 Hardware Description 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 ARM DUI 0091A Kit contents ................................................................................................... 1-2 System requirements .................................................................................... 1-3 Using the evaluation board ........................................................................... 1-4 Precautions ................................................................................................... 1-5 Federal Communications Commission notice............................................... 1-6 CE Declaration of Conformity........................................................................ 1-6 Overview ....................................................................................................... 2-2 The Sharp LH77790A microcontroller........................................................... 2-4 LEDs ............................................................................................................. 2-5 Memory ......................................................................................................... 2-7 JTAG connector .......................................................................................... 2-12 Serial port.................................................................................................... 2-13 5V voltage regulator.................................................................................... 2-14 50 PTH blocks J1 to J4 ............................................................................... 2-14 © Copyright ARM Limited 1998. All rights reserved. Open Access vii Contents Chapter 3 Bootstrap Loader Setup and Use 3.1 3.2 3.3 3.4 3.5 3.6 Chapter 4 Angel Debug Monitor Setup and Use 4.1 4.2 4.3 Chapter 5 Overview....................................................................................................... 4-2 Basic setup with the Angel Debug Monitor................................................... 4-3 Setting up ARM Debugger for Windows for the Angel Debug Monitor......... 4-4 EmbeddedICE Setup and Use 5.1 5.2 Chapter 6 Overview....................................................................................................... 3-2 Basic setup with the Bootstrap Loader ......................................................... 3-3 Bootstrap Loader command line editor......................................................... 3-7 Bootstrap commands.................................................................................... 3-7 FLASH and module management .............................................................. 3-11 Application downloading and execution ..................................................... 3-14 Overview....................................................................................................... 5-2 Setup with an EmbeddedICE unit................................................................. 5-3 Multi-ICE Setup and Use 6.1 6.2 Overview....................................................................................................... 6-2 Setup with a Multi-ICE unit ........................................................................... 6-3 Appendix A Evaluation Board Schematics Appendix B Evaluation Board Layout Glossary viii © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Chapter 1 Overview This chapter describes: ARM DUI 0091A • the kit contents • the system requirements • using the evaluation board • precautions which should be taken when using the board • the requirements of the Federal Communications Commission • the CE Declaration of Conformity. © Copyright ARM Limited 1998. All rights reserved. Open Access 1-1 Overview 1.1 Kit contents The ARM Evaluation Board is a simple means of evaluating an ARM processor and its peripheral technology. The kit includes the following: 1.1.1 • The ARM Evaluation Board Welcome Guide. • A CD-ROM containing installable software and documentation in pdf format. • A 9-pin null-modem RS 232 serial cable. • The ARM Evaluation Board. • A 9V wall-mounted power adapter. The CD-ROM The CD-ROM contains the following: • A free evaluation copy of the latest version of the ARM Evaluation Software Development Toolkit (SDT). • This manual, as well as the ARM SDT User and Reference guides in pdf format. • The Sharp LH77790A Embedded Microcontroller User’s Guide v2.1. Evaluation ARM Software Development Toolkit The free evaluation ARM SDT is fully functional but has a 60-day timeout. It runs on Microsoft Windows NT 4.0 and Microsoft Windows 95. It includes: 1-2 • an efficient C compiler • an assembler • a linker • a graphical debugger • a project manager • C libraries • example programs. © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Overview 1.1.2 The ARM evaluation board The board conhas the following major components: 1.2 • Sharp LH77790A microcontroller • 128KB FLASH EEPROM • 128KB SRAM memory • Four programmable output LEDs and a power indicator LED • 9-pin D-sub RS232 serial connector • JTAG socket • 24MHz clock • 5V voltage regulator • reset and interrupt switches • FCC and European Commission EMC Directive, 89/336.EEC compliant (EN 55 022:1996 Class A equipment). System requirements The evaluation board must be connected to a PC running the ARM Evaluation Software Development Toolkit (SDT) or a terminal application such as Hyperterm, or a UNIX system running xterm. The host PC requirements are: ARM DUI 0091A • 100MHz or faster Pentium or similar PC • Microsoft Windows NT 4.0 or Microsoft Windows 95 • 16MB of RAM • 25MB available hard disk space • CD-ROM drive • Serial port. © Copyright ARM Limited 1998. All rights reserved. Open Access 1-3 Overview 1.3 Using the evaluation board The ARM Evaluation Board is a complete target ARM development platform. As such, with the exception of the host PC, the kit includes all the components required to evaluate a simple ARM system including a representative software development environment. There are four distinct ways of setting up the ARM Evaluation Kit for use: • The first and most primitive configuration involves the use of the Bootstrap Loader. It connects to a terminal application on the host PC through the serial port connector P1. The Bootstrap Loader coexists in the FLASH ROM of the evaluation. The actual connection is made with an RS-232 null-modem cable. In this configuration the host PC based software tools can be used to develop, download, and debug software programs. • The second method includes the use of the Angel debug monitor, in the FLASH ROM of the evaluation board, and connecting the ARM debugger on host PC through the serial port connector. Again, the actual connection is made with an RS-232 null-modem cable. In this configuration the host PC based software tools can be used to develop, download, and debug software programs. • The third method requires an EmbeddedICE unit, which is not supplied with the evaluation kit. The EmbeddedICE unit is connected to the evaluation board through the 14-Pin JTAG connector, JP5, using a ribbon cable. The EmbeddedICE unit is also connected to the the host PC by means of a serial cable. This method does not require the use of the Angel debug monitor in the FLASH ROM. • The fourth method requires a Multi-ICE unit, which is not supplied with the evaluation kit. The Multi-ICE unit is connected to the 20 to 14-pin JTAG adaptor, and from there to the JTAG connector on the evaluation board through the 14-Pin JTAG connector, JP5, using a ribbon cable. The Multi-ICE unit is also connected to the host PC by means of a serial cable. This method does not require the use of the Angel debug monitor in the FLASH ROM. The ARM EmbeddedICE and ARM Multi-ICE units are supported by the ARM software tools provided in each kit, and which allow you to develop, download and test your software on the evaluation board. 1-4 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Overview The EmbeddedICE and Multi-ICE give you the additional capability of monitoring software on the evaluation board in a non-invasive manner at the hardware register level. This is unlike using the more invasive Angel ROM monitor in that Angel shares system resource usage with the downloaded program under test and also modifies it. Table 1-1 Summary of differences between Angel and EmbeddedICE unit 1.4 EmbeddedICE and Multi-ICE Effect Angel Run control Does not halt the processor. Breakpoints available in ROM. Hardware watchpoints at full processor speed. System resources Requires some target system ROM and RAM, and a software interrupt. Requires no system resources. Host communication Only requires the serial port. Only requires the JTAG interface to the ARM processor. Precautions The evaluation board is intended for use as a tool within a laboratory or engineering development environment. As a result the evaluation board is supplied without an enclosure. The absence of an enclosure leaves the board sensitive to electrostatic discharges and allows electromagnetic emissions. You should: ARM DUI 0091A • always wear an earth strap when handling the board • only hold the board by the edges • not use the board near equipment which could be sensitive to electromagnetic emissions (such as medical equipment) or which is a transmitter of electromagnetic emissions. © Copyright ARM Limited 1998. All rights reserved. Open Access 1-5 Overview 1.5 Federal Communications Commission notice This equipment has been tested and found to comply with the limits for a class A digital device, pursuant to part 15 of the FCC rules. These limits are designed to provide reasonable protection against harmful interference when the equipment is operated in a commercial environment. This equipment generates, uses, and can radiate radio frequency energy and, if not installed and used in accordance with the instruction manual, may cause harmful interference to radio communications. Operation of this equipment in a residential area is likely to cause harmful interference in which case the user will be required to correct the interference at his own expense. 1.6 CE Declaration of Conformity This equipment has been tested according to ISE/IEC Guide 22 and EN 45014. It conforms to the following product EMC specifications: • EN50081-1:1992 (Emissions) • EN55022/A1:1995, Class a Radiated and Conducted emissions to CISPR 22 Amend 1:1993 • EN50082-1:1994 (Immunity) • EN61000-4/ENV50140:1995 RF Immunity, 80-1000MHz, 3V/m (before modulation), 1kHz, 80% AM • EN61000-4-4:1995 EFT Immunity, 1kV on AC port, 5/50nSec, 5kHz Rep. Freq. The product herewith complies with the requirements of EMC Directive 89/336/EEC as amended. 1-6 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Chapter 2 Hardware Description This chapter describes ARM DUI 0091A • the SHARP LH77790A microcontroller • the LEDs • the memory • the JTAG connector • the serial port • the voltage regulator • the 50 PTH blocks J1 to J4. © Copyright ARM Limited 1998. All rights reserved. Open Access 2-1 Hardware Description 2.1 Overview The ARM Evaluation Board is a simple ARM platform that includes very few input/output (I/O) devices, powerful and flexible enough for evaluation and experimentation with ARM technology. The board allows; • the downloading of software images and the subsequent debugging process • the user easy access to all significant connection points, so enabling the attachment of additional I/O devices and peripheral circuits for experimentation. Figure 2-1 shows the major functional components of the ARM Evaluation Board. More detailed diagrams are given in Appendix A and Appendix B. 2-2 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A ARM DUI 0091A 50 PTH array © Copyright ARM Limited 1998. All rights reserved. Open Access JTAG Clocks Interrupts Reset LCD display Interrupt switch Reset switch Boundary scan ARM7DI TAP controller Clock/power management PWM 82C55 programmable peripheral interface 16C40 UARTS Watchdog timer 2KB scratch pad SRAM INT/RESET controller 82C54 counter/timers ARM7DI CPU and cache Bus controller 128KB FLASH LCD controller 128KB SRAM 50 PTH array 4 LEDs 24 bits CH 0/1 CH 2 3 channels RS232 interface irDA/DASK CH 2 CH 1 CH 0 Hardware Description 50 PTH array JTAG connector Figure 2-1 Evaluation board architecture 2-3 Hardware Description 2.2 The Sharp LH77790A microcontroller This is a square, 176-Pin, Thin Quad Flat Pack (TQFP), embedded microcontroller manufactured by Sharp Electronics Corporation. It provides a wide range of on-board peripherals and specialized interfaces. Its principal features are: • JTAG port • 32-bit ARM7DI RISC Core • 26-bit External Address Bus • 16-bit External Data Bus • 2KB Data/Instruction Cache • 2KB Static RAM • programmable clock and power management • programmable monochrome LCD controller • on-chip interrupt controller • three 16450 class UARTS • IrDA/DASK IR interface • three pulse width modulator channels • flexible memory interface • on-chip DRAM controller • programmable peripheral interface • three, 16-Bit counter/timer channels • hardware watchdog timer • external busmaster support • little endian memory format. The LH77790A microcontroller is powered by a 5V regulator and has a single 24MHz clock generator. The microcontroller pins are connected to four banks of 50 plated through holes (PTHs), JP1, JP2, JP3, and JP4. For more details please consult the Sharp LH77790A Embedded Microcontroller User’s guide V 2.1. 2-4 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Hardware Description 2.3 LEDs General purpose LEDs JTAG connector ....... ....... D1 D2 D3 D4 Serial port connector JP5 INTERRUPT P1 SW1 LH77790A J1 SW2 RESET Power connector D5 Power LED Figure 2-2 LED Locations There are five LEDs on the ARM Evaluation Board. Four of them, D1 to D4, are user controllable and located at the top of the board. They are connected to the high-order nibble of Port C on the Sharp LH77790A Microcontroller. LED D5 is connected to the 5V output of the LM2937 voltage regulator and is a power indicator light. It is located in the bottom right area of the board near the power socket. Table 2-1 LED colors ARM DUI 0091A LED Color D1 Green D2 Red D3 Yellow D4 Green D5 Red © Copyright ARM Limited 1998. All rights reserved. Open Access 2-5 Hardware Description The Sharp LH77790A Programmable Peripheral Interface has 24 programmable Input/ Output (I/O) pins grouped into three, eigh8-bit ports: • PA[7:0] • PB[7:0] • PC[7:0] Each port has three modes, 0, 1, or 2. These modes determine which pins can be set as general purpose outputs that allow software access to the LEDs: • MODE 0 provides for simple input and output (no handshaking) for the three ports. All user controllable LEDs are accessible by software. • MODE 1 provides for I/O using strobes or handshaking. In MODE 1, transfers on Ports A and B use Port C signals for handshaking. Only two of the user controllable LEDs are software accessible (the particular LED pair is determined by the I/O direction of Port B). • MODE 2 operation on Port A provides bi-directional data transfer on the eight-bit port with handshaking on Port C as in MODE 1. The user controllable LEDs are not software accessible in MODE 2. For complete details refer to the latest version of the Sharp LH77790A Embedded Microcontroller User’s Guide. See http://www.sharpmeg.com/lh/index.html. In order for software to have access to the LEDs the corresponding Port C pins must be configured as general purpose outputs. The initialized state of the evaluation board is such that the Programmable Peripheral Interface is set to MODE 0 and the upper half of Port C (the LED control lines) set to general purpose outputs. As a result, on power up all four user controllable LEDs are software accessible for output. +5V 47KΩ 47KΩ Port C6 Port C7 47KΩ 47KΩ Port C5 Port C4 1KΩ 1KΩ 1KΩ 1KΩ D1 green D1 green D1 green D1 green Figure 2-3 Connection of the four output LEDs on Port C 2-6 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Hardware Description 2.4 2.4.1 Memory FLASH bootROM The evaluation board contains 128KB of FLASH memory which contains the ROM monitor/Boot ROM. It can also be programmed to contain any downloaded program. The FLASH memory is implemented as a single, 8-bit, component, manufactured by Amtel Corporation. It is decoded by the active low, Chip Select 0 (nCS0) from the Sharp LH77790A and as such will respond at address 0 within Memory Bank 0. 2.4.2 SRAM There are three arrays of SRAM memory on the ARM Evaluation Board. Two of these memory arrays are found on the LH77790A microcontroller itself, and the third, consisting of two 64K x 8 SRAM parts (U4 and U3), is connected via the external bus. nCS1 nCE1/nCAS1 nOE 64KB x 8 SRAM U4 nWE A[0 – 15] D[0 – 7] CS2 nOE nWE A[1 – 16] SHARP LH77790A D[0 – 7] microcontroller D[8 – 15] nBW A0 U1 nCS1 nOE 64KB x 8 SRAM U3 nWE A[0 – 15] D[8 – 15] CS2 U10 Figure 2-4 External SRAM memory array ARM DUI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 2-7 Hardware Description Of the two, 2KB, memory arrays found on the LH77790A (U1), one can be configured as a cache or general-purpose SRAM (fast storage) while the other is used solely as fast storage. The 128KB memory array connected to the LH77790A via the external 16-bit memory bus consists of two 64K x 8 SRAM parts (U4 and U3). U4 is connected to the lower order byte lane (D0 - D7) of the 16-bit data bus while U3 is connected to the higher order byte lane (D8 - D15). This is shown in Figure 2-4 External SRAM memory array on page 2-7. The address bus is shifted down by one to connect to both SRAM parts, thus all addresses received by the SRAM parts are truncated to a half-word boundary. Each SRAM part has two Chip Select (CS) inputs, nCS1 and CS2. The nCS1 inputs for both U4 and U5 are connected together to the active low Chip Enable active LOW Column Address Select (nCE1/nCAS1) output on the Sharp LH77790A. This means that the SRAM array will only respond within Memory Bank1 of the microcontroller physical address space. The logic circuit connects the CS2 inputs of both SRAM parts to the external address bus (A0) and the active low, byte wide access (nBW) from the microcontroller. Its function is to enable the correct SRAM part to drive its respective data byte lane depending on whether we have a 16-bit or 8-bit access. The timing diagrams on the following pages show the SRAM read and write access operations. 2-8 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A ARM DUI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access nCS2 nWAIT nBW nWE nOE nCE1/ nCS1 D15 - D0 A25 - A0 XCLK tXBW tGD Cycle 1 tWS tXOE tXCE VALID Cycle 2 tCO1 Cycle 3 tWtH VALID tDS VALID Cycle 4 tWTS tDH tXA Cycle 5 tAA Cycle 6 tWH VALID tDS VALID Cycle 7 tXBWH tXOEH tXCEH tDH Hardware Description Figure 2-5 SRAM read access 2-9 2-10 © Copyright ARM Limited 1998. All rights reserved. Open Access CS2 nBW nWE nOE nCE1/ nCS1 D15 - D0 A25 - A0 XCLK tXBW tXA tTGD VALID Cycle 1 tXCE TXD tXWE Cycle 2 tCW VALID VALID Cycle 3 Cycle 4 tXDH tXA Cycle 5 Cycle 7 VALID VALID tWC Cycle 6 tXBWH tXWEH tXCEH tXAH Hardware Description Figure 2-6 SRAM write access ARM DUI 0091A Hardware Description Table 2-2 SRAM timing parameters ARM DUI 0091A Parameter Description tCO1 Chip Select CS1 access time 70 tXCE XCLK↓ to nCE Active 22 tXOE XCLK↓ to nOE Active 20 tXBW XCLK↓ το nBW valid 23 tGD Total decoder gate delay 15 tWTS nWAIT setup relative to XCLK↓ tWTH nWAIT hold relative to XCLK↓ tDS Read data setup relative XCLK↓ 9 tDH Read data hold relative XCLK↓ 3 tXCEH nCE Hold relative XCLK↓ 8 tAA Address access time 70 tXA XCLK↓ to address valid 27 tXD XCLK↓ to write data valid 28 tXWE XCLK↑ to nWE Active 19 tXWEH nWE Hold relative XCLK↓ 8 tCW Chip select to end of write 60 tXDH Write data hold relative XCLK↓ 10 tWC Write cycle time 70 tXAH Address hold relative XCLK↓ 11 tXBWH nBW Hold relative to XCLK↓ 7 © Copyright ARM Limited 1998. All rights reserved. Open Access Min Max 2-11 Hardware Description 2.5 JTAG connector The 14-pin connector (JP5) is connected to the JTAG interface of the LH77790A. The pinout is compatible with the ARM EmbeddedICE interface and as such supports several ICEBreaker compatible modules. The pinout is shown below. VSS VSS VSS VSS 2 4 6 8 10 12 14 1 3 5 7 9 11 13 TCK TDO SPU SPU nTRST TDI TMS VSS nICERST VSS Figure 2-7 Pinouts of JTAG/ICE connector (JP5) Table 2-3 Pinouts of JTAG/ICE connector (JP5) 2-12 Pin(s) Name Description 2, 4, 6, 8, 10, 14. VSS Substrate Voltage 12. nICERST Ice Reset (for tablet unit, active low) 1, 13. SPU Safe Power Up 3 nTRST Test System Reset(JTAG, active low) 5 TDI Test Data Serial In 7 TMS Test Mode Select 9 TCK Test Clock 11 TDO Test Data Serial Out © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Hardware Description 2.6 Serial port An RS232 line driver (Maxim Semiconductor part number MAX233) is used between the microcontroller and the serial port connector. The pinout of the serial port connector is shown below. DCD RxD 1 TxD DTR 3 4 2 6 7 DSR RTS GND 15 8 CTS 9 RI Figure 2-8 Pinouts of the RS232 serial port connector (P1) Table 2-4 Pinouts of the RS232 serial port connector (P1) ARM DUI 0091A Pin(s) Name Description 1 DCD Data Carrier Detect 2 RxD Receive Data 3 TxD Transmit Data 4 DTR Data Transmit Ready 5 GND Ground 6 DSR Data Send Ready 7 RTS Ready To Send 8 CTS Clear To send 9 RI Ringing Indicator © Copyright ARM Limited 1998. All rights reserved. Open Access 2-13 Hardware Description 2.7 5V voltage regulator The evaluation board is supplied with power at +5V by a regulator circuit using an LM2937ES. The circuit operates within an input voltage range of 6 -13 Volts. The LED D5 indicates the presence of power at the output of the voltage regulator. Reverse power protection is built into the LM2937ES. 2.8 50 PTH blocks J1 to J4 Table 2-5 JP1 2-14 Description Name Pin Pin Name Description Voltage at Collect VCC 01 02 GND Ground External Clock XCLK 03 04 NC No Connect Address 0 A0 05 06 A1 Address 1 Address 3 A3 07 08 A2 Address 2 No Connect NC 09 10 NC No Connect Address 4 A4 11 12 A5 Address 5 Address 6 A6 13 14 A7 Address 7 Address 8 A8 15 16 A9 Address 9 Address 10 A10 17 18 A11 Address 11 No Connect NC 19 20 NC No Connect Address 12 A12 21 22 A13 Address 13 Address 14 A14 23 24 A15 Address 15 Address 16 A16 25 26 A17 Address 17 Address 18 A18 27 28 A19 Address 19 No Connect NC 29 30 NC No Connect Address 20 A20 31 32 A21 Address 21 Address22 A22 33 34 A23 Address 23 Address 24 A24 35 36 A25 Address 25 Data 0 D0 37 38 D1 Data 1 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Hardware Description Table 2-5 JP1 (continued) Description Name Pin Pin Name Description No Connect NC 39 40 NC No Connect Data 2 D2 41 42 D3 Data 3 No Connect NC 43 44 NC No Connect No Connect NC 45 46 NC No Connect No Connect NC 47 48 NC No Connect No Connect NC 49 50 NC No Connect Table 2-6 JP2 ARM DUI 0091A Description Name Pin Pin Name Description Voltage at Collect VCC 01 02 GND Ground Data 4 D4 03 04 D5 Data 5 Data 6 D6 05 06 D7 Data 7 Data 8 D8 07 08 D9 Data 9 No Connect NC 09 10 NC No Connect Data 10 D10 11 12 D11 Data 11 Data 12 D12 13 14 D13 Data 13 Data 14 D14 15 16 D15 Data 15 Row Address Select 0 RAS0 17 18 RAS1 Row Address Select 1 No Connect NC 19 20 NC No Connect Chip Enable 0 (active low) /Column Address Select 0 (active low) nCE0/nCAS0 21 22 nCCE1/ NCAS1 Chip Enable 1 (active low) /No Connect Chip Enable 2 (active low) /Column Address Select 2 (active low) nCE2/nCAS2 23 24 nCCE3/ NCAS3 Chip Enable 3 (active low) /No Connect © Copyright ARM Limited 1998. All rights reserved. Open Access 2-15 Hardware Description Table 2-6 JP2 (continued) Description Name Pin Pin Name Description Chip Enable 4 (active low) /Column Address Select 4 (active low) nCE4/nCAS4 25 26 nCCE5/ NCAS5 Chip Enable 5 (active low) /No Connect Write Enable (active low) nWE 27 28 nOE Output Enable (active low) Byte Wide Access (active low) nBW 29 30 nWAIT External Memory Wait (active low) No Connect NC 31 32 NC No Connect Video Data 0 VD0 33 34 VD1 Video Data 1 Video Data 2 VD2 35 36 VD3 Video Data 3 Video Data 4 VD4 37 38 VD5 Video Data 5 Video Data 6 VD6 39 40 VD7 Video Data 7 No Connect NC 41 42 NC No Connect No Connect NC 43 44 NC No Connect No Connect NC 45 46 NC No Connect No Connect NC 47 48 NC No Connect No Connect NC 49 50 NC No Connect Table 2-7 JP3 2-16 Description Name Pin Pin Name Description Voltage at Collect VCC 01 02 GND Ground Shift/Pixel Clock CP2 03 04 CP1 Line Pulse/HYSNC AC Modulation Signal MCLK 05 06 S Frame pulse/VSYNC LCD Control Signal LCDCNT 07 08 PWM0 Pulse Width Modulator output signal 0 Pulse Width Modulator output signal 1 PWM1 09 10 PWM2 Pulse Width Modulator output signal 2 No Connect NC 11 12 NC No Connect © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Hardware Description Table 2-7 JP3 (continued) ARM DUI 0091A Description Name Pin Pin Name Description Chip and JTAG Controller Reset Input (active low) nRESETI 13 14 INT0 External Interrupt signal 0 External Interrupt signal 1 INT1 15 16 INT2 External Interrupt signal 2 External Interrupt signal 3 INT3 17 18 INT4 External Interrupt signal 4 External Interrupt signal 5 INT5 19 20 nRxD0 UART serial data input signal 0 (active low) No Connect NC 21 22 NC No Connect UART serial data output signal 0 (active low) nTxD0 23 24 nRxD1 UART serial data input signal 1 (active low) UART serial data output signal 1 (active low) nTxD1 25 26 nRxD2 UART serial data input signal 2 (active low) UART serial data output signal 2 (active low) nTxD2 27 28 UCLK UART/DASK clock Counter/timer control gate input 0 CTGATE0 29 30 CTOUT0 Counter/timer output signal 0 Chip and JTAG Controller Reset Output (active low) nRESETO 31 32 NC No Connect Counter/timer control gate input 1 CTGATE1 33 34 CTOUT1 Counter/timer output signal 1 Counter/timer control gate input 2 CTGATE2 35 36 CTOUT2 Counter/timer output signal 2 Counter/timer external clock input signal CTCLK 37 38 PA0 I/O port A signal 0 I/O port A signal 1 PA1 39 40 PA2 I/O port A signal 2 No Connect NC 41 42 NC No Connect No Connect NC 43 44 NC No Connect © Copyright ARM Limited 1998. All rights reserved. Open Access 2-17 Hardware Description Table 2-7 JP3 (continued) Description Name Pin Pin Name Description No Connect NC 45 46 NC No Connect No Connect NC 47 48 NC No Connect No Connect NC 49 50 NC No Connect Table 2-8 JP4 2-18 Description Name Pin Pin Name Description Voltage at Collect VCC 01 02 GND Ground I/O port A signal 3 PA3 03 04 PA4 I/O port A signal 4 I/O port A signal 5 PA5 05 06 PA6 I/O port A signal 6 I/O port A sigI/Onal 2 PA7 07 08 PB0 I/O port B signal 0 I/O port B signal 1 PB1 09 10 PB2/nRI1 Ring Indicator for UART1 (active low) No Connect NC 11 12 NC No Connect I/O port B signal 3/ Clear To Send for UART1 (active low) PB3/nCTS1 13 14 PB4/nCTS0 I/O port B signal 4/ Clear To Send for UART0 (active low) I/O port B signal 5/ Ring Indicator for UART1 (active low) PB5/nRI0 15 16 PB6/nDCD0 I/O port B signal 6/ Data Carrier Detect for UART0 (active low) I/O port B signal 7/ Data Set Ready for UART0 (active low) PB6/nDSRO 17 18 PC0/nRTS1 I/O port C signal 0 /Request To Send for UART1 (active low) I/O port C signal 1 /Request To Send for UART0 (active low) PC1/nRTS0 19 20 PC2/nDTR0 I/O port C signal 2 /Data Terminal ready for UART0 (active low) No Connect NC 21 22 NC No Connect I/O port C signal 3 PC3 23 24 PC4 I/O port C signal 4 I/O port C signal 5 PC5 25 26 PC6 I/O port C signal 6 I/O port C signal 7 PC7 27 28 TCK JTAG Test EmbeddedICE clock input signal © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Hardware Description Table 2-8 JP4 (continued) ARM DUI 0091A Description Name Pin Pin Name Description JTAG Test EmbeddedICE mode select input signal TMS 29 30 XCLKDIS External clock circuitry disable No Connect NC 31 32 NC No Connect JTAG Test EmbeddedICE data input signal TD1 33 34 TD0 JTAG Test EmbeddedICE data ouput signal No Connect NC 35 36 TEST1 Reserved. No Connect Byte Boot (active low) nBB 37 38 nADBE Reserved (active low) No Connect NC 39 40 TEST3 Reserved. No Connect No Connect NC 41 42 NC No Connect No Connect NC 43 44 NC No Connect No Connect NC 45 46 NC No Connect No Connect NC 47 48 NC No Connect No Connect NC 49 50 NC No Connect © Copyright ARM Limited 1998. All rights reserved. Open Access 2-19 Hardware Description 2-20 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Chapter 3 Bootstrap Loader Setup and Use This chapter describes: ARM DDI 0091A • the basic setup with the Bootstrap Loader • the Bootstrap line command editor • the Bootstrap commands • FLASH and module management • application downloading and execution. © Copyright ARM Limited 1998. All rights reserved. Open Access 3-1 Bootstrap Loader Setup and Use 3.1 Overview The Bootstrap Loader is located in the first 16K of the FLASH ROM and is the first code that is executed by the LH77790A processor when it powers up or resets. This code has four major areas of functionality: 3-2 • It provides facilities to configure the board and provide user help. • It manages the FLASH on the board as a set of executable modules. • It allows you to download applications to SRAM and execute them. • It provides a basic set of C style input/output (IO) functions which are called using software interrupt (SWI) calls from executing programs. © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use 3.2 Basic setup with the Bootstrap Loader This is the simplest configuration for the ARM Evaluation Board. Host PC Serial cable D1 D2 D3 D4 JP5 INTERRUPT P1 SW1 LH77790A J1 SW2 RESET D5 Power adapter (to mains power socket) Figure 3-1 Angel Debug Monitor setup configuration ARM DDI 0091A 1. Connect the null modem cable to the evaluation board. 2. Connect the other end of the cable to the host PC, making a note of the serial port that is used. 3. Connect the power adapter to the power connector on the evaluation board. 4. Connect the power adapter to the mains power socket. The red LED power indicator D5 lights up. 5. Press the reset button on the evaluation board. The four general purpose LEDs should flicker and the green LED D1 should remain on. This indicates the board has been initialized and is working correctly. © Copyright ARM Limited 1998. All rights reserved. Open Access 3-3 Bootstrap Loader Setup and Use 3.2.1 Configuring the system using Unix terminal To start tip enter : tip -<baud-rate> <device name> Where baud-rate is one of the baud rates listed in Table 3-1 Supported Bootstrap Loader serial line settings and device name is the name of the device associated with the serial port attached to the board (usually /dev/ttya or /dev/ttyb). For example tip -38400 /dev/ttya Table 3-1 Supported Bootstrap Loader serial line settings Baud rate Data bits Parity Stop bits Flow control 9600 8 none 1 none 19200 8 none 1 none 38400 8 none 1 none Note Most UNIX systems do not support baud rates higher than 38400 baud. 3-4 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use 3.2.2 Configuring the system using Windows HyperTerminal 1. Start the Windows HyperTerminal terminal emulator program by selecting Start, then Programs, then Accessories, and then HyperTerminal. Double click on Hyper Terminal. The application will start and display a Connection Description dialog box. 2. Enter a name in the dialog box (for example ArmEval) and click on OK. 3. Select the COM port to which you have connected the evaluation board from the menu Direct to COM1 through Direct to COM4. 4. In the next dialog box select a baud rate from the list of baud rates shown in Table 3-2 Supported Bootstrap Loader serial line settings. Older PCs may not support baud rates in excess of 38400. Table 3-2 Supported Bootstrap Loader serial line settings Baud rate Data bits Parity Stop bits Flow control 9600 8 none 1 none 19200 8 none 1 none 38400 8 none 1 none 57600 8 none 1 none 115200 8 none 1 none If you are not using a VT100 emulator you must connect initially at 9600 baud as the board cannot detect what baud rate you are using. You can later configure the board to use a higher baud rate. 5. Select None from the Flow Control menu. If you change the serial line Properties from the File menu within Hyper Terminal you will have to disconnect the current session and restart before the changes will take effect. 6. Connect the power adapter to the power connector on the evaluation board. 7. Connect the power adapter to the power outlet. The red LED D5 on the board will light to indicate power. Press the reset button on the evaluation board. The board should display the following message: ARM Evaluation Board Boot Monitor 0.01 (19 APR 1998) Press ENTER within 2 seconds to stop autoboot ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-5 Bootstrap Loader Setup and Use 8. Press ENTER within 2 seconds to prevent the board from autobooting any other modules which may be present in flash. You will then get the prompt Boot: and LEDs D3 and D4 will be lit. If you do not observe the banner described in step 7 above: 1. Check that you are using one of the supported baud rates shown in Table 3-2 download on page 3-5. 2. Check that you are using a genuine VT100 emulator. 3. Try switching to 9600 baud (if the board cannot detect what baud rate you are using it defaults to 9600 baud). 4. Regardless of the baud rate you should always configure your terminal emulator for 8 bits data, No parity, 1 stop bit. You should also disable any flow control on your terminal emulator (Xon/Xoff or Hardware handshake). If you cannot disable hardware flow control then you may need to tie some or all of CTS, DSR and CD high. 5. Check that you are using the correct serial cable. The cable requires three connections, Signal Ground, Rx, and Tx. Rx and Tx to be crossed over (i.e. you should be using a null-modem cable). The Bootstrap Loader stores environment variables which are used to configure the board. If you change these values then the board will configure differently. Since the storage area can be accessed by modules new environmental variables can be added or existing ones modified, and then used by all modules. 3-6 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use 3.3 Bootstrap Loader command line editor While entering commands in the BootStrap loader you can use the BootStrap loader command line editor to edit the command. The commands are not case sensitive. These editing facilities are built into the BootStrap loader Read Line Software Interface (SWI) so any other module which uses this SWI will be able to use the editing facilities. Table 3-3 Bootstrap editor commands 3.4 3.4.1 Key Function BACKSPACE Delete the character before the cursor DEL Same function as BACKSPACE CTRL-A Move the cursor to the start of the current line. CTRL-B Moves the cursor back one character. CTRL-D Forward Delete - deletes the character under the cursor. If entered on an empty line CTRL-D is treated as End Of File. CTRL-E Move the cursor to the end of the current line. CTRL-F Move the cursor forward one character. CTRL-R Redraws the current line CTRL-U Erases the current line Bootstrap commands boot Usage: boot The Boot command is used to reboot the system: Boot: boot ARM Evaluation Board Boot Monitor 0.01 (19 APR 1998) Press ENTER within 2 seconds to stop autoboot ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-7 Bootstrap Loader Setup and Use 3.4.2 help Usage: help <command> Entering help at the Boot: prompt with no arguments returns a list of commands supported by the Bootstrap Loader. The help command goes through each module in FLASH and lists all the commands supported by each module. For example: Boot: help Module is BootStrap 0.01 (19 APR 1998) Help is available on: Help Modules ROMModules nPlug PlugIn Kill SetEnv UnSetEnv PrintEnv DownLoad Go GoS Boot PC FlashWrite FlashLoad FlashErase Module is Angel 1.02 (12 MAY 1998) To get help on a specific command you can enter help <Command>.This will give a brief one line help on the command. For example: Boot: help help Usage: help <command> Help gives help on the command, if none specified, gives a list of commands. You can also specify a module name instead of the <command>. This will list all the commands supported by that module. For example: Boot: help bootstrap Module is BootStrap 0.01 (19 APR 1998) Help is available on: Help Modules ROMModule UnPlug PlugIn Kill SetEnv UnSetEnv PrintEnv DownLoad Go GoS Boot PC FlashWrite FlashLoad FlashErase This only gives help about the Bootstrap module. 3-8 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use 3.4.3 setenv Usage: setenv <variable-name> <value> Table 3-4 Environment variables used by the basic Bootstrap Loader Variable Value noautoboot boot If this variable is set then the BootStrap loader bypasses the normal autoboot sequence and goes straight to the Boot: prompt. This can be used to prevent the BootStrap loader from automatically starting another module stored in flash. <bootmodule> noautobaud This variable may be set to the name of a module to boot at startup. If this variable is set the Bootstrap Loader will boot that module, otherwise the Bootstrap Loader will boot the last module in the module list which has the AutoBoot bit set. If this variable is set then the Bootstrap Loader bypasses the normal baud rate detection and defaults to the configured baud rate, or 9600 baud if no baud rate is configured. baud <baud-rate> Sets the configured baud rate for the board. This may be one of 9600, 19200, 38400, 57600 or 115200. The Bootstrap Loader will first perform automatic baud rate detection (subject to the setting of the noautobaud variable) and will only use this value if the baud rate could not be determined or if the noautobaud variable is set. ram-base <base address> This variable may be set to configure the base address of the main RAM segment on the board. The <baseaddress> should be specified in hex and should be aligned on a 1KB page boundary. The base address defaults to 0x8000. The base address of the ROM and of the internal SRAM cannot be configured. nocache ARM DDI 0091A Effect This variable should always be set. © Copyright ARM Limited 1998. All rights reserved. Open Access 3-9 Bootstrap Loader Setup and Use SetEnv allows you to set an environment variable which is programmed into flash. You may program any variable name into flash. However certain variable names are recognized by different modules in the system to provide for configuration options. If you are writing your own module you may wish to assign your own variable names to have specific meaning for your module. For example, the command setenv baud 38400 will tell the BootStrap loader to use a baud rate of 38400. This command will not take effect until the board is next reset. You may omit the <value> part to set BOOLEAN type variable which are assumed to be TRUE the variable exists or FALSE if it does not. For example: Boot: setenv baud 38400 Boot: setenv noautobaud The command setenv noautobaud will tell the BootStrap loader not to do autobaud rate detection on startup. Used in conjunction with the setenv baud 38400, above, a fixed baud rate of 38400 is set on the board. If you just use the setenv baud 38400 command, the auto baud rate detection will override the configured baud rate and the configured baud rate will only apply if the board cannot determine what baud rate you are using. You should enter these commands if you had difficulty getting started with the board and had to revert to 9600 baud. Caution You should not set the baud rate to a baud rate higher than your terminal can support. If you do, you may not be able to regain control of the board. 3.4.4 unsetenv Usage: unsetenv <variable-name> UnSetEnv unsets (removes) an environment variable previously created with setenv. For example: Boot: unsetenv noautobaud Boot: unsetenv baud 3-10 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use 3.4.5 printenv Usage: printenv PrintEnv lists the variables currently stored in the environment area in the flash ROM. For example: Boot: printenv Variable Value ======== ===== nocache noautobaud baud 3.5 38400 FLASH and module management The FLASH storage on the evaluation board consists of a number of executable modules. The basic FLASH which is shipped with the evaluation board contains two modules. The first is the Bootstrap Loader itself and the other is the Angel Debug Monitor. By default, the Angel Debug Monitor is automatically run if the Bootstrap Loader is not interrupted by the user pressing the enter key in the connected terminal application. 3.5.1 modules Usage: modules modules gives a list of all initialized modules. For example: Boot: modules Header Base Limit Data 04000004 04000000 040033c0 00000000 BootStrap 0.01 (19 APR 1998) where Header is the address of the module header within the module Base is the first address of the module in flash Limit is the last address (+1) of the module in flash Data is the address of the modules data (0 => none). ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-11 Bootstrap Loader Setup and Use 3.5.2 rommodules Usage: rommodules rommodules scans the flash memory and prints out a list of all modules in flash, as opposed to Modules which lists only those modules that have been initialised. With each module rommodules prints the Header, Base and Limit information as for modules. It does not print the Data information because an uninitialized module cannot have any data. This command gives a list of all modules available in flash along with the version number, date and base address in flash of each module. For example: Boot: rommodules Header Base Limit 04000004 04000000 040033c0 BootStrap 0.01 (19 APR 1998) 0400e4f4 04004000 0400e60f Angel 1 3.5.3 modulename Usage: modulename You can type just the name of a module to run that module. For example: Boot: bootstrap ARM Evaluation Board Boot Monitor 0.01 (19 APR 1998) Press ENTER within 2 seconds to stop autoboot This reruns the Bootstrap module thus rebooting the board. 3.5.4 unplug Usage: unplug <module name> unplug tells the BootStrap Loader not to try to initialize that module when the board is next booted. In addition, if the module is currently active (it has been initialised) it will try to kill the module. unplug is useful if you have an errant module which is causing the board to crash when it is booted. In this case, boot the board, press <ENTER> to interrupt the boot, then unplug the errant module and reboot the board. If you don’t know which module is causing the problem keep unplugging modules until the problem ceases. You can then use the plugin command to reinstate the modules which are working satisfactorily. 3-12 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use Caution It is usually a bad idea to unplug the Bootstrap module itself. However if you do so, all is not lost. You can still recover by booting the board and interrupting the boot by pressing <ENTER>. When you interrupt the boot like this the Bootstrap Loader always initializes itself so you can regain control by using the plugin command. 3.5.5 plugin Usage: plugin <module name> The plugin command may be used to reinstate a module which has been unplugged with the unplug command. The plugin command marks the module so that the BootStrap loader will find it next time the board is booted. The plugin command also initializes the module. The plugin command may also be used to initialize a module which failed to initialize at boot time. 3.5.6 kill Usage: kill <module name> The kill command kills a module by calling its finalization code. Unlike the unplug command it does not mark the module as unplugged so the module will be initialised the next time the board is booted. Use kill to remove a module temporarily, and use unplug to remove it permanently. ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-13 Bootstrap Loader Setup and Use 3.6 3.6.1 Application downloading and execution Preparing an application for downloading into SRAM To build an application for downloading you may either use the latest ARM Toolkit or the GNU ProToolkit (available from http://www.cygnus.com/product/). 3.6.2 Example application #include "module.h" #include "swis.h" extern ARMWord Image$$RO$$Base[]; extern ARMWord Image$$RO$$Limit[]; extern ARMWord Image$$RW$$Base[]; extern ARMWord Image$$ZI$$Base[]; extern ARMWord Image$$ZI$$Limit[]; extern void start(char *cmd); extern ModuleHandle init(void); extern void final(void); extern ServiceBlock service(ServiceBlock sb); extern CallBack swi(unsigned swino, SWIRegs *regs); extern CallBack command(char *cmd); static const CmdTable Example_Commands[] = { { "ExCommand", command, 0, "Usage: ExCommand ", "A trivial command example" }, { 0, 0, 0, 0, 0 } }; 3-14 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use global_reg(6) unsigned R9; extern __swi(SWI_PrettyPrint) void PrettyPrint(const char *fmt, ...); extern __swi(SWI_CLI) void CLI(char *cmd); extern __swi(SWI_Exit) void Exit(void); extern __swi(0x100) MySWI(int r0); void start(char *cmd) { unsigned r0; PrettyPrint("*** In start entry, R0 = %s, R9 = %x", cmd, R9); PrettyPrint("*** Calling my own SWI (0x100) with R0 = 0x12341234"); r0 = MySWI(0x12341234); PrettyPrint("*** My SWI returned %x", r0); PrettyPrint("*** Executing my own command \"ExCommand Hello, World\""); CLI("ExCommand Hello, World"); Exit(); } ModuleHandle init(void) { PrettyPrint("*** In init entry, returning R0 = 0x12345678"); return (ModuleHandle)0x12345678; } void final(void) { PrettyPrint("*** In final entry, R9 = %x", R9); } __value_in_regs ServiceBlock service(ServiceBlock sb) { PrettyPrint("*** In service entry, R0 = %d, R1 = %x, R2 = %x", sb.r0, sb.r1, sb.r2); PrettyPrint("*** ... R3 = %x, R9 = %x", sb.r3, R9); sb.r0 = 0; return sb; } ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-15 Bootstrap Loader Setup and Use CallBack command(char *cmd) { PrettyPrint("*** In command handler, R0 = %s, R9 = %x", cmd, R9); return 0; } CallBack swi(unsigned swino, SWIRegs *regs) { PrettyPrint("*** In swi handler, SWI #%d, regs->r[0] = %x, R9 = %x", swino, regs->r[0], R9); PrettyPrint("*** Returning R0 = 0xABCDABCD"); regs->r[0] = 0xABCDABCD; return 0; } 3.6.3 Compiling your application If you are using the ARM tools and building a large application you may wish to add the <-nodebug> option to armlink. This prevents armlink from adding debug info to the image which can be quite space consuming. To build your application using the GNU ProToolkit you should use the following command format to link your program: arm-coff-gcc -o <output-file> <input object files> -Xlinker -oformat Xlinker binary For example: arm-coff-gcc -o dhry dhry_1.o dhry_2.o -Xlinker -oformat -Xlinker binary This command will invoke the GNU linker (arm-coff-ld) with the correct options and will also pass the Demon C library to arm-coff-ld for inclusion in the link stage. 3.6.4 Linking your application program • To link your application using the ARM STD you should use the following linker command line format: armlink -o <output-file> <input object files> <demon library> For example: armlink -o dhry dhry_1.o dhry_2.o /work/tools/rel211/common/lib/demon/ armlib.32l Please note that, as shown above, you must use the Demon C library for applications which you wish to download to the Bootstrap Loader. 3-16 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use 3.6.5 Converting your application to uuencoded format To convert the linked application image to uuencoded format using uuencode use the following example as a guide: uuencode dhry dhry > dhry.uue A link to a source of uuencode for Windows which has been tested to work with the Bootstrap Loader is <http://home.swbell.net/ravntree/wuudoall.html The following procedure needs to be performed; 1. Click on Preferences→Encode. The Encode Preferences dialog will appear. 2. Click on the Write Encoding Table and check the box to disable it. 3. Click on the Write Size Record and check the box to disable it. 4. Click on the Use BackQuote For Spaces and check the box to disable it. 5. Click on the OK button. 3.6.6 Downloading your application Please refer to download on page 3-27 in order to download your application to SRAM. ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-17 Bootstrap Loader Setup and Use 3.6.7 Creating new modules A module is piece of executable code which contains a module header descriptive structure embedded somewhere within it. This descriptive structure is not required to be the first item in the module. The module header structure must take the following form as described in the C language: typedef struct ModuleHeader ModuleHeader; struct ModuleHeader { unsigned magic; unsigned flags:16; unsigned major:8; unsigned minor:8; unsigned ARMWord checksum; *ro_base; ARMWord *ro_limit; ARMWord *rw_base; ARMWord *zi_base; ARMWord *zi_limit; ModuleHeader *self; StartCode start;/* Optional - may be 0 */ InitCode init;/* Optional - may be 0 */ FinalCode final;/* Optional - may be 0 */ ServiceCode service;/* Optional - may be 0 */ TitleString title; HelpString help; CmdTable *cmdtbl;/* Optional - may be 0 */ SWIBase swi_base;/* Optional - may be 0 */ SWICode swi_handler;/* Optional - may be 0 */ }; 3-18 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use The following is a description of each of the fields within the module. The fields in the module must be in the order shown in table Table 3-5 Module fields Offset ARM DDI 0091A Name Description 0x00 magic Magic word (value = 0x4d484944) used to identify this as a module. 0x04 flags A 16 bit flags field. The individual flags are described below. 0x06 major A 1b major version number. Currently this should have the value 1. 0x07 minor A 1b major version number. Currently this should have the value 0. 0x08 checksum An EOR checksum of the entire module used to validate the module. 0x0C ro_base The linked Read Only base of the module (=Image$$RO$$Base). 0x10 ro_limit The linked Read Only limit of the module (=Image$$RO$$Limit). 0x14 rw_base The linked Read Write base of the module (=Image$$RW$$Base). 0x18 zi_base The linked Zero Init base of the module (=Image$$ZI$$Base). 0x1C zi_limit The linked Zero Init limit of the module (=Image$$ZI$$Limit). 0x20 self A pointer to the linked address of the module header. 0x24 start The linked address of the start code called to boot a module. 0x28 init The linked address of the init code called to initialise a module. 0x2C final The linked address of the final code called to kill a module. 0x30 service The linked address of the service call entry of a module. 0x34 title The linked address of the title string of the module. 0x38 help The linked address of the help string of the module. © Copyright ARM Limited 1998. All rights reserved. Open Access 3-19 Bootstrap Loader Setup and Use Table 3-5 Module fields Offset Name Description 0x3C cmdtbl A pointer to the command table for this module. 0x40 swi_base The base address of the 64 entry SWI chunk handled by this module. 0x44 swi_handler A pointer to the SWI handler for this module. magic This word identifies a module header. The word should be set to the value MODULE_MAGIC which has the following definition. #define MODULE_MAGIC 0x4d484944; /* ’MHID’ */ The word MAGIC may be used to identify the endianess of a module. Therefore the above definition should always be used. Other definitions such as #define MODULE_MAGIC’MHID’ or #define MODULE_MAGIC *(unsigned *)"MHID" should not be used as these may not correctly identify the endianness of the module. When the Bootstrap Loader is booted it searches the ROM(s) for the MODULE_MAGIC word. Each occurrence of the MODULE_MAGIC word is identified as a module, provided that the module checksum succeeds. flags The following flags are currently defined: #define UNPLUGGED_FLAG 0x0001 #define AUTOSTART_FLAG 0x0002 All other bits in this field should be set to zero. The UNPLUGGED_FLAG is used to identify which modules have been unplugged ( removed from the list of modules). Unplugged modules will be entered into the module list. However, none of their entries will ever be called. The AUTOSTART_FLAG is used to identify a single module which should be automatically booted on startup in the absence of a boot module. Usually, only one module should have the AUTOSTART_FLAG set. In the case that more than one module has the AUTOSTART_FLAG set the Bootstrap Loader will boot the last such module found. This will be the last such module found in a ROM. However, in the case of multiple ROMs the search order of the ROMs is undefined. 3-20 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use major minor These fields identify the major and minor version numbers of the module header. These may be used to allow future extension of the module header. The current version number is: #define MAJOR_VERSION 1 #define MINOR_VERSION 0 checksum This field is used to validate the module. The checksum is calculated over the range <real_base> to <real_limit>. The checksum value is set so that the checksum over this range is equal to 0. The checksum is calculated as the End of Range (EOR) of each word in the range <real_base> to <real_limit>. Note that the checksum is included in the range <real_base> to <real_limit> so there is no need to perform a final EOR of checksum to generate a zero result. ro_base ro_limit rw_base zi_base zi_limit self These fields are used to identify the extents of the module ROM and RAM regions. The fields should be set to the linked address of the regions. The following shows how these fields might be defined in both assembler and C: IMPORT|Image$$RO$$Base| IMPORT|Image$$RO$$Limit| IMPORT|Image$$RW$$Base| IMPORT|Image$$ZI$$Base| IMPORT|Image$$ZI$$Limit| ModuleHeaderDCDMODULE_MAGIC ... DCD|Image$$RO$$Base| DCD|Image$$RO$$Limit| DCD|Image$$RW$$Base| DCD|Image$$ZI$$Base| DCD|Image$$ZI$$Limit| DCDModuleHeader ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-21 Bootstrap Loader Setup and Use ... extern ARMWord Image$$RO$$Base[]; extern ARMWord Image$$RO$$Limit[]; extern ARMWord Image$$RW$$Base[]; extern ARMWord Image$$ZI$$Base[]; extern ARMWord Image$$ZI$$Limit[]; ModuleHeader module_header = { ... Image$$RO$$Base, Image$$RO$$Limit, Image$$RW$$Base, Image$$ZI$$Base, Image$$ZI$$Limit, &module_header, ... }; The actual base and limit of the module are calculated as follows (where <module_address> is the address where the Bootstrap Loader located the MODULE_MAGIC word): <real_RO_base> = ro_base + (<module_address> - self) <real_RO_limit> = ro_limit + (<module_address> - self) + (zi_base - rw_base) The actual base and limit of the modules RAM regions(s) are calculated as follows (where <static_base> is the static base address of the modules instantiation): <real_RW_base> = <static_base> <real_RW_limit> = <static_base> + (zi_limit - rw_base) If a module is statically linked (it does not support PID (Position Independent Data) or multiple instantiation) then <static_base> == rw_base. Otherwise <static_base> is the static base address of the data for the current instantation which is held in R9. The self entry is also used to calculate the real entry points of the modules various entry points (start, init, final, service, title, help, cmdtbl, swi_handler) as follows. <real_start>= start + (<module_address> - self) <real_init>= init + (<module_address> - self) <real_final> = final + (<module_address> - self) <real_service> = service + (<module_address> - self) <real_title>= title + (<module_address> - self) <real_help> = help + (<module_address> - self) 3-22 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use <real_cmdtbl>= cmdtbl + (<module_address> - self) <real_swi_handler>= swi_handler + (<module_address> - self) start The start entry point is called to execute a module. A module does not have to have a start entry. In this case the start entry should be 0. The start code is only ever called after the module has been instantiated by a call to its init entry. A C language definition of this entry point is as follows: typedef void (*StartCode)(char *cmd); Where on entry: R0 = pointer to static data R9 = ModuleHandle returned by init init The init entry point is called to instantiate a module. The value returned is used to identify the module instantiation in subsequent calls to other entries. The value returned is passed in R9 to other entry points. Usually the init entry will allocate memory for its static data and initialise the static data. It will then return a pointer to its static data in R0. The init entry may be 0 in which case the init entry is not called. A C language definition of this entry point is as follows: typedef struct ModuleInfo *ModuleHandle; typedef ModuleHandle (*InitCode)(void); Where on exit: R0 = Pointer to static data. R9 = ModuleHandle used in subsequent calls to other entry points. final The final entry point is called to finalize a module. The module should free any resources allocated by it. Usually a module will free its static data which is pointed to by R0 on entry. The final entry may be 0 in which case the final entry is not called. A C code definition of this entry point is as follows: typedef void (*FinalCode)(void); Where on entry: R9 = ModuleHandle return by init ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-23 Bootstrap Loader Setup and Use service The service entry is called to alert a module of various conditions. The module may use this to intercept certain conditions. For example, a debugger module might intercept a GO or DOWNLOAD service call. To intercept a service call the module should return a service continuation routine pointer in R0. This will then be called when the system is unthreaded, just before it returns to the original caller. If the module does not want to intercept the call it should return 0 in R0. If a module does not support any service the value 0 should be used. The C code definitions for the service entry point as well as a service continuation routine are shown below: typedef void (*ServiceCont)(void); typedef ServiceCont (*ServiceCode)(int service); Where on entry: R0 = Service number R9 = ModuleHandle returned by init And on exit: R0 = Address of service continuation routine. title The title entry points to the title string for the module. This should be a 0 terminated string of16 characters or less. A C code definition of this is: typedef char *TitleString; help The help entry points to the help string for the module. A C code definition of this is: typedef char *HelpString; The actual help string should use the following format: <Module Name> V.VV (DD MMM YYYY) <Comment> cmdtbl The command table points to an array of command descriptions each having the format shown below. The array is terminated by an entry with a command field of 0. typedef struct CmdTable CmdTable; typedef void (*CommandCode)(char *cmd); struct CmdTable { char 3-24 *command; © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use CommandCode code; unsigned flags; char *syntax; char *help; }; Given that the module may be relocatable the real address of the command, code, syntax and help entries are calculated using the real address calculations shown below. The cmdtbl field is optional and may be 0 if no commands are supported. <real_command> = command + (<module_address> - self) <real_code> = code + (<module_address> - self) <real_syntax> = syntax + (<module_address> - self) <real_help> = help + (<module_address> - self) command This points to the name of the command. The command name must be less than 16 characters for command tabulation in the help command to work correctly. The command may be in any mixture of upper and lower case, though good taste should prevail. The Command Line Interface (CLI) performs a case insensitive match on commands. code This entry is called when a command matching the command field is entered. If the command wishes to unthread the system, it should return the address of a continuation routine in R0. This can be used, for example, by a debugger when a go command is executed. The debugger will wish to unwind the Supervisor Control (mode) (SVC) stack before continuing execution of the debugger. The debugger can do this by returning the address of a continuation routine in R0. The C code definition of both the continuation and command entry points are shown below: typedef void (*CommandCont)(void); typedef CommandCont (*CommandCode)(char *cmd); Where on entry: R0 = command tail And on exit: R0 = Address of continuation routine. ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-25 Bootstrap Loader Setup and Use flags The flags field contains flags for the command. At the moment no flags are defined, so all bits in this word should be zero. syntax This points to a string to give a syntax error message. The syntax message should be of the form Usage: <command> <arguments> help: This points to help on the command. swi_base The swi_base entry gives a SWI chunk base for the module. A chunk is 64 entries so bits 0 through 5 should be zero in the swi_base. When a SWI occurs which is in a modules swi_chunk range the swi_handler entry will be called. A value of 0 may be used if no SWIs are supported.The C code definition of this entry is: typedef unsigned SWIBase; swi_handler The swi_handler entry is called when a SWI is executed in the modules SWI chunk range. If the handler wishes to intercept the SWI and not return to the caller it should return the address of a continuation routine in R0. The system will then unwind the SVC stack and call the continuation routine. A value of 0 may be used if no SWIs are supported. The C code definition of both the continuation and command entry points are shown below: typedef void (*SWICont)(void); typedef SWICont (*SWICode)(unsigned swino, SWIRegs *regs); Where on entry: R0 = The SWI number modulo 64 R1 = Pointer to register R0 through R12 on the stack. These registers may be modified by the swi_handler. And on exit: R0 = Address of continuation routine 3-26 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use 3.6.8 Downloading your module Please refer to page 3-30 in order to download your application to FLASH. 3.6.9 download Usage: download [<address>] The download command downloads an image (for example an application) into RAM. The image must be converted to uuencoded format before downloading. If no address is specified the image is downloaded at the address 0x8000, otherwise it is downloaded at the address specified. To download an image you must take the following steps: 1. Convert the image to uuencoded format using uuencode (uuencode is a standard utility in UNIX). Please see 3.6.5Converting your application to uuencoded format on page 3-17. For PCs, a copy may be obtained as part of the CYGWIN32 distribution from ftp://ftp.cygnus.com/pub/gnu-win32/gnu-win32/). 2. Enter the download command at the Boot: prompt. 3. Transmit the uuencoded file down the serial line using your terminal emulator’s transmit file option. If you are using HyperTerminal on a PC you should use the Send Text file option under the Transfer menu, and enter the name of the uuencoded file you wish to download in the dialog box. If you are using tip on a UNIX system, use the tip command < ~> > followed by the name of the uuencoded file you wish to download. Note that you may need to press <RETURN> before entering < ~> >. If you are using HyperTerminal on a PC you should use the Send Text file option under the Transfer menu, and enter the name of the uuencoded file you wish to download in the dialog box. For example: Boot: download Ready to download. Use ’transmit’ option on terminal emulator to download file. <Use terminal emulator to download uuencoded filed> Loaded file dhry at address 0x00008000, size = 0000d79c The output you get will depend upon the terminal emulator you are using. If the BootStrap loader detects any errors during downloading, it will print a message similar to: Error: 00000001 errors encountered during download. ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-27 Bootstrap Loader Setup and Use If this occurs you should try downloading again. If you are using a higher baud rate (57600 or 115200) you should ensure that you are using a high-quality cable which is less than 1.8m (6 feet) long. If you are getting persistent errors you should try using a lower baud rate. Note If after having entered download you want to exit the download function without downloading an image you should type CTRL-D. 3.6.10 go Usage: go [<program arguments>] The go command starts, in user mode, the execution of a program previously downloaded using the download command. The starting address of the program is set to the address at which the program was downloaded. Arguments to the program may be specified after the go command. For example, if you were to build and download the following program --- echo.c --#include <stdio.h> int main(int argc, char **argv) { int i; for (i = 0; i < argc; i++) puts(argv[i]); return 0; } and then run it with the command Boot: go 1 2 3 4 you will get the following output: 1 2 3 4 Program terminated with return code 00000000 3-28 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Bootstrap Loader Setup and Use For details on how to prepare programs for download you should refer to section 3.6.1 Preparing an application for downloading into SRAM. You should note that on entry to a program using the go command, the stack pointer is not initialised. You should ensure that you initialize the stack pointer early in your program initialization code, and especially before you call any functions written in C. In the case of the program listed above, it is linked with the C library that performed the initialization prior to calling the C code. 3.6.11 gos Usage: gos [<program arguments>] The gos command is very similar to the go command except that it enters the program in Supervisor (SVC) mode instead of in User mode. On entry the SVC stack pointer is initialized to a small (about 1KB) stack. 3.6.12 pc Usage: pc <address> The pc command sets the value of the stored Program Counter (PC). This command is used to set the address before doing a go or gos command. The go and gos commands read the stored pc into the ARM pc register (r15). If executed without any argument the pc command prints the current value of the stored pc. 3.6.13 flashwrite Usage: flashwrite <address><source><length> This writes the area of memory specified by source and length to the flash, starting at the address specified by address. The address is the mapped address of the flash memory on the board. To convert a flash offset to an address, add 0x4000000, which is the base address of the flash in the board’s memory map. Caution Be very careful that you do not overwrite the BootStrap loader when writing the flash. The BootStrap loader resides in the lower 16KB of the flash (from 0x4000000 to 0x4004000). You should never use the flashwrite command to write an address in this range. If you do, you will be unable to recover control of the board. ARM DDI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 3-29 Bootstrap Loader Setup and Use 3.6.14 flashload Usage: flashload <address> Flashload performs a download command and then writes the result of the download into flash at the specified address. Caution As with flashwrite do not attempt to load anything into the lower 16KB of flash memory. 3.6.15 FlashErase Usage: flashErase <address length> FlashErase erases the section of flash specified by address and length by overwriting it with 0xFF. Caution As with flashwrite and flashload do not attempt to erase flash in the lower 16KB region of the flash. 3-30 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DDI 0091A Chapter 4 Angel Debug Monitor Setup and Use This chapter describes: ARM DUI 0091A • the basic setup with the Angel Debug Monitor • setting up the armsd command line debugger to use the Angel Debug Monitor. © Copyright ARM Limited 1998. All rights reserved. Open Access 4-1 Angel Debug Monitor Setup and Use 4.1 Overview The Angel Debug Monitor is a program that is pre-written in the FLASH ROM of the Evaluation Board as a Bootstrap Loader module. Angel allows the debug and control of software running on the Evaluation Board. When the Evaluation Board is powered on, the Bootstrap Loader eventually executes the Angel Debug Monitor (unless this default behavior is changed). Angel re-initializes the board and sets up a communication channel with a debugger on the host PC through the serial port. It is this interaction between the host-based debugger and Angel that allows software to be downloaded to the Evaluation board and debugged in place. In order to control the downloaded software, Angel interacts with it and in some cases actually modifies it—for instance, to set software breakpoints. For more detailed information consult the documentation found onthe ARM website at http://www.arm.com. 4-2 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Angel Debug Monitor Setup and Use 4.2 Basic setup with the Angel Debug Monitor Host PC ....... ....... Null modem cable D1 D2 D3 D4 JP5 INTERRUPT P1 SW1 LH77790A J1 SW2 RESET D5 Power adapter (to mains power socket) Figure 4-1 Angel Debug Monitor setup configuration ARM DUI 0091A 1. Connect the null modem cable to the evaluation board. 2. Connect the other end of the cable to the host PC, making a note of the serial port that is used. ADW will require this information later. 3. Connect the power adapter to the power connector on the evaluation board. 4. Connect the power adapter to the mains power socket. The red LED power indicator D5 will light up. 5. Press the reset button on the evaluation board. The four general purpose LEDs should flicker and the green LED D1should remain on. This indicates the board has been initialized and is working correctly. © Copyright ARM Limited 1998. All rights reserved. Open Access 4-3 Angel Debug Monitor Setup and Use 4.3 4.3.1 4.3.2 Setting up ARM Debugger for Windows for the Angel Debug Monitor Installing software on the host PC 1. Install the ARM Software Development Toolkit from the CD-ROM. Instructions for this installation can be found on the CD-ROM packaging. 2. If you wish to use the Angel C library you should use the ARM Debugger for Windows (ADW) and the Angel module on the Evaluation Board to download your image. Configuring the ARM Debugger for Windows for the evaluation board To configure the ARM Debugger for Windows (ADW) to use the correct serial port when communicating with the evaluation board: 4-4 1. Run the ADW by clicking on its icon in the Windows Start dialog. Do not run the debugger through the ARM Project Manager. 2. Select Options→Configure Debugger.... The Debugger Configuration dialog box appears. 3. Select the Target tab, and Remote_A as the target Environment. 4. Select Configure.... The Angel Remote Configuration dialog box will appear. © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Angel Debug Monitor Setup and Use Figure 4-2 The Debugger Configuration dialogue box ARM DUI 0091A 5. In the Angel Remote Configuration dialog box select Serial and the COM port used to connect the Angel to the evaluation board. 6. Select OK. The Debugger Configuration dialog box will appear. 7. Select OK. The debugger is now restarted. © Copyright ARM Limited 1998. All rights reserved. Open Access 4-5 Angel Debug Monitor Setup and Use 4.3.3 Setting up armsd (Command line debugger) to use the Angel Debug Monitor 1. 2. Follow the procedure in 4.2 Basic setup with the Angel Debug Monitor. At the DOS command line type: armsd -li -adp -port s=1 -linespeed 9600 where 4-6 -li set the debugger to little endian mode -adp set the communication protocol to ARM Debug Protocol for Angel. -p s=1 set the serial port to COM1. Use COM2 if that is the port being used. -linespeed 9600 sets the Baud rate between the host and the Angel on the Evaluation board to 9600 Baud. © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Chapter 5 EmbeddedICE Setup and Use This chapter describes setup with an EmbeddedICE unit. ARM DUI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 5-1 EmbeddedICE Setup and Use 5.1 Overview An EmbeddedICE unit is effectively a protocol converter. It communicates with the host PC using the ARM Remote Debug Protocol over a serial cable in the same way as the Angel Debug Monitor described in Chapter 4, Angel Debug Monitor Setup and Use. The EmbeddedICE unit converts the ARM Remote Debug Protocol into an equivalent JTAG type command stream, which it uses to communicate with the evaluation board. This JTAG communication stream actually controls two components within the microcontroller itself—the TAP Controller and the EmbeddedICE Macrocell. The TAP Controller uses scan chains within the microcontroller to insert instructions directly into the processor core and retrieve the contents of the internal bus. The inserted instructions may be executed at slow debug speed or full speed. By inserting certain instructions, the TAP Controller is able to retrieve or change the core or system state. The EmbeddedICE Macrocell implements breakpoints and watchpoints at full speed. The instruction or address data of interest is written to the EmbeddedICE Macrocell, which compares this to the instructions and data the ARM core is issuing and receiving on the internal bus. When a match is made, the EmbeddedICE Macrocell stops the processor by putting it into debug mode. This combination of the EmbeddedICE unit, the TAP Controller and EmbeddedICE Macrocell provide all the capabilities of the Angel Debug Monitor with a primary advantage of being unobtrusive. For instance, code in ROM can be debugged using breakpoints when an EmbeddedICE is used. For more detailed information about the available EmbeddedICE and compatible products, visit the ARM web site at http://www.arm.com. 5-2 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A EmbeddedICE Setup and Use 5.2 Setup with an EmbeddedICE unit EmbeddedICE power supply Host PC EmbeddedICE unit Serial cable Optional parallel cable Ribon cable D1 D2 D3 D4 JP5 P1 SW1 INTERRUPT LH77790A J1 SW2 RESET D5 Power adapter (to mains power socket) Figure 5-1 Angel Debug Monitor setup configuration ARM DUI 0091A 1. Connect the EmbeddedICE unit to the host PC using the serial cable. 2. Connect the power supply to the EmbeddedICE unit. 3. Connect the evaluation kit power adapter to the power connector on the evaluation board. 4. Connect the evaluation kit power adapter to a mains power socket. The red LED on the board will light to indicate power. 5. Press the reset button on the evaluation board. The four general-purpose LEDs will flicker and the green LED will remain ON. This indicates that the board has been initialized and is working correctly. 6. Connect the ribbon cable provided with the EmbeddedICE unit to the JTAG connector on the evaluation board. The other end of this ribbon cable should be connected to the EmbeddedICE unit. 7. Install the ARM Software Development Toolkit from the CD-ROM. The specific instructions for this installation are found on the CD-ROM packaging. © Copyright ARM Limited 1998. All rights reserved. Open Access 5-3 EmbeddedICE Setup and Use 5-4 8. Configure the debugger on the host PC to use the EmbeddedICE unit. Consult the documentation provided with the EmbeddedICE unit for details. 9. Select View, then select Debugger internals, then change top-of-memory to 0x20000. © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Chapter 6 Multi-ICE Setup and Use This chapter describes setup with a Multi-ICE unit. ARM DUI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 6-1 Multi-ICE Setup and Use 6.1 Overview Multi-ICE is a system for debugging embedded processor cores via a JTAG interface. It is made up of four elements: • Debug hardware within the ASIC—in the case of ARM processors, this is the EmbeddedICE macrocell. • The Multi-ICE interface unit which connects to the JTAG port on the target system and the parallel port on a host PC. • The Multi-ICE Server software running on the Host PC, which manages the connection between the debug software tools and the Multi-ICE interface unit. • The Debug software tools, which communicate with the Server via the Multi-ICE dll—in the case of ARM processors, this will be MDW (Multi-processor Debugger for Windows). The JTAG standard originally described daisy-chaining multiple devices on a PCB. This concept has now been extended to multiple cores within a single package. If there are more than one JTAG TAP Controller within your ASIC, then they should be serially chained so that Multi-ICE can communicate with all of them. Several configurations of multiple TAP controllers are possible: 6-2 • The TAP controllers are serially chained within the ASIC. This is the natural extension of the JTAG board level interconnection, and is the one recommended for use with Multi-ICE. There is no increase in package pin count. • Each set of JTAG connections is pinned out separately. This gives greatest flexibility on the PCB but at the cost of many pins on the device package. If this method is chosen to simplify wafer-level testing, then the JTAG ports should be serially chained on the PCB when it is desired to use Multi-ICE. The separate JTAG ports could be tracked to separate headers on the PCB, but this then needs one Multi-ICE Interface Unit per header and is unnecessary. • Multiplexing of data signals. It is possible to provide some means of gating TCK or TMS signals so that only one TAP controller is active at once, and then to multiplex their data outputs so that the JTAG debug interface sees a single device. There is no standard definition of how to build or control such circuitry, and this method is not supported by Multi-ICE. © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Multi-ICE Setup and Use 6.2 Setup with a Multi-ICE unit Host PC Multi-ICE unit Parallel cable Ribon cable Adaptor D1 D2 D3 D4 JP5 P1 SW1 INTERRUPT LH77790A J1 SW2 RESET D5 Power adapter (to mains power socket) Figure 6-1 Angel Debug Monitor setup configuration ARM DUI 0091A 1. Connect the Multi-ICE unit to the host PC using the serial cable. 2. Connect the evaluation kit power adapter to the power connector on the evaluation board. 3. Connect the evaluation kit power adapter to a mains power socket. The red LED on the board will light to indicate power. 4. Press the reset button on the evaluation board. The four general-purpose LEDs will flicker and the green LED will remain ON. This indicates that the board has been initialized and is working correctly. 5. Connect the ribbon cable provided with the Multi-ICE unit to the 20 to 14-pin JTAG adaptor, and from there to the JTAG connector on the evaluation board. The other end of this ribbon cable should be connected to the Multi-ICE unit. 6. Install the ARM Software Development Toolkit from the CD-ROM. The specific instructions for this installation arefound on the CD-ROM packaging. 7. Install Multi-ICE on the host PC. © Copyright ARM Limited 1998. All rights reserved. Open Access 6-3 Multi-ICE Setup and Use 6-4 8. Configure the debugger on the host PC to use the Multi-ICE unit. Consult the documentation provided with the Multi-ICE unit for details. 9. Select View, then select Debugger internals, then change top-of-memory to 0x20000. © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Appendix A Evaluation Board Schematics This chapter provides: ARM DUI 0091A • the main evaluation board schematic • the evaluation board miscellaneous Schematic. © Copyright ARM Limited 1998. All rights reserved. Open Access A-1 © Copyright ARM Limited 1998. All rights reserved. Open Access 0.1uF C20 21 20 19 18 17 15 14 13 D9 2 D8 2 64K x 8 21 20 19 18 17 15 14 13 U3 NOE 2 NWAIT 2 D15 2 D4 2 D5 2 D6 2 D7 2 NWE 2 NCE1/NCAS1 NWE NOE 0.1uF C18 I/O7 I/O6 I/O5 I/O4 I/O3 I/O2 I/O1 I/O0 I/O7 I/O6 I/O5 I/O4 I/O3 I/O2 I/O1 I/O0 A 31 3 28 4 25 23 26 27 5 6 7 8 9 10 11 12 24 29 22 30 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 31 3 28 4 25 23 26 27 5 6 7 8 9 10 11 12 24 29 22 30 D14 2 D13 2 D12 2 D11 2 D10 2 OE WE CS1 CS2 D0 D1 D2 D3 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 OE WE CS1 CS2 4 74AC02 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 CS2/UBL SRAM(Upper 8 data bits) A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 CS2/LBL 2 3 U10B 74AC02 D2 A20 A22 A24 D0 A12 A14 A16 A18 A4 A6 A8 A10 2 D0 2 D1 2 D2 2 D3 XCLK_1 A0 A3 VCC 5 6 8 9 A0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 JP1 HEADER50 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 NBW B CE WE OE A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 AT29C020 22 31 24 12 11 10 9 8 7 6 5 27 26 23 25 4 28 29 3 2 30 U2 1000pF C35 1000pF C34 I/O0 I/O1 I/O2 I/O3 I/O4 I/O5 I/O6 I/O7 0.1uF C8 0.1uF C21 0.1uF C7 0.1uF C6 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28 31 32 33 34 35 36 37 38 41 42 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23 A24 A25 D0 D1 D2 D3 0.1uF C22 D4 D5 D6 D7 5 6 7 8 A0 A1 A2 A3 3 R11 15 15 R10 8 14 1 XCLK_1 24 Mhz OUT OE5V_IN VCC C13 D2 D3 A20 A21 A22 A23 A24 A25 D0 D1 A12 A13 A14 A15 A16 A17 A18 A19 A4 A5 A6 A7 A8 A9 A10 A11 A0 A1 A2 A3 XCLK 0.1uF 1000pF C33 JP4 HEADER50 VCC VCC 0.1uF C14 VCC 0.1uF C11 VCC 0.1uF C15 VCC 0.1uF C10 VCC 1000pF C32 VCC HEADER50 JP2 0.1uF C12 C9 0.1uF PWM2 PWM1 PWM0 LCDCNTL S 98 97 96 95 94 93 92 91 LH77790 Locate C2 as close 1000pF D LM293 as possible to 2 4 6 8 10 12 14 33 1 33 R14 MCLK VCC VCC R13 UCLK 33 CTCLK 0.1uF 1 1 1000pF C31 HEADER14 1 3 5 7 9 11 13 JP5 2 C5 0.1uF C4 2 R12 2 NTXD1 Embedded ICE Connector VCC SW2 R15 4.7K R16 33 1000pF C30 INT0 NRXD1 3 2 1 22 uF C37 + 13 14 10 17 8 20 VCC 1 OR-LED D5 R8 1.0K 22 uF C2 + 3 Date: Size C Title OUT U7 LM2937 copper area thermally connected to package. C2+ C2+ C2C2- 1 100pF 49 47 45 43 41 39 37 35 33 31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 1 HEADER50 SW1 0.1uF C1 Tact switch 1 4 Reset Switch Wednesday, May 06, 1998 Document Number EIO-0041B ARMLAB-1 Eval Board IN R3 4.7K VCC PWM2 PWM0 S CP1 NRXD0 INT4 INT2 INT0 CTOUT0 UCLK NRXD2 NRXD1 PA2 PA0 CTOUT2 CTOUT1 50 48 46 44 42 40 38 36 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 E E R1 4.7K C24 100pF C26 JP3 12 15 16 11 19 4 18 5 VCC NRESETI R2in C1+ C1VVV+ MAX233 R1in R2out T2out T1out U8 R1out T1in T2in 0.1uF C23 LM2937 needs to have >=0.5 square inches of Tact switch 1 4 VCC Interrupt Switch (INT0) C36 NRXD0 INT5 INT4 INT3 INT2 INT1 INT0 NRESETI 108 107 106 105 104 103 102 101 CP1 CP2 NTXD2 NRXD2 NTXD1 NRXD1 NTXD0 119 118 117 116 115 114 113 112 111 NRESETO CTOUT0 CTGATE0 CTOUT2 CTGATE2 CTOUT1 CTGATE1 PA2 PA1 PA0 C3 VCC VCC VCC 0.1uF 128 127 126 125 124 123 122 121 VCC PWM2 PWM1 PWM0 LCDCNTL S MCLK CP1 CP2 NRXD0 INT5 INT4 INT3 INT2 INT1 INT0 NRESETI NRESETO CTOUT0 CTGATE0 UCLK NTXD2 NRXD2 NTXD1 NRXD1 NTXD0 PA2 PA1 PA0 CTCLK CTOUT2 CTGATE2 CTOUT1 CTGATE1 U1 PC0/NRTS1 PB3/NCTS1 TDI TMS TCK TDO D 2 C VCC C16 0.1uF 49 47 45 43 41 39 37 35 33 31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 1 component same pad footprint for this VCC 13 14 15 17 18 19 20 21 VCC VCC VCC VCC 1 U9 GR-LED D1 R7 1.0K PC1/NRTS0 PB7/NDSR0 PB5/NRI0 PB3/NCTS1 50 48 46 44 42 40 38 36 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 Use surface mount socket with NCE0/NCAS0 NWE NOE A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 D3 A21 A23 A25 D1 A13 A15 A17 A19 A5 A7 A9 A11 A1 A2 possible to LH77790 Locate as close as 0.1uF C17 R9 0.1 1 P D15 D14 D13 D12 D11 D10 D9 D8 VCC D7 D6 D5 D4 VCC 64K x 8 U4 SRAM(Lower 8 data bits) 74AC02 10 OR-LED D2 PC7 R6 1.0K PC6 52 51 50 49 48 47 2 1 NCE1/NCAS1 NWE NOE CS2/UBL1 U10A CS2/LBL U10C GR-LED AMB-LED VCC D4 D3 R5 1.0K 2 2 PB4/NCTS0 2 PB3/NCTS1 2 PB2/NRI1 2 PB1 2 PB0 2 PA7 2 PA6 2 PA5 2 PA4 2 PA3 2 PA2 2 PA1 2 PA0 2 NBB 2 TDI 2 TCK 2 NADBE 2 PB0 2 PC0/NRTS1 2 PC1/NRTS0 2 PC2/NDTR0 2 PC7 2 PC6 PC4 R4 1.0K PC5 2 2 3 4 2 2 PB7/NDSR0 2 PC5 PB6/NDCD0 2 PB5/NRI0 2 PC4 2 D9 D8 D7 D6 D5 D4 2 1 GND D4 D6 D8 2 PC3 TDI TDO BREQ BGR NBB NADBE XREQ XACK 62 61 60 59 58 57 56 55 D10 D11 D12 D13 D14 D15 /RAS0 /RAS1 2 TMS C TDO TDI 165 166 167 168 169 170 171 172 /RAS1 /RAS0 D15 D14 D13 D12 D11 D10 74 73 72 71 70 69 68 67 66 65 1 D5 D7 D9 PC3 PC4 PC5 PC6 PC7 TCK TMS NTRST NWAIT NBW NOE NWE NCE5/NCAS5 NCE4/NCAS4 NCE3/NCAS3 NCE2/NCAS2 NCE1/NCAS1 NCE0/NCAS0 84 83 82 81 80 79 78 77 N D11 D13 D15 /RAS1 B XACK NBB TDI XACK NADBE BGR TDO 155 156 157 158 159 160 161 162 D0 D1 D2 D3 NADBE NBB BGR PB1 PA7 PA5 PA3 PB3/NCTS1 PB4/NCTS0 PB5/NRI0 PB6/NDCD0 PB7/NDSR0 PC0/NRTS1 PC1/NRTS0 PC2/NDTR0 P D10 D12 D14 /RAS0 2 145 146 147 148 149 150 151 152 VD7 VD6 VD5 VD4 VD3 VD2 VD1 VD0 D4 D5 D6 D7 D8 D9 TMS PC7 PC5 PC3 XCLKDIS TCK PC6 PC4 XCLKDIS TMS TCK PC7 PC6 PC5 PC4 PC3 1 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2/NRI1 NCE1/NCAS1 NCE3/NCAS3 NCE5/NCAS5 2 135 136 137 138 139 140 141 142 2 NOE NWAIT 2 1 NCE0/NCAS0 NCE2/NCAS2 NCE4/NCAS4 NWE NBW 2 VD1 VD3 VD5 VD7 1 100pF C25 R2 4.7K VCC Sheet connected to the 3 VCC of connector 2 2 CTGATE1 CTGATE2 2 Rev B PA2 2 CTCLK 2 UCLK 2 NRXD2 2 NRXD1 2 NRXD0 2 2 CTGATE0 INT5 2 INT4 2 INT3 2 INT2 2 INT1 2 holes of the DB9 PWM1 LCDCNTL MCLK CP2 J1 Jack 100pF C29 GND RI DTR CTS TXD RTS RXD DSR DCD SIGNALS plated through INT5 INT3 INT1 NRESETI 1 DB9 P1 100pF C28 5 9 4 8 3 7 2 6 1 connector holes of the DB9 plated through connected to the This GNDmust be This GNDmust be PA1 CTCLK CTGATE2 CTGATE1 NRESETO CTGATE0 NTXD2 NTXD1 NTXD0 100pF C27 2 VD0 VD2 VD4 VD6 1 PC2/NDTR0 PC0/NRTS1 PB6/NDCD0 PB4/NCTS0 1 PB2/NRI1 PB0 PA6 PA4 1 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 PC2/NDTR0 PC1/NRTS0 PC0/NRTS1 PB7/NDSR0 PB6/NDCD0 PB5/NRI0 PB4/NCTS0 PB3/NCTS1 A-2 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 11 NCE0/NCAS0 NCE1/NCAS1 NCE2/NCAS2 NCE3/NCAS3 NCE4/NCAS4 NCE5/NCAS5 NWE NOE NBW NWAIT 1 PB2/NRI1 PB1 PB0 PA7 PA6 PA5 PA4 PA3 1 10 VD0 VD1 VD2 VD3 VD4 VD5 VD6 VD7 A 1 2 3 4 Evaluation Board Schematics 2 N 2 2 ARM DUI 0091A ARM DUI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access 1 2 3 4 1 PC7 1 PB1 1 PB2/NRI1 1 PB3/NCTS1 1 PB4/NCTS0 1 PB5/NRI0 1 PB6/NDCD0 1 PB7/NDSR0 1 PA0 1 PA1 1 PA2 1 PA3 1 PA4 1 PA5 1 PA6 1 PA7 1 TDI 1 TMS 1 TCK 1 NADBE 1 PB0 1 PC0/NRTS1 1 PC1/NRTS0 1 PC2/NDTR0 1 PC3 1 PC4 1 PC5 1 PC6 A PB1 PB2/NRI1 PB3/NCTS1 PB4/NCTS0 PB5/NRI0 PB6/NDCD0 PB7/NDSR0 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 right onboard Place near the top TDI TMS TCK NADBE PB0 PC0/NRTS1 PC1/NRTS0 PC2/NDTR0 PC3 PC4 PC5 PC6 PC7 left onboard Place near the top A RP4O 15 RP4N 14 RP4M 13 RP4L 12 RP4K 11 RP4J 10 RP4I 9 RP4H 8 RP4G 7 RP4F 6 RP4E 5 RP4D 4 RP4C 3 RP4B 2 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 47K RP3O 15 RP4A 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K RP3N 14 RP3M 13 RP3L 12 RP3K 11 RP3J 10 RP3I 9 RP3H 8 RP3G 7 RP3F 6 RP3E 5 RP3D 4 RP3C 3 RP3B 2 RP3A 1 1 NRXD0 1 NRXD1 1 NRXD2 1 UCLK 1 CTCLK B 1 D15 1 NWE 1 NOE 1 NWAIT NRXD0 NRXD1 NRXD2 UCLK CTCLK NWE NOE NWAIT right on board Place near the bottom B RP2O 15 RP2N 14 RP2M 13 RP2L 12 RP2K 11 RP2J 10 RP2I 9 RP2H 8 RP2G 7 RP2F 6 RP2E 5 RP2D 4 RP2C 3 RP2B 2 RP2A 1 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 C C 1 D8 1 D9 1 D10 1 D11 1 D12 1 D13 1 D14 1 D7 1 D6 1 D5 1 D4 1 D0 1 D1 1 D2 1 D3 D8 D9 D10 D11 D12 D13 D14 D7 D6 D5 D4 D0 D1 D2 D3 left on board Place near the bottom RP5O 15 RP5N 14 RP5M 13 RP5L 12 RP5K 11 RP5J 10 RP5I 9 RP5H 8 RP5G 7 RP5F 6 RP5E 5 RP5D 4 RP5C 3 RP5B 2 RP5A 1 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 D D 1 NBB 1 INT1 1 INT2 1 INT3 1 INT4 1 INT5 1 CTGATE0 1 CTGATE1 1 CTGATE2 NBB INT1 INT2 INT3 INT4 INT5 CTGATE0 CTGATE1 CTGATE2 Date: Size C Title RP1O 15 RP1N 14 RP1M 13 RP1L 12 RP1K 11 RP1J 10 RP1I 9 RP1H 8 RP1G 7 RP1F 6 RP1E 5 RP1D 4 RP1C 3 RP1B 2 RP1A 1 Place near the top right on board 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K 47K Tuesday, April 21, 1998 Document Number EIO-0041B ARMLAB-1 Eval Board 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 E E Sheet 2 of 2 Rev B 1 2 3 4 Evaluation Board Schematics A-3 Evaluation Board Schematics A-4 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Appendix B Evaluation Board Layout This chapter provides: ARM DUI 0091A • the top routing layer and silk screen • the bottom routing layer. © Copyright ARM Limited 1998. All rights reserved. Open Access B-1 Evaluation Board Layout B-2 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Evaluation Board Layout ARM DUI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access B-3 Evaluation Board Layout B-4 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A Glossary ARM Evaluation Board User Guide ARM DUI 0091A © Copyright ARM Limited 1998. All rights reserved. Open Access Glossary-1 Abbreviations The following abbreviations are used in this document: BB BW C CAS CE CH CLI CP CS CTCLK CTGATE CTOUT CTS D DCD DRAM DSR DTR EEPROM EmbeddedICE EMC EOF EOR ESD FCC ICE GND GNU INT I/O IrDA/DASK JTAG LCDCNT MCLK n nBW NC Glossary-2 byte boot byte wide access the programing language C column address select chip enable channel command line interface shift/pixel clock chip select counter/timer external clock input signal counter/timer control gate counter/timer output clear to send external data bus data carrier detect dynamic random access memory data send ready data transmit ready electronically erasable programmable read-only memory This is a debugging system used to provide many functions of an ICE. electromagnetic compatability end of file end of range electro-static discharge Federal Communications Commission in-circuit emulator ground GNU’s not UNIX interrupt input/output infra-red data association/digital amplitude key shifting joint test action group lcd control signal ac modulation signal not (inverted, which means active low) byte wide (active low) no connect © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A nCE nCS nICERST nOE nTRST nWAIT P PC PID PTH PWM RAM RAS RESETI RESETO RI ROM RTS RxD SDT SPU SRAM SVC SWI TAP TCK TDI TDO TMS TQFP TxD UART UCLK VCC VD VDD VSS WE XCLK ARM DUI 0091A chip enable (active low) chip select (active low) ICE reset (for tablet unit, active low) output enable (active low) test system (JTAG) reset (active low) wait state enable (active low) port program counter position independent data plated through hole pulse width modulation random access memory row address select reset input reset output ringing indicator read only memory ready to send receive data software development toolkit safe power up static random access memory supervisor control (mode) software interrupt test access port test clock JTAG test embeddedICE data input JTAG test embeddedICE data output JTAG test embeddedICE mode select thin quad flat pack transmit data universal asynchronous receiver/transmitter UART/DASK clock voltage at collect video data voltage at drain voltage at substrate (0V, GND) write enable external clock © Copyright ARM Limited 1998. All rights reserved. Open Access Glossary-3 Glossary-4 © Copyright ARM Limited 1998. All rights reserved. Open Access ARM DUI 0091A