Matsushita MN103E010 (AM33/2.0) ASB2305 Board

Overview

RedBoot supports the debug serial port and the built in ethernet port for communication and downloads. The default serial port settings are 115200,8,N,1 with RTS/CTS flow control. RedBoot can run from either flash, and can support flash management for either the boot PROM or the system flash regions. These configurations are supported:

Initial Installation

Unless a pre-programmed system flash module is available to be plugged into a new board, RedBoot must be installed with the aid of a JTAG interface unit. To achieve this, the RAM based RedBoot must be loaded directly into RAM by JTAG and started, and then that must be used to store the ROM based RedBoot into the boot PROM.

These instructions assume that you have binary images of the RAM-based and boot PROM-based RedBoot images available.

Loading the RAM-based RedBoot via JTAG

To perform the first half of the operation, the following steps should be followed:

  1. Start the JTAG debugger software.

  2. Run the following commands at the JTAG debugger's prompt to set up the MMU registers on the CPU.

    ed 0xc0002000, 0x12000580
    
    ed 0xd8c00100, 0x8000fe01
    ed 0xd8c00200, 0x21111000
    ed 0xd8c00204, 0x00100200
    ed 0xd8c00208, 0x00000004
    
    ed 0xd8c00110, 0x8400fe01
    ed 0xd8c00210, 0x21111000
    ed 0xd8c00214, 0x00100200
    ed 0xd8c00218, 0x00000004
    
    ed 0xd8c00120, 0x8600ff81
    ed 0xd8c00220, 0x21111000
    ed 0xd8c00224, 0x00100200
    ed 0xd8c00228, 0x00000004
    
    ed 0xd8c00130, 0x8680ff81
    ed 0xd8c00230, 0x21111000
    ed 0xd8c00234, 0x00100200
    ed 0xd8c00238, 0x00000004
    
    ed 0xd8c00140, 0x9800f801
    ed 0xd8c00240, 0x00140000
    ed 0xd8c00244, 0x11011100
    ed 0xd8c00248, 0x01000001
    
    ed 0xda000000, 0x55561645
    ed 0xda000004, 0x000003c0
    ed 0xda000008, 0x9000fe01
    ed 0xda00000c, 0x9200fe01
    ed 0xda000000, 0xa89b0654
  3. Run the following commands at the JTAG debugger's prompt to tell it what regions of the CPU's address space it can access:

    ex 0x80000000,0x81ffffff,/mexram
    ex 0x84000000,0x85ffffff,/mexram
    ex 0x86000000,0x867fffff,/mexram
    ex 0x86800000,0x87ffffff,/mexram
    ex 0x8c000000,0x8cffffff,/mexram
    ex 0x90000000,0x93ffffff,/mexram
  4. Instruct the debugger to load the RAM RedBoot image into RAM:

    _pc=90000000
    u_pc
    rd redboot.ram,90000000
  5. Load the boot PROM RedBoot into RAM:

    rd redboot.prom,91020000
  6. Start RedBoot in RAM:

    g

    Note that RedBoot may take some time to start up, as it will attempt to query a BOOTP or DHCP server to try and automatically get an IP address for the board. Note, however, that it should send a plus over the serial port immediately, and the 7-segment LEDs should display “rh 8”.

Loading the boot PROM-based RedBoot via the RAM RedBoot

