Инструменты пользователя

Инструменты сайта


wiki:sbc9263_sw

Компиляция загрузчиков для SBC-9263 и SBC-9263i

Данное руководство в основном применимо ко всем платам, основанным на процессорном модуле SBC-9263 и SBC-9263i

Данное руководство проверено в дистрибутиве Fedora Core 7, Fedora Core 11, Ubuntu 9.04

Сборка файловой системы проверена на Ubuntu 8.10 без загрузки на платформу

Необходимые утилиты

Для компиляции Bootstrap, u-boot и ядра Linux требуется кросс-компилятор GNU GCC. Процедуры установки GNU GCC описаны здесь.

Последовательность старта процессора

При подаче питания на процессор он вначале ищет таблицу прерываний в различных источниках: Dataflash, NOR, NAND. Таблица прерываний содержится в bootstrap, это загрузчик первого уровня (хотя, более корректно загрузчиком первого уровня считать BOOT-ROM процессора, т.к. именно он выполняет первичную инициализацию процессора). Как только bootstrap загружен он выполняет инициализацию SDRAM и загружает загрузчик второго уровня u-boot из Dataflash или NAND в SDRAM. u-boot уже имеет весь необходимый функционал и командную строку, чтобы выполнять любые действия с периферией и загружать ядро Linux.

Компиляция Bootstrap

Проверено в версии Bootstrap'а - 1.16.

  • Bootstrap распаковывают в любую директорию, например, домашнюю для вашего пользователя:
unzip AT91Bootstrap1.16.zip
  • Скачайте патч для SBC-9263, который меняет настройки PLL для кварца 16.0 МГЦ, установленного на модуле.

http://www.mentorel.com/downloads/sbc-9263/bstrap-1.16.patch

  • Войдите в директорию Bootstrap-v1.16 и примените патч для процессорного модуля:
patch -p1 < bstrap-1.16.patch

для Dataflash

  • Затем перейдите в директорию Bootstrap-v1.16/board/at91sam9263ek/dataflash/ и наберите команду:
make CROSS_COMPILE=/путь к копилятору/arm-2008q1/bin/arm-none-linux-gnueabi-
  • Файл dataflash_at91sam9263ek.bin необходимо записать в Dataflash на плату с помощью утилиты SAM-BA.

Примечание: для модулей с разным объемом SDRAM необходимо изменить значение JUMP_ADDR в файле «board/at91sam9263ek/dataflash/at91sam9263ek.h» в соответствии с таблицей: (см. примечание для u-boot)

Переменная SDRAM 32M SDRAM 64M
JUMP_ADDR0x21f000000x23f00000

Это необходимо для корректного расположения образа u-boot в верхних адресах SDRAM.

для NOR-flash

  • Перейдите в директорию Bootstrap-v1.14/board/at91sam9263ek/norflash/ и наберите команду:
make CROSS_COMPILE=/путь к копилятору/arm-2008q1/bin/arm-none-linux-gnueabi-
  • Файл norflash_at91sam9263ek.bin необходимо записать в Spansion NOR с помощью утилиты SAM-BA по нулевому смещению для NOR флеш.

Примечание: для модулей с разным объемом SDRAM необходимо изменить значение JUMP_ADDR в файле «board/at91sam9263ek/dataflash/at91sam9263ek.h» в соответствии с таблицей: (см. примечание для u-boot)

Переменная SDRAM 32M SDRAM 64M
JUMP_ADDR0x21f000000x23f00000

Это необходимо для корректного расположения образа u-boot в верхних адресах SDRAM.

Компиляция u-boot

cat u-boot-1.3.4-exp.4.diff | patch -p1
  • Для SBC-9263(i) скачайте патч uboot1p3p4.patch и примените его к u-boot:
patch -p1 < uboot1p3p4.patch

Далее необходимо выбрать где будут хранится переменные окружения:

Env в Dataflash

make at91sam9263ek_dataflash_config

Env в Nandflash

make at91sam9263ek_nandflash_config

Env в Norflash

make at91sam9263ek_norflash_config
  • Компиляция кода
make CROSS_COMPILE=/путь к копилятору/arm-2008q1/bin/arm-none-linux-gnueabi-
  • Полученный файл uboot.bin необходимо записать в Dataflash/Nandflash/Norflash на плату с помощью утилиты SAM-BA.

Примечание: для модулей с разным объемом SDRAM необходимы измения в соответствии с таблицей:

Переменная SDRAM 32M SDRAM 64M имя файла
TEXT_BASE 0x21f000000x23f00000board/atmel/at91sam9263ek/config.mk
PHYS_SDRAM_SIZE 0x020000000x04000000include/configs/at91sam9263ek.h
CFG_LOAD_ADDR 0x210000000x22000000include/configs/at91sam9263ek.h

Пресобранные образы bootstrap и u-boot

