- •Инсталляция 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# make menuconfig
Конфигурируем ядро.
От того как верно ядро будет сконфигурировано, зависит следующее – загрузится ли вообще ядро и загрузит ли файловую систему (ФС).
Важно корректно выбрать следующее:
- Тип архитектуры и процессор
- включить RAM disk support
- включить Initial RAM filesystem and RAM disk (initramfs/initrd) support
- указать строку загрузки ядра COMMAND_LINE
root=/dev/ram rw mtdparts=AT45DB642.spi0:0x2a000(boot)ro,0x136000(kernel)ro, 0x200300(initrd)ro,-(filesystem) console=ttyS0,115200 mem=64M debug init=/linuxrc
Также нужно отредактировать исходные тексты в самом ядре, почти все конфигурируется в файлах, внутри директории - linux-2.6.20/arch/arm/mach-at91rm9200.
Редактирование исходного текста
Для подключения пользовательского светодиода LD1, тот что на плате, нужно в файле linux/arch/arm/mach-at91rm9200/board-dk.c ( Здесь настраиваются основные и начальные возможности платы и работы ядра с платой )
Подключение конструктивного исполнения контроллера
static void __init dk_map_io(void)
{
/* Initialize processor: 18.432 MHz crystal */
// at91rm9200_initialize(18432000, AT91RM9200_BGA); // default
at91rm9200_initialize(18432000, AT91RM9200_PQFP); // veter
…
…
}
Эти значения (AT91RM9200_BGA или AT91RM9200_PQFP), берутся из файла linux-2.6.20/arch/arm/mach-at91rm9200/generic.h
…
/* GPIO */
#define AT91RM9200_PQFP 3 /* AT91RM9200 PQFP package has 3 banks */
#define AT91RM9200_BGA 4 /* AT91RM9200 BGA package has 4 banks */
…
Подключение светодиода
нужно исправить:
static void __init dk_map_io(void)
{
…
…
/* Setup the LEDs */
// at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2);
at91_init_leds(AT91_PIN_PB27, AT91_PIN_PB27); // veter
…
…
}
static struct at91_gpio_led dk_leds[] = {
{
.name = "led0",
// .gpio = AT91_PIN_PB2,
.gpio = AT91_PIN_PB27, // veter
.trigger = "timer",
}
};
Для того, что бы это светодиод использовать как индикатор работы ядра, назначить ему нужно при конфигурировании в разделе Kernel Features пункты
«Timer and CPU usage LEDs»
«Timer LED»
«CPU usage LED»
Больше нет у нас пользовательских светодиодов, но возможность их использования есть в системе.
Device Drivers/ LED devices/
[*] LED Suppor
[*] LED Class Support
--- LED drivers
--- LED Triggers
[*] LED Trigger support
[*] LED Timer Trigger
[*] LED Heartbeat Trigger
Подключение Ethernet контроллера
static struct at91_gpio_led dk_leds[] = {
{
.name = "led0",
// .gpio = AT91_PIN_PB2,
.gpio = AT91_PIN_PB27, // veter
.trigger = "timer",
}
};
static void __init dk_board_init(void)
{
/* Serial */
at91_add_device_serial();
/* Ethernet */
at91_set_gpio_output(AT91_PIN_PB23, 0); // veter // ET_ENABLE
at91_add_device_eth(&dk_eth_data);
…
…
}
Подключение Dataflash
static struct spi_board_info dk_spi_devices[] = {
{ /* DataFlash chip */
.modalias = "mtd_dataflash",
.chip_select = 0,
.max_speed_hz = 15 * 1000 * 1000,
},
// { /* UR6HCPS2-SP40 PS2-to-SPI adapter */
// .modalias = "ur6hcps2",
// .chip_select = 1,
// .max_speed_hz = 250 * 1000,
// },
// { /* TLV1504 ADC, 4 channels, 10 bits; one is a temp sensor */
// .modalias = "tlv1504",
// .chip_select = 2,
// .max_speed_hz = 20 * 1000 * 1000,
// },
//#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
{ /* DataFlash card */
.modalias = "mtd_dataflash",
// .chip_select = 3,
.chip_select = 1, // veter
.max_speed_hz = 15 * 1000 * 1000,
}
//#endif
};