Nitrogen6X

Embedded single board computer based on the popular Freescale i.MX6 ARM® Cortex™-A9 processor and Vivante™ GC2000 Accelerated 2D and 3D.

Плата Nit6Q входит в линейку устройств Nitrogen6X от компании Boundary Devices и является полнофункциональной платформой для разрабоки, как Linux® так и Android™ приложений. Данная плата построена на кристалле Freescale i.MX6, который включает четырехъядерный 1.0GHz ARM® Cortex™-A9 процессор и 2D/3D графический ускоритель Vivante ™ GC2000, разработанный для мобильных устройств.

Hardware Features

Nitrogen6X представляет собой одноплатный компьютер, который может быть использован как для целей разработки так и в массовом производстве. Плата позволяет оценить процессор i.MX6 перед тем, как принимать решение о разработке собственных устройств. Гарантированный срок службы плат Nitrogen6X составляет 10 лет.

Nitrogen6X (Nit6Q)
  • Freescale i.MX6, Quad-core 1.0 GHz ARM® Cortex™-A9 processor
  • 1GB DDR3 RAM
  • 2MB Serial NOR Flash
  • Vivante™ GC2000 Accelerated 2D and 3D
  • 1080p60 H.264 Decode, 1080p30 H.264 Encode
  • 2x Parallel, 1x MIPI Camera Interfaces
  • 10/100/1GB Ethernet
  • 802.11 b/g/n WiFi
  • Bluetooth 2.1+EDR and Bluetooth 4.0 (Bluetooth Low Energy)

Платы Nitrogen6X поддерживают операционные системы на базе ядра Linux (поставки Yocto, Ubuntu, Buildroot), Android 5.1, а также WindowsCE: CE7/CE2013.

Toolchain

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

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

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

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

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

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

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

Source Code

Исходные коды ядра Linux поставляются в открытом репозитории компании Freescale http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git, однако, лучше использовать репозиторий Boundary Devices https://github.com/boundarydevices/linux-imx6.git поскольку, в этом репозитории, ядро Linux адаптировано к устройствам Nitrogen6X и не требует дополнительных изменений.

Загрузчик U-Boot, доступен на ресурсе GitHub в репозитории https://github.com/boundarydevices/u-boot-imx6.git

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

Для того, чтобы разобраться, какие именно срезы репозиториев используются при сборке платформы Radix.Linux, следует обратиться к Make-файлам репозитория sources.git. Например, в файле Linux/Boundary/Nit6Q/Makefile, можно видеть, что мы используем ветку boundary-imx_3.14.28_1.0.0_ga репозитория https://github.com/boundarydevices/linux-imx6.git, которая, в свою очередь, соответствует ветке imx_3.14.28_1.0.0_ga оригинального Frescale репозитория.

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

Kernel

Порядок сборки и приготовления отчуждаемого пакета, можно найти в каталоге boot/kernel/nit6q репозитория платформы Radix.Linux. Здесь представлена версия 3.14.28 ядра Linux, снятая с ветки boundary-imx_3.14.28_1.0.0_ga.

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

.   .   .

#
# Revisions from 'boundary-imx_3.14.28_1.0.0_ga' branch.
#
#                                               hash |     branch | date
#            ----------------------------------------+------------+--------
revisions  = f51af70093e980596fe15107b3848ef245ee4b4e:imx6-3.14.28:20160304
#
.   .   .

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

U-Boot

Исходные коды загрузчика U-Boot находятся в репозитории https://github.com/boundarydevices/u-boot-imx6.git. Для удобства, мы зеркалируем данный репозиторий на нашем сервере.

Для загрузки устройства необходимо использовать ветку boundary-v2015.07. Приготовление пакета, для платформы Radix.Linux, можно видеть в каталоге boot/u-boot/nit6q.

Текущая версия U-boot рассчитана на то, что загрузка ядра происходит с FAT32-раздела SD карты, а сам загрузчик запускается с SPI Nor Flash, поэтому в файле boot/u-boot/nit6q/2015.07-20160305/Makefile, помимо сборки, осуществляется приготовление образа файловой системы для последующей записи загрузчика в память устройства. Результирующий образ помещается в файл с именем nit6q.fat32fs.

Прошить новый загрузчик в память устройства можно с помощью команд

U-Boot > setenv uboot_defconfig nitrogen6q
U-Boot > run upgradeu

после старта устройства и перехода в консоль командного интерпретатора U-Boot.

На странице, посвященной сборке загрузчика редакции 2015 года, даны подробные инструкции от компании Boundary Devices.

Flash Layout

В разделе Root Ext4 FS Image вводной статьи, даны общие сведения о структуре загрузочной SD карты. В отличие от других плат, необходимость использования дополнительной файловой системы приводит к тому, что на загрузочном носителе необходимо организовать следующее расположение разделов.

$ /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    1048575      523264    c  W95 FAT32 (LBA)
/dev/mmcblk0p2         1048576   10869759     4910592   83  Linux
$

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