The Nit6Q board is one of the boards included into Nitrogen6X line from Boundary Devices company. This is a single board computer based on the Quad-core 1.0GHz ARM® Cortex™-A9 processor and Vivante ™ GC2000 Accelerated 2D/3D Graphics. The i.MX6 processor sports a wider and faster memory bus (64-bit DDR3 1066), integrated HDMI, Gigabit ethernet and additional display channels with a high level of integration.

Hardware Features

The Nitrogen6X is a single board computer that can be used for both development purposes or mass production. The board allows customers to evaluate the i.MX6 processor before committing to a custom design. The Nitrogen6X has also been designed for mass production use with a guaranteed 10 year life span.

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)

The Nitrogen6X boards support Linux based OS (delivered by Yocto, Ubuntu, Buildroot), Android 5.1, and also WindowsCE: CE7/CE2013.

Toolchain

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

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

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

$ svn co http://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.pro, следует обратиться к 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.pro. Здесь представлена версия 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.pro, можно видеть в каталоге 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. Второй раздел предназначен для размещения корневой файловой системы.