- •Инсталляция os Linux на аппаратную платформу at91rm9200_sk
- •Список используемой литературы.
- •Описание процессораAt91rm9200
- •Микроконтроллер на основе процессора arm920t ™
- •Структурная схема микроконтроллера at91rm9200:
- •Общее описание:
- •Структурная схема разрабатываемой аппаратной платформы
- •Установка и настройка tftpd
- •Сборка tftp:
- •Настройка периферии
- •Тактовая частота процессора и памяти.
- •Romboot
- •Main.Cpp: правка времени ожидания
- •Тактовая частота, sdram-память
- •Main.H: правка тактовой частоты процессора
- •Init.Cpp: правка типа и тактовой частоты и частоты памяти
- •Spi DataFlash-память
- •Dataflash.Cpp: конфигурация количества микросхем Flash-памяти
- •Dataflash.H: конфигурация количества микросхем Flash-памяти
- •Dataflash.Cpp: инициализация
- •At45.Cpp - конфигурация количества микросхем Flash-памяти
- •Компиляция программы Romboot
- •Программирование spi Dataflash.
- •Назначение
- •Возможности
- •U‑boot‑1.1.1/board/rm9200/rm9200.C – номер архитектуры
- •U‑boot‑1.1.1/include/configs/rm9200.H – файл конфигурации платы
- •Дополнительная spi DataFlash
- •U‑boot‑1.1.1/cpu/at91rm9200/at45.C – драйвер DataFlash памяти at45dBxxx
- •Драйвер Ethernet - lxt972
- •U‑boot‑1.1.1/include/lxt971a.H
- •U‑boot‑1.1.1/include/at91rm9200_net.H – подключение header-драйвера
- •U‑boot‑1.1.1/board/rm9200/at91rm9200_ether.C (et_enable)
- •U‑boot‑1.1.1/board/rm9200/at91rm9200_ether.C – добавление драйвера lxt972
- •U‑boot‑1.1.1/include/configs/rm9200.H - набор сетевых команд
- •Компиляция u-boot-1.1.1
- •Перечень программ и утилит для сборки u-boot-1.1.1
- •Содержимое файла readme.U‑boot.Patches
- •Вычисление смещения карты памяти.
- •Правка Makefile
- •Сборка u‑boot‑1.1.1
- •Запись u boot 1.1.1 в DataFlash из Romboot
- •Работа с u‑boot‑1.1.1 из DataFlash или ram
- •Linux kernel – Ядро os Linux
- •Переменные окружения для сборки ядра
- •Конфигурации ядра
- •Подготовка к компиляции
- •Конфигурация
- •Редактирование исходного текста
- •Подключение конструктивного исполнения контроллера
- •Подключение светодиода
- •Подключение Ethernet контроллера
- •Подключение Dataflash
- •Компиляция ядра
- •Конечная сборка ядра и инсталляция
- •Скрипт для сборки сжатых образов
- •Результат сборки образов из скрипта
- •Linux usb File System – usb Файловая система
- •Linux Configuration – Конфигурация Дистрибутива
- •Установка и настройка платы at91rm9200_sk
- •Linux Tune – Настройка под конечную цель
- •2007Г. Инженер-электроник: Станислав г. Приходько
U‑boot‑1.1.1/include/configs/rm9200.H - набор сетевых команд
В файле RM9200.hесть возможность выбирать конфигурацию отдельных команд дляu‑boot.
Листинг программы, отображающий изменения в исходном тексте:
…
(CONFIG_CMD_DFL | \
CFG_CMD_NET | \
CFG_CMD_PING | \
CFG_CMD_I2C | \
CFG_CMD_EEPROM \
& ~(CFG_CMD_BDI | \
CFG_CMD_FPGA | \
CFG_CMD_NAND \
) \
)
…
С полным списком возможных команд можно ознакомиться в файле - u‑boot‑1.1.1/README
Компиляция u-boot-1.1.1
u-boot-1.1.1сpatch-ем отДмитрия Черкашина ("Dmitriy I.Cherkashin" ) приходится собирать сGCC 2.95.3(более новые версииGCCего не собирают...).
В нашем случае ПОдля сборкиu-boot-1.1.1, называется –Toolchain-2.
Нужно распаковать u-boot-1.1.1и использоватьpatch-файлы отЧеркашина.
Перечень программ и утилит для сборки u-boot-1.1.1
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.
Содержимое файла 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 */