Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
120901-Linux-On-AT91RM9200-SK-new.doc
Скачиваний:
33
Добавлен:
05.03.2016
Размер:
798.21 Кб
Скачать
    1. Конфигурации ядра

Распаковываем ядро и накатываем требуемые патчи:

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

    1. Подготовка к компиляции

Не забываем исправить 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" в ядре.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]