Подать питание/презагрузить плату. Если в Dataflash нет загрузчика, то на порт DBGU контроллера будет выводиться приглашение X-Modem --- буква 'C'. Загрузить DataflashBoot-AT91RM9200EK-1.05.bin по Xmodem. Здесь и далее настройки порта 115200-8N1.
C
Upload Xmodem
DataflashBoot-AT91RM9200EK-1.05.bin (11.4 KB, 0:01 min = 11656 cps eff)
Выбрать пункт 1, загрузить по Xmodem ТОТ же файл DataflashBoot-AT91RM9200EK-1.05.bin
ATMEL DataFlash LOADER VER 1.05 Aug 15 2006 18:34:34
*-------------------------------------------*
DataFlash[4.24 Mhz]:AT45DB642
Nb pages: 008192
Page Size: 001056
Size=08650752 bytes
Logical address: 0xC0000000
*-------------------------------------------*
1: Program Dataflashboot.bin at ...[C0000000]
2: Program U-Boot.bin at ..........[C0008400]
3: Load UBOOT from [C0008400] to [0x21f00000]
4: Program Dataflash at ...............[addr]
5: Read Memory ........................[addr]
6: Erase Dataflash containing .........[addr]
*-------------------------------------------*
Enter: 1
Download DataflashBoot.bin to [0xc0000000]
C
Upload Xmodem
DataflashBoot-AT91RM9200EK-1.05.bin (11.4 KB, 0:01 min = 11656 cps eff)
Загрузить по Xmodem u-boot-at91rm9200df-2006-08-20.bin, выбрав пункт 2
ATMEL DataFlash LOADER VER 1.05 Aug 15 2006 18:34:34
*-------------------------------------------*
DataFlash[4.24 Mhz]:AT45DB642
Nb pages: 008192
Page Size: 001056
Size=08650752 bytes
Logical address: 0xC0000000
*-------------------------------------------*
1: Program Dataflashboot.bin at ...[C0000000]
2: Program U-Boot.bin at ..........[C0008400]
3: Load UBOOT from [C0008400] to [0x21f00000]
4: Program Dataflash at ...............[addr]
5: Read Memory ........................[addr]
6: Erase Dataflash containing .........[addr]
*-------------------------------------------*
Enter: 2
Download DataflashBoot.bin to [0xc0000000]
C
Upload Xmodem
DataflashBoot-AT91RM9200EK-1.05.bin (11.4 KB, 0:01 min = 11656 cps eff)
Modification of Arm Vector 6 :841a018
Write 12288 bytes in DataFlash [0xc0000000]
Verify Dataflash: OK
Hit a Key!
Для этого выбрать третий пункт меню.
ATMEL DataFlash LOADER VER 1.05 Aug 15 2006 18:34:34
*-------------------------------------------*
DataFlash[4.24 Mhz]:AT45DB642
Nb pages: 008192
Page Size: 001056
Size=08650752 bytes
Logical address: 0xC0000000
*-------------------------------------------*
1: Program Dataflashboot.bin at ...[C0000000]
2: Program U-Boot.bin at ..........[C0008400]
3: Load UBOOT from [C0008400] to [0x21f00000]
4: Program Dataflash at ...............[addr]
5: Read Memory ........................[addr]
6: Erase Dataflash containing .........[addr]
*-------------------------------------------*
Enter:
Load UBOOT from dataflash[c0008400] to SDRAM[21f00000]
PLLA[180MHz], MCK[60Mhz] ==> Start UBOOT
Jumping...
U-Boot 1.1.4 (Aug 20 2006 - 21:33:18)
DRAM: 32 MB
Parallel flash ignored
Flash: 0 kB
DataFlash:AT45DB642
Nb pages: 8192
Page Size: 1056
Size= 8650752 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C00083FF (RO) Bootstrap
Area 1: C0008400 to C003DDFF (RO) U-Boot
Area 3: C003FF00 to C0041FFF Environment
Area 4: C0042000 to C018BFFF OS
Area 5: C018C000 to C083FFFF FS
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
U-Boot>
Если уже установлен tftp сервер, нужно скопировать файлы uImage.bin и fsImage.bin в каталог с образами.
Для запуска tftp сервера требуется выполнить следующие команды (предполагается, что сам сервер находится в директории c:\tftpserver\, а образы находятся в каталоге c:\tftpserver\tftpboot
параметр
cd c:\tftpserver\ & c: & TFTPSRV.EXE dtftpboot\
dtftpboot указывает, в какой директории находятся образы.
Поскольку *nix системы крайне разнообразны как по набору доступных программ, так и по настройке, далее приводятся только общие руководства. Если уже установлен и настроен tftp сервер, нужно просто скопировать образы в директорию, где лежат остальные образы. В противном случае придется установить tftp сервер, либо как отдельный сервер, либо как запускаемый из-под inetd. Нужно открыть tftp сервер в настройках firewall.
Для работы с сетью необходимо предварительно настроить U-Boot: ввести MAC адрес платы, её ip адрес, адрес сервера, и адрес шлюза при необходимости. MAC это 6 байт, определяющие уникальный номер сетевой платы (микросхемы). Если в одной сети задать два одинаковых MAC, то сеть работать не будет.
Эта команда может выдать ошибку, в случае если сетевой адрес уже установлен. На неё внимания не обращать.
U-Boot>setenv ethaddr aa:c8:f1:14:56:f3
После выполнения этих команд образ ядра, файловой системы и настройки загрузчика сохранены во flash памяти. После включения питания, или перезагрузки платы, Linux будет загружаться автоматически.
U-Boot>setenv ipaddr 192.168.0.101 ; setenv serverip 192.168.0.1 ; setenv bootargs mtdparts=AT45DB642.spi0:0x2A000(boot)ro,0x136000(kernel)ro,0x200300(initrd)ro,-(filesystem) console=ttyS0,115200 mem=32M root=/dev/mtdblock2,rw ; tftp 0x21042000 uImage.bin
U-Boot>cp.b 0x21042000 0xC0042000 0x117dbb ; tftp 0x2118C000 fsImage.bin ; cp.b 0x2118C000 0xC018c000 0x1b95ab ; setenv bootcmd bootm 0xC0042000 0xC018c000 ; printenv ; saveenv ; boot
Если нет возможности подключить сеть, то загрузить образы можно через последовательный порт. Этот вариант менее предпочтителен, так как занимает больше времени.
После этого необходимо по Kermit передать файл uImage.bin
U-Boot>setenv bootargs mtdparts=AT45DB642.spi0:0x2A000(boot)ro,0x136000(kernel)ro,0x200300(initrd)ro,-(filesystem) console=ttyS0,115200 mem=32M root=/dev/mtdblock2,rw ; loadb 0x21042000
После этого необходимо по Kermit передать файл fsImage.bin
U-Boot>cp.b 0x21042000 0xC0042000 0x117dbb ; loadb 0x2118C000
После выполнения этих команд образ ядра, файловой системы и настройки загрузчика сохранены во flash памяти. После включения питания, или перезагрузки платы, Linux будет загружаться автоматически.
cp.b 0x2118C000 0xC018c000 0x1b95ab ; setenv bootcmd bootm 0xC0042000 0xC018c000 ; printenv ; saveenv ; boot
Краткая справка по командам U-Boot. Все адреса и размеры указываются в HEX.
cp.b ${FROM} ${DEST} ${COUNT} копирует ${COUNT} байт начиная с адреса ${FROM} в адреса начиная с ${DEST}. Применяется для копирования данных из SDRAM 0x20000000 во flash 0xC0000000loadb ${DEST} принимает файл по Kermit и записывает его в SDRAM по адресу ${DEST}tftp ${DEST} ${FILENAME} загружет с tftp сервера с адресом serverip файл с именем ${FILENAME} и сохраняет его в SDRAM по адресу ${DEST}.help выводит справку по командам.
Ниже приведены все команды в виде, удобном для копирования :)
cd c:\tftpserver\ & c: & TFTPSRV.EXE dtftpboot\
setenv ethaddr aa:bb:cc:dd:ee:f2
setenv ipaddr 195.7.171.112 ; setenv serverip 195.7.171.113 ; setenv bootargs mtdparts=AT45DB642.spi0:0x2A000(boot)ro,0x136000(kernel)ro,0x200300(initrd)ro,-(filesystem) console=ttyS0,115200 mem=32M root=/dev/mtdblock2,rw ; tftp 0x21042000 uImage.bin
cp.b 0x21042000 0xC0042000 0x117dbb ; tftp 0x2118C000 fsImage.bin ; cp.b 0x2118C000 0xC018c000 0x1b95ab ; setenv bootcmd bootm 0xC0042000 0xC018c000 ; printenv ; saveenv ; boot