AT91RM9200 bootup
Boot Sequence:
- BMS Pin selects (AT91RM9200 Manual, 10.3.2.4, p.127)
- high: internal ROM (see [below])
- low: external 16bit non-volatile memory (see Manual)
- when using Internal ROM (AT91RM9200 Manual, 7. p.87)
- try to load and execute tiny program from SPI DataFlash
- try to load and execute tiny program from TWI EEPROM
- try to load and execute tiny program from from 8bit parallel non-volatile memory
- otherwise use "DBGU serial interface" and "USB Device Port" to let someone (Xmodem or DFU protocol) load and execute a tiny program.
- tiny program means: program may be up to 12KByte (16K-4K) (AT91RM9200 Manual, 7.5, p.98)
- the program is loaded into internal sram and immediately started there. (AT91RM9200 Manual, 7.1, p.87; 7.4, p.96)
- (the program is started in a clean environment, i.e. as if the cpu just booted: the Internal ROM resets all peripherals before it executes the program. AT91RM9200 Manual, 7.3.3.3, p.93, Figure 7-6; 7.3.3.4, p.94, Figure 7-7; 7.3.3.5, p.95, Figure 7-8; 7.4, p.96)
- the tiny program can be
- a standalone application
- part of a bigger application (mulit-stage bootloader)
- types of tiny programs:
- 1. a program to access non-volatile memory
- (for in circuit programming or firmware update; usually stored in nvm or uploaded via xmodem / DFU)
- 2. a bootloader that gets its data from non-volatile memory
- (for automatically booting of bigger programs; usually stored in nvm)
- 3. a bootloader that gets its data via xmodem / DFU
- (for manually booting of bigger programs; e.g.
- for in circuit programming or firmware update in a second step or
- for software development purposes)
- 4. an other application
- see also [mail about booting]
- There are several tiny programs available: (find them via At91rm9200 Resources)
- "RomBoot project for AT91RM9200DK v1.01"
- atmel bootloader - from atmel-application-note [1] [2]: [1-desc] [1-archive] [2-desc] [2-archive]
- ("Booting U-boot form Atmel Serial DataFlash on the AT91RM9200-DK Board")
- (see also At91rm9200 Resources: "Documentation" and "Target Software")
- type: 1. and 2. from above; compiler: ARM ADS 1.2 (ARM developer suite)
- as AN title says: for booting from (and accessing) spi dataflash
- [related email]
- "RomBoot project for AT91RM9200DK v1.02"
- from [U-Boot on AT91RM9200-EK SPI Serial DataFlash] on at91.com
- [AT91RM9200-DataFlashBoot.zip (768KByte)]
- gcc port of the "RomBoot project for AT91RM9200DK v1.01" (with minor non-port-related changes)
- [romboot.tar.gz (132KByte)]
- [related email]
- see ATMEL Romboot v1.01 ads vs gcc
- to compile this with the ecos-arm-gcc: add "-fno-builtin" to CFLAGS
- same as lomx.net CD lom-arm9.tgz -> arm/LOM-ARM9-Boot/loader/
- type: 3. from above; compiler: gcc
- maybe based on AT91RM9200BootV1.0.zip (see below)
- Application Note "AT91RM9200DK U-Boot Flash Programming Solutions"
- type: probably 3. from above;
- Application Note "AT91 Assembler Code Startup Sequence for C Code Applications Software"
- can be used as a basis for your own apps
- similar to atmel bootloader above ?
- ATMEL AT91 CDROM: "ARM920T, ARM926EJ-S Based Products/AT91RM9200_BOOTROM_Code/AT91RM9200BootV1.0.zip"
- u-boot: Bootloader
- this bootloader is bigger than a tiny program, but it can be started via a tiny program
u-boot:
redboot: