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

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


wiki:sbc9263_sw
no way to compare when less than two revisions

Различия

Показаны различия между двумя версиями страницы.


Последняя версия
wiki:sbc9263_sw [2012/11/20 19:14] – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Компиляция загрузчиков для 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 описаны [[arm-gcc|здесь]].
 +
 +===== Последовательность старта процессора =====
 +При подаче питания на процессор он вначале ищет таблицу прерываний в различных источниках: Dataflash, NOR, NAND. Таблица прерываний содержится в bootstrap, это загрузчик первого уровня (хотя, более корректно загрузчиком первого уровня считать BOOT-ROM процессора, т.к. именно он выполняет первичную инициализацию процессора). Как только bootstrap загружен он выполняет инициализацию SDRAM и загружает загрузчик второго уровня **u-boot** из Dataflash или NAND в SDRAM. u-boot уже имеет весь необходимый функционал и командную строку, чтобы выполнять любые действия с периферией и загружать ядро Linux.
 +
 +===== Компиляция Bootstrap =====
 +  * Исходные коды Bootstrap скачивают со страницы [[http://atmel.com/dyn/products/product_card.asp?part_id=4093]].\\
 +Проверено в версии Bootstrap'а - 1.16.
 +  * Bootstrap распаковывают в любую директорию, например, домашнюю для вашего пользователя:
 +<code>unzip AT91Bootstrap1.16.zip</code>
 +  * Скачайте патч для SBC-9263, который меняет настройки PLL для кварца 16.0 МГЦ, установленного на модуле.
 +[[http://www.mentorel.com/downloads/sbc-9263/bstrap-1.16.patch]]
 +  * Войдите в директорию Bootstrap-v1.16 и примените [[http://www.mentorel.com/downloads/sbc-9263/bstrap-1.16.patch|патч]] для процессорного модуля:
 +<code>patch -p1 < bstrap-1.16.patch</code>
 +==== для Dataflash ====
 +  * Затем перейдите в директорию Bootstrap-v1.16/board/at91sam9263ek/dataflash/ и наберите команду:
 +<code>make CROSS_COMPILE=/путь к копилятору/arm-2008q1/bin/arm-none-linux-gnueabi-</code>
 +  * Файл dataflash_at91sam9263ek.bin необходимо записать в Dataflash на плату с помощью утилиты SAM-BA.
 +
 +//Примечание: для модулей с разным объемом SDRAM необходимо изменить значение **JUMP_ADDR** в файле "board/at91sam9263ek/dataflash/at91sam9263ek.h" в соответствии с таблицей: (см. примечание для u-boot)//
 +
 +| Переменная ^ SDRAM 32M ^ SDRAM 64M ^
 +^JUMP_ADDR|0x21f00000|0x23f00000|
 +
 +Это необходимо для корректного расположения образа u-boot в верхних адресах SDRAM.
 +
 +==== для NOR-flash ====
 +
 +  * Перейдите в директорию Bootstrap-v1.14/board/at91sam9263ek/norflash/ и наберите команду:
 +<code>make CROSS_COMPILE=/путь к копилятору/arm-2008q1/bin/arm-none-linux-gnueabi-</code>
 +  * Файл norflash_at91sam9263ek.bin необходимо записать в Spansion NOR с помощью утилиты SAM-BA по нулевому смещению для NOR флеш.
 +//Примечание: для модулей с разным объемом SDRAM необходимо изменить значение **JUMP_ADDR** в файле "board/at91sam9263ek/dataflash/at91sam9263ek.h" в соответствии с таблицей: (см. примечание для u-boot)//
 +
 +| Переменная ^ SDRAM 32M ^ SDRAM 64M ^
 +^JUMP_ADDR|0x21f00000|0x23f00000|
 +
 +Это необходимо для корректного расположения образа u-boot в верхних адресах SDRAM.
 +===== Компиляция u-boot =====
 +  * Скачайте исходные коды u-boot-1.3.4 [[http://www.mentorel.com/downloads/sbc-9263/u-boot-at91-cd82919e6c8a73b363a26f34b734923844e52d1c.tar.gz]]
 +  * Распакуйте u-boot и войдите в директорию u-boot-at91
 +  * Скачайте патч [[ftp://www.at91.com/pub/uboot/u-boot-1.3.4-exp.4/u-boot-1.3.4-exp.4.diff|u-boot-1.3.4-exp.4.diff]] и примените его к u-boot:
 +<code>cat u-boot-1.3.4-exp.4.diff | patch -p1</code>
 +  * Для SBC-9263(i) скачайте патч [[http://www.mentorel.com/downloads/sbc-9263/uboot1p3p4.patch|uboot1p3p4.patch]] и примените его к u-boot:
 +<code>patch -p1 < uboot1p3p4.patch</code>
 +
 +Далее необходимо выбрать где будут хранится переменные окружения:
 +==== Env в Dataflash ====
 +<code>make at91sam9263ek_dataflash_config</code>
 +==== Env в Nandflash ====
 +<code>make at91sam9263ek_nandflash_config</code>
 +==== Env в Norflash ====
 +<code>make at91sam9263ek_norflash_config</code>
 +  * Компиляция кода
 +<code>
 +make CROSS_COMPILE=/путь к копилятору/arm-2008q1/bin/arm-none-linux-gnueabi-
 +</code>
 +  * Полученный файл uboot.bin необходимо записать в Dataflash/Nandflash/Norflash на плату с помощью утилиты [[SAM-BA]].
 +
 +//Примечание: для модулей с разным объемом SDRAM необходимы измения в соответствии с таблицей://
 +
 +| Переменная ^ SDRAM 32M ^ SDRAM 64M ^ имя файла ^
 +^TEXT_BASE  |0x21f00000|0x23f00000|board/atmel/at91sam9263ek/config.mk |
 +^PHYS_SDRAM_SIZE  |0x02000000|0x04000000|include/configs/at91sam9263ek.h |
 +^CFG_LOAD_ADDR  |0x21000000|0x22000000|include/configs/at91sam9263ek.h |
 +
 +===== Пресобранные образы bootstrap и u-boot =====
 +
 +| ^ SDRAM 32M ^ SDRAM 64M ^
 +^NOR-flash Bootstrap 1.16|[[http://mentorel.com/downloads/sbc-9263/norflash_at91sam9263ek.bin|norflash_at91sam9263ek.bin]]|[[http://mentorel.com/downloads/sbc-9263/norflash_at91sam9263ek.bin|norflash_at91sam9263ek.bin]]|
 +^Dataflash Bootstrap 1.11|[[http://mentorel.com/downloads/sbc-9263/dataflash_at91sam9263ek_32M.zip|dataflash_at91sam9263ek.bin]]|[[http://mentorel.com/downloads/dataflash_at91sam9263ek_64M.zip|dataflash_at91sam9263ek.bin]]|
 +^SBC-9263 u-boot 1.3.4|[[http://mentorel.com/downloads/sbc-9263/u-boot1p3p4_32M.zip|u-boot1p3p4.bin]]|[[http://mentorel.com/downloads/sbc-9263/u-boot1p3p4_64M.zip|u-boot1p3p4.bin]]|
 +^SBC-9263i u-boot 1.3.4||[[http://mentorel.ru/downloads/sbc-9263/uboot1p3p4_i.zip|u-boot1p3p4_i.bin]]|
 +===== Компиляция ядра Linux Embedded =====
 +Компиляция ядра выполняется с помощью скрипта, процесс описан в пункте [[#Сборка файловой системы]]\\
 +//Примечание: Ядро одинаковое для обоих модулей SBC-9263 и SBC-9263i//
 +
 +Запись ядра в NOR флеш модуля SBC-9263 выполняют следующими командами:
 +<code>
 +U-Boot> tftp 22000000 uImage
 +U-Boot> erase 1:0-16
 +U-Boot> cp.b 22000000 10000000 <size of kernel>
 +</code>
 +
 +Старт ядра с NOR флеш выполняют со следующими значениями переменных окружения U-Boot:\\
 +<code>U-Boot> setenv bootcmd cp.b 10000000 22000000 <размер в байтах> \; bootm 22000000</code>
 +
 +===== Пресобранные ядра версии 2.6.27 для разных TFT дисплеев =====
 +
 +| Тип экрана ^ Адрес ^
 +^ ME-TFT37SH  | [[http://mentorel.com/downloads/sbc-9263/ui27-sh37.zip]] |
 +^ ME-TFT8OSD  | [[http://mentorel.com/downloads/sbc-9263/ui27-8osd.zip]] |
 +^ ME-MTF7TTS  | [[http://mentorel.ru/downloads/sbc-9263/ui27-7mtf.zip]] |
 +^ ME-TFT8SHCFL  | [[http://mentorel.com/downloads/sbc-9263/ui27-8shcfl.zip]] |
 +
 +===== Сборка файловой системы =====
 +В этом разделе описана процедура сборки минимальной конфигурации файловой системы с работой через консоль без графической оболочки.
 +
 +Процедура проверена в дистрибутиве:
 +  * Fedora Core 7
 +  * Fedora Core 11
 +
 +1) Для компиляции требуется установит кросс-компилятор от CodeSourcery, процедура описана здесь: [[arm-gcc|arm-gcc]]
 +
 +2) Скачивают [[http://www.mentorel.com/downloads/sbc-9263/me_rootfs.tar.bz2|архив]], содержащий набор скриптов для сборки файловой системы.
 +
 +Архив распаковывают в домашнюю директорию пользователя.
 +
 +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 в линукс и разрешают в нем применение команд с правами суперпользователя для вашего пользователя.
 +
 +Выполняют команду:
 +<code>sudo ./build.sh</code>
 +выполнение которой занимает порядка нескольких минут на процессоре Intel Core 2 Duo.
 +
 +После завершения работы скрипта вам доступно дерево файловой системы в директории "target". Эту директорию можно либо сделать доступной по NFS, для загрузки на целевую платформу, либо из нее создать образ файловой системы JFFS2.
 +
 +  * Чтобы добавить директорию файловой системы в NFS, добавляют следующую строку в файл "/etc/exports":
 +<code>FULL_PATH/target *(rw, sync, no_root_squash)</code>
 +//Примечание: NFS не допускает применение символьных ссылок//
 +
 + * Чтобы создать образ JFFS2 для загрузки в NOR выполняют следующую команду:
 +<code>mkfs.jffs2 --root=YOUR_DIR --eraseblock=0x20000 -m none -o your_image.jffs2</code>
 +Для NAND флеш также может понадобится опция "-n".
 +
 +===== Загрузка файловой системы на платформу =====
 +
 +Инструкции как выполнять загрузку ПО на платформу вы найдете [[sam-ba|здесь]].
 +
 +Для модуля 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 следующего содержания:
 +<code>U-Boot> setenv bootargs console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=jffs2</code>
wiki/sbc9263_sw.txt · Последнее изменение: 2014/07/16 10:56 — maxx