CS452 - Real-Time Programming - Fall 2011

Lecture 31 - Power On II

Public Service Annoucements

  1. Acceleration/Deceleration: pdf
  2. Second train control demo: 24 November, 2011.
  3. Final demo: Tuesday, 6 December, 2011; Wednesday, 7 December, 2011
  4. Final exam: 10.30, Friday, 9 December, 2011 to 13.30, Saturday, 10 December, 2011.

Power On

When you turn on the power or press the reset button, what happens before you see the RedBoot> prompt?

This is not determined by the instruction set architecture (ISA).

What happens before that, and what appears at 0x00000000 is determined by the design of the system surrounding the CPU on the chip.

There are two pretty hard resets that can occur.

  1. Turning on the power
  2. Pressing the reset button

(Jumping to 0x00000000 is a much softer reset.)

Asserting the reset input of the SoC, asserts the reset output of the SoC.

Negating the reset input starts the boot sequence, with the SoC in its reset state. Ten hardware inputs determine how the SoC boots

These inputs allow the designer of the board hosting the SoC to determine enough characteristics of the boot state that it can be used for many applications

TS-7200 is set up for internal pre-boot with source from the flash on the 32-bit AHB

The AHB bus has all the important high-speed components

Initial state

  1. DRAM controller(s) not initialized
  2. Flash controller(s) not initialized
  3. MMU flat on power up, but might be screwed up on reset

In the AHB registers is a 16K block of ROM from 0x80090000 to 0x80093fff

There is almost no context

Pre-pre-boot Sequence

  1. Jump to 0x80090018.
  2. Turn on LEDs
  3. Disable watchdog timer
  4. Make the CPU completely vanilla. E.g.,
  5. Acquire boot state (for bus width) to set up 6 static memory controllers
  6. Acquire boot state (for bus width) to set up 4 dynamic memory controllers
  7. Clear boot mode `memory map'
  8. Acquire configuration inputs
  9. Switch
  10. In the first two cases the 2048 bytes contains a memory test followed by a loader.

Pre-boot Sequence

This code knows all about the EP9302, and all about the TS7200.

  1. Sets up a stack in the ethernet buffer
  2. Sets the CPSR to a vanilla state: no interrupts, svc mode
  3. Set up stack pointer in Mac FIFO
  4. Copies 260 words of code from flash to Mac FIFO
  5. Initializes memory controllers for the memory it has
  6. Configures GPIO.
  7. Turns off the watchdog timer
  8. Sets up the appropriate serial port for a monitor

Return to: