Набор разработчика от TechNexion Thunderpack
Здравствуй уважаемый читатель. Недавно мне довелось поработать с набором для разработчика, тайваньской компании «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.
В данном посте я хочу рассказать, про свой опыт работы с данной платой.
И так, начнём.
Установка 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. Поискав драйвер, в только что установленной системе, я его не обнаружил. Возможно, при сборке его забыли включить.
На сайте 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
Определяем переменные окружения. Для этого в файл /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
Устанавливаем 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
Данный скрипт выполнит построение загрузчика, ядра ОС, копирование всех необходимых файлов в заранее подготовленную файловую структуру и т.п.
Затем очистки исходных кодов от созданных объектных файлов.
$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 устройств.
Заключение
Разработчики TechNexion сделали очень удобный процесс сборки и создания образа загрузочного SD-диска не требующий глубоких познаний и опыта по сборке ядра Linux. Подготовленные ими скрипты делают всё в автоматическом режиме.
Единственно, как обычно, документация не успевает за разработчиками. Последний, на момент написания статьи, вариант документации (tao-3530-userguide-097.pdf) содержал описание сборки под старые исходники, который немного отличается.
Спасибо за внимание. В следующей статье я напишу про настройку Eclipse CDT для компиляции программ под arm, запуск приложения на Thunder и отладку программы в Eclipse.
До встречи.
Автор: RIK30