Плата Cubieboard от компании Cubietech является полнофункциональной платформой для разрабоки, как Linux так и Android приложений. Данная плата построена на кристалле Allwinner A10, который включает 1.0GHz ARM® Cortex™-a8 процессор и графический ускоритель Mali™-400.
Hardware Features
Плата Cubieboard является первой версией устройств от компании Cubietech.

- 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
Документацию, включающую руководства пользователей, электрические принципиальные схемы и другую полезную информацию, можно найти на странице Cubieboard Docs.
Toolchain
На сайте linux-sunxi.org имеется достаточно информации для самостоятельной сборки toolchain-а.
Во вводной статье мы говорили о недостатках использования сторонних toolchain-ов и, естествено, в нашей работе, мы используем toolchain-ы собственной сборки.
Готовый toolchain для работы на 64-разрядных Linux машинах можно получить на нашем FTP-сервере в каталоге toolchains/x86_64. Выбирать здесь нужно последнюю версию архива с именем 'arm-A1X-linux-glibc-*.tar.gz'.
Для самостоятельной сборки toolchain-а, необходимо получить срез репозитория toolchains, например,
$ svn co svn://radix-linux.su/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. Зеркало, обновляемое каждые сутки, можно найти на нашем сервере по адресу https://git.radix-linux.su/linux-sunxi.git.
Порядок сборки и приготовления отчуждаемого пакета, можно найти в каталоге boot/kernel/A10 репозитория платформы Radix.Linux.
В каталоге 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.Linux, можно видеть в каталоге 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.Linux. Драйвер xf86-video-fbturbo собирается в каталоге X11/X.org/driver/xf86-video-fbturbo/r3p0-04rel0/0.4.0. Кроме того, для работы графического стека, необходимо позаботиться о сборке UMP драйвера и довольно старой версии библиотеки libdri2, которая уже не сопровождается отдельно и требуется лишь для старых (r3p0) версий Mali™-400 драйвера.
Мы не будем здесь подробно описывать весь процесс сборки графического стека поскольку структура исходных кодов для сборки платформы Radix.Linux достаточно прозрачна и, пользователи могут легко найти все необходимые сценарии самостоятельно.