ODROID C2

The ODROID-C2 is a 64-bit single board computer(SBC) based on Amlogic S905 SoC. 1.5 GHz 64Bit Quad-Core ARM® Cortex™-A53 CPU and ARM® Mali™-450 GPU (3 Pixel-processors + 2 Vertex shader processors).

ODROID-C2 – это 64-разрядный четырехъядерный одноплатный компьютер (SBC), который является одной из самых экономичных 64-разрядных плат, доступных в мире ARM®. Он может функционировать как приставка для домашнего кинотеатра, компьютер общего назначения, прототип устройства для разработчиков аппаратных решений, рабочая станция для создания программного обеспечения, и так далее.

Hardware Features

ODROID-C2 от компании Hardkernel co., Ltd. построен на базе Amlogic S905 SoC включающего четыре ядра ARM® Cortex™-A53 и графический ускоритель ARM® Mali™-450. На плате установлено 2 Gbyte DDR3 SDRAM и существует возможность подключения eMMC5.0 HS400 объемом до 128 GB. Имеется Gigabit Ethernet. Кроме того, на плате размещены 40+7 контактов GPIO для обеспечения физического интерфейса с внешним миром.

ODROID C2
  • Amlogic ARM® Cortex™-A53(ARMv8) 1.5Ghz quad core CPUs
  • Mali™-450 GPU (3 Pixel-processors + 2 Vertex shader processors)
  • 2Gbyte DDR3 SDRAM
  • Gigabit Ethernet
  • HDMI 2.0 4K/60Hz display
  • H.265 4K/60FPS and H.264 4K/30FPS capable VPU
  • 40pin GPIOs + 7pin I2S
  • eMMC5.0 HS400 Flash Storage slot / UHS-1 SDR50 MicroSD Card slot
  • USB 2.0 Host x 4, USB OTG x 1 (power + data capable)
  • Infrared(IR) Receiver

ODROID C2 поддерживает операционные системы на базе ядра Linux (поставки Ubuntu, Buildroot) и Android.

Toolchains

Для линейки Amlogic SoCs S905/S905X/S912 мы приготовили четыре toolchain-а.

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

Второй toolchain предназначен для создания систем, способных работать на 64-битных ARM процессорах, но использующих лишь 32-битные наборы команд. Данный toolchain находится в архиве с именем 'arm8l-A9XX-linux-glibc-*.tar.gz'.

Третий toolchain предназначен для сборки firmware в составе U-Boot и готовит программы под архитектуру ARM® Cortex™-A3, причем без использования GNU Libc. Этот toolchain расположен в каталоге toolchains/x86_64 под именем 'arm-A9XX-eabi-newlib-*.tar.gz'.

И, наконец, четвертый toolchain построен для создания целевых программ низкого уровня, не использующих библиотеку GNU Libc. Данный toolchain можно использовать, например, при создании собственного загрузчика или для сборки U-Boot. Этот toolchain расположен в каталоге toolchains/x86_64 под именем 'aarch64-S9XX-elf-newlib-*.tar.gz'.

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

$ svn co
  svn://radix-linux.su/toolchains/branches/toolchains-1.1.x
  toolchains

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

$ cd toolchains/products/S9XX-glibc/1.1.2
$ make -j8

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


К сожалению компания Hardkernel co., Ltd. удалила исходный код загрузчика BL1 из состава U-Boot и вместо него поставляет бинарный образ, расположенный в каталоге sd_fuse. Поэтому для сборки загрузчика третий toolchain не нужен. Более того, в загрузчике от компании Hardkernel co., Ltd. есть серьезная ошибка, связанная с тем, что если загрузчик собрать с помощью компилятора GCC 5, то на заключительном этапе загрузки ядра Linux плата зависнет.

Хочется надеяться, что со временем данная ошибка будет исправлена, а пока для сбоки загрузчика следует использовать компилятор GCC четвертой версии.

