The Cubietrack is a feature laden ARM® Linux and Android development system. It incorporates an Allwinner A20 SoC which includes a dual-core ARM® Cortex™-a7 processor and ARM® Mali™-400 MP2 GPU. The Cubietrack provides comprehensive connectivity, multimedia capabilities and substantial RAM and flash.

Hardware Features

The development board is a first persomal machine of devoces developed by Cubietech company.

Cubietrack
  • AllWinnerTech SOC A20, Dual-Core ARM® Cortex™-A7 ARM® Mali™-400 MP2 Complies with OpenGL ES 2.0/1.1
  • 1GB/2GB DDR3 @480MHz
  • HDMI & VGA 1080P display output on-board
  • 10M/100M/1G Ethernet
  • Wifi+BT wireless connection with antenna on-board
  • SATA 2.0 interface support 2.5’ HDD (for 3.5’ HDD, only need another 12V power input)
  • Storage solution NAND+MicroSD or TSD+ MicroSD or 2*MicroSD
  • 2 x USB HOST 1 x OTG 1 x SPDIF 1 x IR 4 x LEDs 1 Headphone 3 x Keys
  • Power DC5V @ 2.5A with HDD support Li-battery & RTC
  • 54 extended pins including I2S, I2C, SPI, CVBS, LRADC x2,UART, PS2, PWMx2, TS/CSI, IRDA, LINEIN&FMIN, TVINx4 with 2.0 pitch connectors
  • PCB size 11cm *8cm*1.4mm very suitable for installing a 2.5’ HDD

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-A2X-linux-glibc-*.tar.gz'.

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

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

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

$ cd toolchains/products/A2X-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/A20 репозитория платформы Radix.pro.

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

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

.   .   .

#
# Revisions from 'sunxi-3.4' branch.
#
#                                               hash | date
#            ----------------------------------------+--------
revisions  = d47d367036be38c5180632ec8a3ad169a4593a88-20150315

.   .   .

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

U-Boot

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

Для загрузки устройства мы используем версию 2015.01. Приготовление пакета, для платформы Radix.pro, можно видеть в каталоге boot/u-boot/A20/2015.01.

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 драйверов.

WiFi & Bluetooth drivers

Для поддержки модуля AP6210 лучше всего использовать драйвер от Eddy Beaupré, доступный по адресу https://github.com/armStrapTools/linux-sunxi-ap6210.

Ввиду того, что данный драйвер сопровождается в полном клоне репозитория ядра, мы приготавливаем patch-файл, который необходим для переноса драйвера в исходный код основного репозитория sunxi-ядра Linux.

Сценарий приготовления patch-файла можно видеть, например, в каталоге sources/Linux/sunxi-3.4.