- •Инсталляция 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Г. Инженер-электроник: Станислав г. Приходько
Конфигурации ядра
Распаковываем ядро и накатываем требуемые патчи:
bash# bunzip2 -c linux-2.6.19.tar.bz2 | tar xv
bash# ln -s linux-2.6.19 linux
Далее необходимо использовать patch-файл для 2.6.19-at91.patch от maxim (http://maxim.org.za/AT91RM9200/2.6/).
Патчить следующим методом:
bash# patch –p1<./2.6.19-at91.patch
Делаем конфиг для требуемой платформы. У меня это так:
bash# make at91rm9200dk_defconfig
bash# make include/linux/version.h
На ошибки внимания не обращаем. – это так надо :)
Теперь копируем include-файлы:
bash# mkdir -p ${SYSROOT}/usr/include
bash# cp -a ${PREFIX}/src/linux/include/linux ${SYSROOT}/usr/include/linux
bash# cp -a ${PREFIX}/src/linux/include/asm-arm ${SYSROOT}/usr/include/asm
bash# cp -a ${PREFIX}/src/linux/include/asm-generic ${SYSROOT}/usr/include/asm-generic
Подготовка к компиляции
Не забываем исправить arch/arm/mach-at91rm9200/на предмет своей переферии.
1.Кол-во используемых uart-ов описывается в файле ядра описывающий особенности аппаратуры - arch/arm/mach‑at91rm9200/board‑dk.c:
….
/*
* Serial port configuration.
* 0 .. 3 = USART0 .. USART3
* 4 = DBGU
*/
static struct at91_uart_config __initdata dk_uart_config = {
.console_tty = 0, /* ttyS0 */
.nr_tty = 2,
.tty_map = { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
};
…
Если требуется изменить параметры инициализации портов (например включить режим RS485) - смотрим в arch/arm/mach‑at91rm9200/devices.c. Там находится код инициализации уартов.
2.В файле arch/arm/mach‑at91rm9200/board‑dk.c надо поправить строчку описания машины.
Иначе на EVM9200 не запустится и будет орать о неверном коде платформы: поменять:
MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK")
на:
MACHINE_START(AT91RM9200, "uCrouter EVM9200")
Это если сборка как EVM9200.
У нас (в нашей случае) в конечном итоге собрано как "Atmel AT91RM9200‑DK" и поставлено в ядре:
MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK")
Некорректно настроенный это кусок – приводит к ошибке при загрузке ядра:
Starting kernel ... Error: unrecognized/unsupported machine ID (r1 = 0x000000fb). Available machine support: ID (hex) NAME 00000106 uCrouter EVM9200 Please check your kernel config and/or bootloader
В этом случае нужно проверять, все ли в порядке настроено в файлах исходниках ядра.
Вот здесь сказано, как нужно чинить такую проблему:
http://lists.arm.linux.org.uk/pipermail/linux-arm/2005-August/010446.html
> Error: unrecognized/unsupported machine ID (r1 = 0x000000fb).
>
> Available machine support:
>
> ID (hex) NAME
> 00000106 Atmel AT91RM9200-DK
> 000002c1 Atmel AT91RM9200-EK
this kind of error message happens if the machine ID which is set
in U-Boot doesn't match the kernel's ID(s). Unfortunately a
standard U-Boot sets the machine ID on AT91RM9200DK boards not to
MACH_TYPE_AT91RM9200DK but to the generic MACH_TYPE_AT91RM9200.
You can either this in board/at91rm9200dk/at91rm9200dk.c; I would
recommend to obtain a new machine ID and create your own U-Boot
board type, using board/at91rm9200dk as a template. The list of
machine IDs can be found in include/asm-arm/mach-types.h.
The Linux kernel has to be changed accordingly to the above machine
ID. There you can find the information in
arch/arm/tools/mach-types
arch/arm/boot/compressed/head-at91rm9200.S
arch/arm/mach-at91rm9200/board-dk.c
3.Если хочется использовать две Dataflash на плате - то первую вешаем на CS0 (с нее будет идти загрузка). Вторую вешаем на CS3. Для поддержки второй флэшки надо включить поддержку "Dataflash Card" в ядре.