Source Code

Компания Amlogic Co, Inc., которая является разработчиком SoC S905, распространяет исходные коды на собственном FTP-сервере. Здесь представлены не только коды ядра и загрузчика, а так же все необходимые драйверы устройств, которые обычно представлены на платах базирующихся на SoCs серии S8xx, S9xx.

Однако разработчики платы ODROID C2 ведут собственные репозитории исходных кодов на ресурсе GitHub.

Для платы ODROID C2 следует выбирать ветку odroidc2-3.14.y репозитория ядра Linux и ветку odroidc2-v2015.01 репозитория загрузчика.

Подробные инструкции по самостоятельной сборке ядра и загрузчика можно найти на WiKi-страницах компании Hardkernel co., Ltd.. Так сборка ядра описана на странице Building Kernel, а руководство по сборке загрузчика и приготовлению загрузочной карты представлено на странице Building U-Boot.

На нашем сервере мы поддерживаем зеркала ключевых репозиториев. Так исходные коды ядра Linux можно найти в репозитории linux.git, а загрузчик, – в репозитории u-boot.git.

Для того, чтобы разобраться, какие именно срезы репозиториев используются при сборке платформы Radix.Linux, следует обратиться к Make-файлам репозитория sources.git. Например, в файле Linux/Hardkernel/S905/Makefile, можно видеть, что мы используем ветку odroidc2-3.14.y репозитория https://github.com/hardkernel/linux.git.

Flash Layout

В разделе посвященном разделам SD карты документации Hardkernel co., Ltd. можно найти информацию о расположении как самого загрузчика, как и его переменных окружения.

В следующей таблице, где начало и конец разделов даны в блоках по 512 байтов, представлена информация

Area Size Start End
BL1 / MBR 48.5KB 0 96
U-Boot 667.5KB 97 1431
U-Boot Environment 32KB 1440 1503
File Systems Up to 64GB 2048

достаточная для того, чтобы инсталлировать загрузчик и, в случае необходимости, очистить раздел переменных окружения с помошью утилиты dd.

eMMC/SD Card

Загрузчик, предназначенный для SD карты, записывается в три этапа. Сначала записываются первые 442 байта начального загрузчика bl1.bin по нулевому смещению от начала карты, затем оставшиеся байты загрузчика bl1.bin, начиная с 512-го, записываются со смещением 512 байтов от начала SD карты. Делается это для того, чтобы не повредить таблицу разделов диска. Далее записывается основной загрузчик u-boot.bin начиная с 97-го сектора карты.

Всю процедуру записи загрузчика на SD карту можно представить следующими командами:

# dd if=bl1.bin    of=/dev/mmcblk0  bs=1   count=442
# dd if=bl1.bin    of=/dev/mmcblk0  bs=512 skip=1 seek=1
# dd if=u-boot.bin of=/dev/mmcblk0  bs=512 seek=97

Пользователям системы Radix.Linux нет необходимости самостоятельно заботиться о порядке размещения данных на SD карте. Как мы говорили в разделе Products Release вводной статьи, для записи загрузочного образа достаточно загрузить свежие файлы с FTP сервера, например, из каталога 1.1.634/s9xx-glibc/odroid-c2 и выполнить две следующие операции:

# cat odroid-c2.boot-records odroid-c2.ext4fs > SDHC.img 
# dd if=SDHC.img of=/dev/mmcblk0

Оставшееся место на карте можно распределить с помощью утилиты fdisk, например, создав дополнительный раздел для размещения домашних каталогов пользователей.

Следует отметить, что использование утилиты fdisk совершенно безопасно для загрузчика, который размещен на карте до начала разделов и не затрагивает таблицу разделов в MBR.


В заключение необходимо сказать, что компания Hardkernel co., Ltd. уделяет большое внимание поддержке пользователей и всю необходимую информацию о плате ODROID C2 можно найти на сайте компании.