Once the RAM RedBoot is up and running, it can be communicated with by way of the serial port. Commands can now be entered directly to RedBoot for flashing the boot PROM.

  1. Instruct RedBoot to initialise the boot PROM:

    fi init
  2. Write the previously loaded redboot.prom image into the boot PROM:

    fi write -f 0x80000000 -b 0x91020000 -l 0x00020000
  3. Check that RedBoot has written the image:

    dump -b 0x91020000
    dump -b 0x80000000

    Barring the difference in address, the two dumps should be the same.

  4. Close the JTAG software and power-cycle the board. The RedBoot banners should be displayed again over the serial port, followed by the RedBoot prompt. The boot PROM-based RedBoot will now be running.

  5. Power off the board and unjumper ST18 to write-protect the contents of the boot PROM. Then power the board back up.

  6. Run the following command to initialise the system flash:

    fi init

    Then program the system flash based RedBoot into the system flash:

    load -r -b 0x91020000 /tftpboot/redboot_FLASH.bin
    fi write -f 0x84000000 -b 0x91020000 -l 0x00020000
  7. A similar sequence of commands can be used to program the boot PROM when RedBoot has been booted from an image stored in the system flash.

    load -r -b 0x91020000 /tftpboot/redboot_ROM.bin
    fi write -f 0x80000000 -b 0x91020000 -l 0x00020000

    See the Section called Persistent State Flash-based Configuration and Control in Chapter 2 for details on configuring the RedBoot in general, and also the Section called Flash Image System (FIS) in Chapter 2 for more details on programming the system flash.

Additional Commands

The exec command which allows the loading and execution of Linux kernels, is supported for this architecture (see the Section called Executing Programs from RedBoot in Chapter 2). The exec parameters used for ASB2305 board are:

-w <time>

Wait time in seconds before starting kernel

-c "params"

Parameters passed to kernel

<addr>

Kernel entry point, defaulting to the entry point of the last image loaded

The parameter string is stored in the on-chip memory at location 0x8C001000, and is prefixed by “cmdline:” if it was supplied.

Memory Maps

RedBoot sets up the following memory map on the ASB2305 board.

Physical Address Range   Description
-----------------------  -----------
0x80000000 - 0x9FFFFFFF  Cached Region
0x80000000 - 0x81FFFFFF  Boot PROM
0x84000000 - 0x85FFFFFF  System Flash
0x86000000 - 0x86007FFF  64Kbit Sys Config EEPROM
0x86F90000 - 0x86F90003  4x 7-segment LEDs
0x86FA0000 - 0x86FA0003  Software DIP Switches
0x86FB0000 - 0x86FB001F  PC16550 Debug Serial Port
0x8C000000 - 0x8FFFFFFF  On-Chip Memory (repeated 16Kb SRAM)
0x90000000 - 0x93FFFFFF  SDRAM
0x98000000 - 0x9BFFFFFF  Paged PCI Memory Space (64Mb)
0x9C000000 - 0x9DFFFFFF  PCI Local SRAM (32Mb)
0x9E000000 - 0x9E03FFFF  PCI I/O Space
0x9E040000 - 0x9E0400FF  AM33-PCI Bridge Registers
0x9FFFFFF4 - 0x9FFFFFF7  PCI Memory Page Register
0x9FFFFFF8 - 0x9FFFFFFF  PCI Config Registers
0xA0000000 - 0xBFFFFFFF  Uncached Mirror Region
0xC0000000 - 0xDFFFFFFF  CPU Control Registers

The ASB2305 HAL makes use of the on-chip memory in the following way:

0x8C000000 - 0x8C0000FF  hal_vsr_table
0x8C000100 - 0x8C0001FF  hal_virtual_vector_table
0x8C001000 -             Linux command line (RedBoot exec command)
           - 0x8C003FFF  Emergency DoubleFault Exception Stack

Currently the CPU's interrupt table lies at the beginning of the RedBoot image, which must therefore be aligned to a 0xFF000000 mask.

Resource Usage

The flash based RedBoot image occupies flash addresses 0x80000000 - 0x8001ffff. RedBoot also reserves RAM (0x90000000 - 0x9001ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x90000000 - 0x9001ffff. RAM physical addresses from 0x90050000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.

Rebuilding RedBoot

The instructions in Chapter 3 should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “asb2305”, “mn10300” and “asb2305” respectively. Note that the configuration export files supplied in the hal/mn10300/asb2305/VERSION/misc directory in the RedBoot source tree should be used.