arm-gcc-2.95.3.tgz – GCC для сборки (уже пересобранный)
readme.u-boot.patches – файл описания процесса патча
u-boot-EVM9200.patch – Патч под кофигурацию сборки
dataflash-u-boot.bin – Патч для SPI Dataflash
u-boot-1.1.1.tar.bz2 – исходный текст u-boot-1.1.1
u-boot-RM9200.diff – Патч основной
Процесс установки патча и сборки обновленной конфигурации u‑boot‑1.1.1описан в файле readme.u‑boot.patches.
9.6.2 Содержимое файла readme.u‑boot.patches
Листинг файла, отображающий последовательность действий:
1. Files.
u-boot-RM9200.diff - RM9200 board support
u-boot-EVM9200.patch - EVM9200 board support
u-boot-1.1.1.tar.bz2 - u-boot version 1.1.1
Original version u-boot-RM9200.diff located at:
http://imsystems.ru/AT91RM9200
2. Install.
Copy files u-boot-1.1.1.tar.bz2, u-boot-RM9200.diff,
u-boot-EVM9200.patch to directory /opt and execute
following commands:
bash# cd /opt
bash# tar -xjvf ./u-boot-1.1.1.tar.bz2
bash# patch -p0 <./u-boot-RM9200.diff
bash# patch -p0 <./u-boot-EVM9200.patch
3. Configure & compile.
bash# cd /opt/u-boot-1.1.1
bash# make RM9200_config
bash# make
Resulting files:
u-boot.bin - binary image
u-boot.bin.gz - compressed binary image
/tftpboot/u-boot.bin.gz - compressed binary image in tftp server
files directory
4. Update target u-boot
4.1 Update target u-boot via kermit protocol
From console enter load binary image via Kermit protocol
command:
u->boot>loadb 20800000
Where:
loadb - load binary image command
20800000 - RAM address
Send from the host file u-boot.bin.gz.
C-Kermit (Linux host) command line example
(serial cable connected to COM1):
bash# kermit -y ./.kermrc -i -b 115200 -l /dev/ttyS0 -s u-boot.bin.gz
Where, file .kermrc contain the following kermit settings:
SET CARRIER OFF
SET FLOW OFF
SET PREFIX ALL
Erase u-boot flash sector and copy u-boot image from RAM to flash
u-boot>protect off 10010000 1001FFFF
u-boot>erase 10010000 1001FFFF
u-boot>cp.b 20800000 10010000 FFFF
Where:
10010000 - u-boot sector start address
1001FFFF - u-boot sector end address
FFFF - bytes to copy
Reboot target.
4.2 Update target u-boot via tftp (Ethernet)
Examle Linux host tftpd configuration file /etc/xinetd.d/tftp:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -c -s /tftpboot
disable = no
}
From console enter load binary image via tftp protocol command:
u-boot>tftpboot 20800000 u-boot.bin.gz
Erase u-boot flash sector and copy u-boot image
from RAM to flash:
u-boot>protect off 10010000 1001FFFF
u-boot>erase 10010000 1001FFFF
u-boot>cp.b 20800000 10010000 FFFF
Reboot target.
Для сохранения переменных окружения в dataflash нужно исправить конфигурацию в файле include/configs/RM9200.hследующим образом:
· Установить:
#define CFG_ENV_IS_IN_DATAFLASH
· Убедиться, что больше оно нигде не переопределено.
· Поправить адреса, для Ethernet. Не забыть о MAC-адресе
(u‑boot его устанавливает, а ядро потом пользуется уже установленным).
· Включить поддержку Dataflash:
#define CONFIG_HAS_DATAFLASH 1
· Поправить адрес конфигурации в Dataflash:
Листинг программы, отображающий изменения в исходном тексте:
#if defined(CFG_ENV_IS_IN_DATAFLASH)
#define CFG_ENV_OFFSET 0x28000 <--- вот тут
#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET)
#define CFG_ENV_SIZE 0x2000 /* 0x8000 */