SDRAM 32M SDRAM 64M
NOR-flash Bootstrap 1.16norflash_at91sam9263ek.binnorflash_at91sam9263ek.bin
Dataflash Bootstrap 1.11dataflash_at91sam9263ek.bindataflash_at91sam9263ek.bin
SBC-9263 u-boot 1.3.4u-boot1p3p4.binu-boot1p3p4.bin
SBC-9263i u-boot 1.3.4u-boot1p3p4_i.bin

Компиляция ядра Linux Embedded

Компиляция ядра выполняется с помощью скрипта, процесс описан в пункте Сборка файловой системы
Примечание: Ядро одинаковое для обоих модулей SBC-9263 и SBC-9263i

Запись ядра в NOR флеш модуля SBC-9263 выполняют следующими командами:

U-Boot> tftp 22000000 uImage
U-Boot> erase 1:0-16
U-Boot> cp.b 22000000 10000000 <size of kernel>

Старт ядра с NOR флеш выполняют со следующими значениями переменных окружения U-Boot:

U-Boot> setenv bootcmd cp.b 10000000 22000000 <размер в байтах> \; bootm 22000000

Пресобранные ядра версии 2.6.27 для разных TFT дисплеев

Сборка файловой системы

В этом разделе описана процедура сборки минимальной конфигурации файловой системы с работой через консоль без графической оболочки.

Процедура проверена в дистрибутиве:

  • Fedora Core 7
  • Fedora Core 11

1) Для компиляции требуется установит кросс-компилятор от CodeSourcery, процедура описана здесь: arm-gcc

2) Скачивают архив, содержащий набор скриптов для сборки файловой системы.

Архив распаковывают в домашнюю директорию пользователя.

3) Далее необходимо настроить переменные окружения для сборочных скриптов.

Переменные окружения находятся в файле build.sh:

  • TOOLCHAIN_DIR

это путь к директории, в которой находится компилятор и его библиотеки. Например, /opt/arm-2008q1

  • TARGET_NAME

Для компилятора 2008q1-126 для ARM GNU/Linux это значение всегда arm-none-linux-gnueabi, т.е. TARGET_NAME=arm-none-linux-gnueabi

  • LINUX_KERNEL_VER

Это значение может быть может содержать либо только основную версию ядра 2.6: 25, 26, 27, 28, либо основную + дробную: 25.10, 26.8 и т.п.

примечание: данный скрипт проверен на ядре 2.6.25 и 2.6.25.10. Для ядра другой версии может потребоваться доработка.

  • LINUX_PATCH_VER

Эта переменая должна содержать только номер основной версии ядра 2.6: 25, 26, 27, 28, 29, потому как патчи делают для основной версии и они подходят к дробным.

4) Запуск компиляции файловой системы

Для компиляции файловой системы необходимы права суперпользователя (root), т.к. в процессе сборки создается статическое дерево устройств (/dev/xxx). Для удобства компиляции устанавливают пакет sudoers в линукс и разрешают в нем применение команд с правами суперпользователя для вашего пользователя.

Выполняют команду:

sudo ./build.sh

выполнение которой занимает порядка нескольких минут на процессоре Intel Core 2 Duo.

После завершения работы скрипта вам доступно дерево файловой системы в директории «target». Эту директорию можно либо сделать доступной по NFS, для загрузки на целевую платформу, либо из нее создать образ файловой системы JFFS2.

  • Чтобы добавить директорию файловой системы в NFS, добавляют следующую строку в файл «/etc/exports»:
FULL_PATH/target *(rw, sync, no_root_squash)

Примечание: NFS не допускает применение символьных ссылок

* Чтобы создать образ JFFS2 для загрузки в NOR выполняют следующую команду:

mkfs.jffs2 --root=YOUR_DIR --eraseblock=0x20000 -m none -o your_image.jffs2

Для NAND флеш также может понадобится опция «-n».

Загрузка файловой системы на платформу

Инструкции как выполнять загрузку ПО на платформу вы найдете здесь.

Для модуля SBC-9263 ядро имеет следующую таблицу разделов для NOR-флеш:
0x10000000 - 0x10400000 - пространство для хранения ядра
0x10400000 - 0x40000000 - пространство для файловой системы

Чтобы загрузить файловую систему в NOR-флеш модуля SBC-9263 выполняют следующие команды:
U-Boot> erase 1:32-320 (эта команды полностью стирает флеш по адресам 0x10400000 - 0x40000000)
U-Boot> tftp 21000000 rootfs.jffs2
U-Boot> cp.b 21000000 10400000 <size of image>

Ядру Linux необходимо сообщить с какого раздела вы будете выполнять загрузку. Для этого в окружении u-boot определяют значение переменной bootargs следующего содержания:

U-Boot> setenv bootargs console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=jffs2
wiki/sbc9263_sw.txt · Последнее изменение: 2014/07/16 10:56 — maxx