ARM PID Hardware Setup

eCos comes with two ROM images that provide GDB support for the ARM PID board. The first ROM image provides a port of the CygMon ROM monitor, which includes a command-line interface and a GDB remote stub. The second ROM image provides a remote GDB stub only, which is a minimal environment for downloading and debugging eCos programs solely using GDB.

eCos, CygMon and the GDB stubs all support the PID fitted with both ARM7T and ARM9 daughterboards. CygMon and the stubs can be programmed into either the programmable ROM (U12) or the FLASH (U13). Pre-built forms of both ROM images are provided in the directory loaders/arm-pid under the root of your eCos installation, along with a tool that will program the stubs into the FLASH memory on the board. CygMon images are prefixed with the name 'cygmon' and GDB stub ROM images are given the prefix 'gdb_module'. Images may be provided in a number of formats including ELF (.img extension), binary (.bin extension) and SREC (.srec extension). Note that some unreliability has been experienced in downloading files using Angel 1.00. Angel 1.02 appears to be more robust in this application.

Installing the Stubs into FLASH

Program the FLASH

  1. Download the FLASH ROM image onto the PID board. For example. for the GDB stubs image:
    bash$ arm-elf-gdb -nw gdb_module.img
    GNU gdb 4.18-DEVTOOLSVERSION
    Copyright 1998 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License,
    and you are welcome to change it and/or distribute copies
    of it under certain conditions. Type "show copying" to see the conditions.
    There is absolutely no warranty for GDB. Type "show warranty" for details.
    This GDB was configured as "--host=i586-pc-cygwin32 --target=arm-elf".
    (no debugging symbols found)...
    (gdb) target rdi s=com1
    Angel Debug Monitor for PID (Built with Serial(x1), Parallel, DCC) 1.00
    (Advanced RISC Machines SDT 2.10)
    Angel Debug Monitor rebuilt on Jan 20 1997 at 02:33:43
    Connected to ARM RDI target.
    (gdb) load
    Loading section .rom_vectors, size 0x44 lma 0x60000
    Loading section .text, size 0x1f3c lma 0x60044
    Loading section .rodata, size 0x2c lma 0x61f80
    Loading section .data, size 0x124 lma 0x61fac
    Start address 0x60044 , load size 8400
    Transfer rate: 5169 bits/sec.
    (gdb) q 
    The program is running.  Exit anyway? (y or n) y 

  2. Now download the FLASH programmer tool

    bash$ arm-elf-gdb prog_flash.img 
    GNU gdb 4.18-DEVTOOLSVERSION
    Copyright 1998 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License,
    and you are welcome to change it and/or distribute
    copies of it under certain conditions. Type "show copying" to see
    the conditions. There is absolutely no warranty for GDB.  Type "show
    warranty" for details.
    This GDB was configured as "--host=i586-pc-cygwin32 --target=arm-elf".
    (gdb) target rdi s=com1
    Angel Debug Monitor for PID (Built with Serial(x1), Parallel, DCC) 1.00
    (Advanced RISC Machines SDT 2.10)
    Angel Debug Monitor rebuilt on Jan 20 1997 at 02:33:43
    Connected to ARM RDI target.
    (gdb) load
    Loading section .rom_vectors, size 0x44 lma 0x40000
    Loading section .text, size 0x44a4 lma 0x40044
    Loading section .rodata, size 0x318 lma 0x444e8
    Loading section .data, size 0x1c8 lma 0x44800
    Start address 0x40044 , load size 18888
    Transfer rate: 5596 bits/sec.
    (gdb) c
  3. The FLASH tool will output some text on the board serial port B at 38400 baud:

    ARM
    eCos
    
    FLASH here!
    manuf: 8, device: 40
    Error: Wrong Manufaturer: 08
    ... Please change FLASH jumper
  4. This text is repeated until you remove the jumper 7-8 on LK6. Then the output will be:

    manuf: 1F, device: A4
    AT29C040A recognised
    About to program FLASH using data at 60000..64000
    *** Press RESET now to abort!
  5. You have about 10 seconds to abort the operation by pressing reset. After this timeout, the FLASH programming happens:

    ...Programming FLASH 
    All done!
  6. Quit/kill the GDB process, which will hang.

  7. Next time you reset the board, the stub will be in control, communicating on Serial A at 38400 baud.

Installing the Stubs into ROM

  1. Program the binary image file gdb_module.bin into ROM referring to the instructions of your ROM programmer.

  2. Plug the ROM into socket U12 and install jumper LK6 pins 7-8 to enable the ROM.