Плата Cubietrack от компании Cubietech является полнофункциональной платформой для разрабоки, как Linux так и Android приложений. Данная плата построена на кристалле Allwinner A20, который включает двухъядерный ARM® Cortex™-a7 процессор и графический ускоритель Mali™-400 MP2.
Hardware Features
Плата Cubietrack фактически является первой полнофункциональной машиной среди устройств от компании Cubietech.
- 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
Документацию, включающую руководства пользователей, электрические принципиальные схемы и другую полезную информацию, можно найти на странице Cubieboard Docs.
Toolchain
На сайте linux-sunxi.org имеется достаточно информации для самостоятельной сборки toolchain-а.
Во вводной статье мы говорили о недостатках использования сторонних toolchain-ов и, естествено, в нашей работе, мы используем toolchain-ы собственной сборки.
Готовый toolchain для работы на 64-разрядных Linux машинах можно получить на нашем FTP-сервере в каталоге toolchains/x86_64. Выбирать здесь нужно последнюю версию архива с именем 'arm-A2X-linux-glibc-*.tar.gz'.
Для самостоятельной сборки toolchain-а, необходимо получить срез репозитория toolchains, например,
$ svn co svn://radix-linux.su/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. Зеркало, обновляемое каждые сутки, можно найти на нашем сервере по адресу https://git.radix-linux.su/linux-sunxi.git.
Порядок сборки и приготовления отчуждаемого пакета, можно найти в каталоге boot/kernel/A20 репозитория платформы Radix.Linux.
В каталоге 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.Linux, можно видеть в каталоге 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.