[Из песочницы] Установка и сборка образа Angstrom Linux для платы TechNexion Thunder

Набор разработчика от TechNexion Thunderpack ThunderЗдравствуй уважаемый читатель. Недавно мне довелось поработать с набором для разработчика, тайваньской компании «TechNexion Ltd», под названием Thunderpack включающем в себя процессорный модуль TAO-3530 и плату Thunder.Процессорный модуль основан на SoC (System-on-a-Chip) TI OMAP3530 фирмы Texas Instruments и содержит 256 Мб DDR RAM, 512 Мб NAND Flash, DSP ядро TMS320C64+, а так же может содержать модуль Wireless LAN для поддержки WiFi.В данном посте я хочу рассказать, про свой опыт работы с данной платой.И так, начнём.TAO-3530Установка Linux 2.6.37 После беглого прочтения документации, сборки и включения Thunder я приступил к установке Linux. Скажу сразу, что через предлагаемый по умолчанию способ установки у меня установить не получилось. Происходил постоянный перезапуск процедуры установки. Поэтому я зашел на сайт TechNexion и скачал, любезно подготовленный и выложенный ими, образ содержащий Linux 2.6.37.По инструкции указанной в документации (раздел 9.4.1 Create the SD-card with the rescue image in a Windows environment) я подготовил SD-карту для установки Linux 2.6.37 и выполнил установку.После установки система благополучно загрузилась, но меня ожидало разочарование т.к. сеть не заработала. Начал искать информацию по сетевой карте.В конце документации на плату приведены схемы на Thunder (раздел 16.2 Thunder baseboard schematics) на схеме видно, что сетевой картой является конвертор USB-Ethernet собранный на контроллере SMSC LAN9500-ABZJ фирмы Microchip. Поискав драйвер, в только что установленной системе, я его не обнаружил. Возможно, при сборке его забыли включить.imageНа сайте TechNexion, помимо готовых образов, выложены исходные коды для сборки образа вручную. Скачав «TAO-3530 Linux 2.6.37 / TI PSP 04.02.00.07 XUKR Source code» оказалось, что драйвер для нужной мне сетевой карты присутствует и включен для сборки. Осталось только пересобрать образ.

Сборка образа Angstrom Linux 2.6.37 Сборку образа я выполнял на Ubuntu 12.04, предварительно установив её на VirtualBox. В документации на Thunder разработчики советуют выполнять сборку, используя Toolchain Code Sourcery G++ 2010.09–50 (gcc 4.5.1). Хочу обратить ВНИМАНИЕ, что для сборки образа Angstrom Linux 2.6.37, предоставляемого разработчиками TechNexion, следует разворачивать именно Code Sourcery G++ 2010.09–50.Первым делом скачиваем arm-2010.09–50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 или с сайта Mentor Graphics и распаковываем в папку /opt/codesourcery. $cd /opt $sudo mkdir codesourcery $cd codesourcery $sudo wget ftp://ftp.ru.debian.org/gentoo-distfiles/distfiles/arm-2010.09–50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 $sudo tar xvf arm-2010.09–50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 imageОпределяем переменные окружения. Для этого в файл /etc/environment дописываем:

export ARCH=arm export CROSS_COMPILE=/opt/codesourcery/arm-2010.09/bin/arm-none-linux-gnueabi- Создаем папку files в корневом каталоге, и копируем в неё исходные коды для создания образа Angstrom Linux 2.6.37.

$cd / $sudo mkdir files $cd files $sudo wget http://technexion.com/images/downloads/ARM_CPU_Modules/xukr-20131014-omap3.tar.xz $sudo tar xvf xukr-20131014-omap3.tar.xz imageУстанавливаем uboot-mkimage.

$sudo apt-get install uboot-mkimage Теперь необходимо перезагрузить систему для того, чтобы работали, нами установленные, переменные окружения.

Осталось подправить конфигурацию ядра для включения необходимых драйверов. Так как я буду собирать образ для платы Thunder, то путь до нужного мне файла конфигурации следующий:

/opt/files/xukr-20131014-omap3/kernel/linux-2.6.37-tn/arch/arm/configs/taotdm_defconfig Файл конфигурации нужно открыть в любом удобном редакторе и включить интересующие опции. Я редактировал стандартным редактором файлового менеджера Midnight Commander.Первое, что я посмотрел в файле конфигурации — это наличие включенного драйвера сетевой карты SMSC95xx.

CONFIG_USB_NET_SMSC95XX=y Затем я включил компиляцию usb-serial драйверов. CONFIG_USB_SERIAL=y И включил поддержку самых распространенных чипов usb-serial PL2303 и CP210x. CONFIG_USB_SERIAL_PL2303=y CONFIG_USB_SERIAL_CP210X=y Закрываем редактор, предварительно сохранив изменения в файле. Теперь всё готово для сборки ядра.Переходим в каталог xukr-20131014-omap3 $cd /opt/files/xukr-20131014-omap3 И запускаем скрипт сборки с указанием названия платформы.

$sudo ./Build.sh thunder 5865a37c66480104e6bb04dcf1822aad.pngДанный скрипт выполнит построение загрузчика, ядра ОС, копирование всех необходимых файлов в заранее подготовленную файловую структуру и т.п.

Затем очистки исходных кодов от созданных объектных файлов.

$sudo ./Clean.sh И скрипт построения образа с указанием названия платформы. $sudo ./mk_nandimg.sh thunder После успешного завершения можете себя поздравить с созданием образа Angstrom Linux 2.6.37. Сам образ будет находиться в папке/opt/files/xukr-20131014-omap3/build/thunder.Осталось подготовить установочный SD-диск и установить. Данные действия описаны выше (см. Установка Linux 2.6.37).После установки собранной системы у меня появилась сеть и поддержка usb-serial устройств.imageЗаключение Разработчики TechNexion сделали очень удобный процесс сборки и создания образа загрузочного SD-диска не требующий глубоких познаний и опыта по сборке ядра Linux. Подготовленные ими скрипты делают всё в автоматическом режиме.Единственно, как обычно, документация не успевает за разработчиками. Последний, на момент написания статьи, вариант документации (tao-3530-userguide-097.pdf) содержал описание сборки под старые исходники, который немного отличается.Спасибо за внимание. В следующей статье я напишу про настройку Eclipse CDT для компиляции программ под arm, запуск приложения на Thunder и отладку программы в Eclipse.

До встречи.

© Habrahabr.ru