The Cubieboard is a feature laden ARM® Linux and Android development system. It incorporates an Allwinner A10 SoC which includes a 1.0GHz ARM® Cortex™-a8 processor and ARM® Mali™-400 GPU. The Cubieboard provides comprehensive connectivity, multimedia capabilities and substantial RAM and flash.

Hardware Features

The Cubieboard development board is a first version of devoces developed by Cubietech company.

Cubieboard
  • AllWinnerTech SOC A10, ARM® Cortex™-A8 ARM® Mali™-400 MP1 Complies with OpenGL ES 2.0/1.1
  • 1GB DDR3 @480MHz
  • 4GB internal NAND flash, up to 32GB on SD slot, up to 2T on 2.5 SATA disk
  • 5VDC input 2A or USB otg input
  • 1x 10/100 ethernet, support usb wifi
  • 2x USB 2.0 HOST, 1x mini USB 2.0 OTG, 1x micro sd
  • 1x HDMI 1080P display output
  • 1x IR, 1x line in, 1x line out
  • 96 extend pin interface, including I2C, SPI, RGB/LVDS, CSI/TS, FM-IN, ADC, CVBS, VGA, SPDIF-OUT, R-TP, and more

Detailed documentation, including user guides, full hardware schematics and more can be found on a Cubieboard Docs page.

Toolchain

На сайте linux-sunxi.org имеется достаточно информации для самостоятельной сборки toolchain-а.

Во вводной статье мы говорили о недостатках использования сторонних toolchain-ов и, естествено, в нашей работе, мы используем toolchain-ы собственной сборки.

Готовый toolchain для работы на 64-разрядных Linux машинах можно получить на нашем FTP-сервере в каталоге toolchains/x86_64. Выбирать здесь нужно последнюю версию архива с именем 'arm-A1X-linux-glibc-*.tar.gz'.

Для самостоятельной сборки toolchain-а, необходимо получить срез репозитория toolchains, например,

$ svn co http://svn.radix.pro/svn/toolchains/trunk toolchains

И выполнить команду make в соответствующем каталоге:

$ cd toolchains/products/A1X-glibc/1.0.9
$ make -j8

Напомним здесь, что перед сборкой необходимо подготовить каталог для инсталляции toolchain-а так, как это описано в разделе, посвященном загрузке toolchain-ов с нашего FTP-сервера.

Source Code

На странице, посвященной исходным кодам Manual Build Howto, можно найти всю необходимую информацию для самостоятельной сборки ядра Linux и загрузчика U-Boot. Разработчики ведут собственные репозитории и делают все необходимое для того, чтобы их код, со временем, был интегрирован в основные ветки репозитория ядра Linux и загрузчика U-Boot.

Kernel

Репозиторий исходных кодов ядра расположен по адресу https://github.com/linux-sunxi/linux-sunxi. Зеркало, обновляемое каждые сутки, можно найти на нашем сервере по адресу http://git.radix.pro/linux-sunxi.git.

Порядок сборки и приготовления отчуждаемого пакета, можно найти в каталоге boot/kernel/A10 репозитория платформы Radix.pro.

В каталоге 3.4-20140514 представлен сценарий сборки исходных кодов ядра, являющихся срезом ветки sunxi-3.4 оригинального репозитория.

Для идентификации срезов, мы используем дату в именовании каталогов, содержащих наши Make-файлы. Точные ревизии веток, используемые в нашей работе, можно увидеть на FTP-сервере или в репозитории sources.git (файл Linux/sunxi/sunxi-3.4/Makefile ), где вначале файла приведены таблицы соответствия hash-сумм и дат изменения репозитория.

.   .   .

#
# Revisions from 'sunxi-3.4' branch.
#
#                                               hash | date
#            ----------------------------------------+--------
revisions  = e37d760b363888f3a65cd6455c99a75cac70a7b8-20140514
revisions += 9a1cd034181af628d4145202289e1993c1687db6-20141014

.   .   .

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

U-Boot

Исходные коды загрузчика U-Boot находятся в репозитории на портале GitHub, Inc. (US). Для удобства, мы зеркалируем данный репозиторий на нашем сервере.

Для загрузки устройства необходимо использовать ветку sunxi. На странице, посвященной загрузчику, описан порядок сборки. Приготовление пакета, для платформы Radix.pro, можно видеть в каталоге boot/u-boot/A10.

Следует отметить, что кроме старой версии загрузчика поддерживается версия, которая уже имплементирована в основную ветку U-Boot. На странице Mainline U-Boot можно найти достаточно подробное описание процесса сборки загрузчика.

Flash Layout

На странице Bootable SD Card представлена таблица размещения загрузчика, согласно которой запись на карту может быть осуществлена посредством следующих комманд.

# dd if=/dev/zero                 of=/dev/mmcblk0  bs=1024  seek=544 count=128
# dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0  bs=1024  seek=8

Здесь, первая команда предназначена для очистки переменных окружения U-Boot, а вторая, – для записи начального SPL загрузчика и, непосредственно, U-Boot.

В разделе Products Release вводной статьи, даны общие сведения о размещении корневой файловой системы на загрузочном носителе. Если не использовать готовый образ корневой файловой системы, а создавать разделы с помощью программы fdisk, то начало первого раздела носителя следует располагать в 2048-м секторе:

$ /sbin/fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 32.1 GB, 32094814208 bytes
4 heads, 16 sectors/track, 979456 cylinders, total 62685184 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

        Device Boot      Start        End      Blocks   Id  System
/dev/mmcblk0p1            2048   33556479    16777216   83  Linux
/dev/mmcblk0p2        33556480   58722303    12582912   83  Linux
/dev/mmcblk0p3        58722304   62685183     1981440   82  Linux swap
$

Это соответствует значению, выбираемому программой fdisk по умолчанию.

GPU Kernel Module

В отличие от устройств, для которых модуль GPU собирается вне исходных кодов ядра Linux, разработчики ПО для Cubuiboard имплементировали Mali™-400 драйвер непосредственно в ядро, что накладывает некоторые ограничения на использование различных версий OpenGL ES 2.0 библиотек и xf86-video драйверов.

GPU User Space Drivers

На странице Mali Binary Driver даны исчерпывающие пояснения, достаточные для самостоятельной сборки необходимых длайверов.

Для X.org сервера лучшим решением будет использование длайвера fbturbo, исходные коды которого можно найти по адресу https://github.com/ssvb/xf86-video-fbturbo.

Сценарий приготовления отчуждаемого пакета OpenGL ES 2.0 библиотек можно видеть, например, в файле X11/libs/sunxi-mali/3.0.4.0/Makefile платформы Radix.pro. Драйвер xf86-video-fbturbo собирается в каталоге X11/X.org/driver/xf86-video-fbturbo/r3p0-04rel0/0.4.0. Кроме того, для работы графического стека, необходимо позаботиться о сборке UMP драйвера и довольно старой версии библиотеки libdri2, которая уже не сопровождается отдельно и требуется лишь для старых (r3p0) версий Mali™-400 драйвера.

Мы не будем здесь подробно описывать весь процесс сборки графического стека поскольку структура исходных кодов для сборки платформы Radix.pro достаточно прозрачна и, пользователи могут легко найти все необходимые сценарии самостоятельно.