EV-iMX6UL Виртуальная машина

Данный краткий обзор посвящен материнским платам EV-iMX6UL-SODIMM-MB и EV-iMX6UL-NANO-MBX, предназначенным для быстрого старта и оценки работы модулей формата SODIMM200 (EV-iMX6UL-SODIMM) и формата NANO (EV-iMX6UL-NANO).

На указанных модулях могут быть установлены различные процессоры, поэтому небольшая расшифровка терминов:

Семейство iMX6UL (UltraLight) это процессоры MCIMX6G0/G1/G2/G3

Семейство iMX6ULL (UltraLightLight) это процессоры MCIMX6Y0/Y1/Y2/Y3

Процессоры обоих семейств полностью совместимы по выводам и любой из них может быть установлен на модуле. Различия семейств:

 

 

1. В семействе 6UL есть криптографический ускоритель и они дороже

2. В семействе 6UL процессоры производятся с температурным диапазоном

Commercial (0...+85C) - маркировка DVM

Industrial (-40...+85C) - маркировка CVM

Automotive (-40...+125C) - маркировка AVM

В семействе 6ULL процессоры производятся с температурным диапазоном

Commercial (0...+85C) - маркировка DVM

Industrial (-40...+85C) - маркировка CVM

3. Максимальная тактовая частота для семейства 6UL - 696 MHz (только в серии Automotive). В семействе 6ULL есть процессоры с тактовой частотой 800 MHz (серия Industrial) и объявлены процессоры с максимальной частотой 900 MHz (только в серии Commercial)

Таким образом можно сделать краткий вывод:

Если вам не нужен криптоускоритель, используйте серию 6ULL. Если вам не нужен расширенный температурный диапазон (-40...+125С) то опять используйте серию 6ULL (тем паче, что найти остальные компоненты (память DDR3 и eMMC на расширенный температурный диапазон сложно и дорого).

Таблица доступной периферии семейства 6UL (UltraLight)

Периферийный модуль Название G0 G1 G2 G3
Ethernet ENET1 Есть Есть Есть Есть
ENET2 Нет Нет Есть Есть
USB with PHY OTG1 Есть Есть Есть Есть
OTG2 Нет Есть Есть Есть
CAN FLEXCAN1 Нет Есть Есть Есть
FLEXCAN2 Нет Нет Есть Есть
CSI CSI Нет Нет Есть Есть
LCD LCDIF Нет Нет Есть Есть
QSPI QSPI Есть Есть Есть Есть
SDIO uSDHC1 Есть Есть Есть Есть
uSDHC2 Есть Есть Есть Есть
UART UART1 Есть Есть Есть Есть
UART2 Есть Есть Есть Есть
UART3 Есть Есть Есть Есть
UART4 Есть Есть Есть Есть
UART5 Нет Есть Есть Есть
UART6 Нет Есть Есть Есть
UART7 Нет Есть Есть Есть
UART8 Нет Есть Есть Есть
ISO7816-3 SIM1 Нет Есть Есть Есть
SIM2 Нет Есть Есть Есть
I2C I2C1 Есть Есть Есть Есть
I2C2 Есть Есть Есть Есть
I2C3 Нет Есть Есть Есть
I2C4 Нет Есть Есть Есть
SPI ECSPI1 Есть Есть Есть Есть
ECSPI2 Есть Есть Есть Есть
ECSPI3 Нет Есть Есть Есть
ECSPI4 Нет Есть Есть Есть
I2S/SAI SAI1 Есть Есть Есть Есть
SAI2 Нет Есть Есть Есть
SAI3 Нет Есть Есть Есть
Timer/PWM EPIT1 Есть Есть Есть Есть
EPIT2 Нет Есть Есть Есть
GPT1 Есть Есть Есть Есть
GPT2 Нет Есть Есть Есть
PWM1 Есть Есть Есть Есть
PWM2 Есть Есть Есть Есть
PWM3 Есть Есть Есть Есть
PWM4 Есть Есть Есть Есть
PWM5 Нет Есть Есть Есть
PWM6 Нет Есть Есть Есть
PWM7 Нет Есть Есть Есть
PWM8 Нет Есть Есть Есть
ADC ADC1 Есть Есть Есть Есть
ADC2 Нет Нет Есть Есть

 

Далее описываются материнские платы для модулей EV-iMX6UL-NANO и EV-iMX6UL-SODIMM.

EV-iMX6UL-NANO-MBX

EV-iMX6UL-SODIMM-MB

 

Ссылки

 

 

 

1. Подсистема питания

Для работы с платой EV-iMX6UL-SODIMM-MB требуется источник питания с напряжением 5.2-5.5В, ток до 2А.

Для работы с платой EV-iMX6Ul-NANO-MBX требуется источник питания с напряжением 9-24В, ток 1А.

 

2. Источник загрузки модуля

На плате EV-iMX6Ul-SODIMM-MB предусмотрен дип переключатель с помощью которого можно выбрать любой из источников загрузки (USB - режим MFGTool, NAND, SPI, eMMC, SDcard). Модуль EV-iMX6UL-SODIMM использует для хранения

загрузчика (u-boot), операционной системы Linux (zImage + dtb) и файловой системы микросхему памяти eMMC объемом 2-32 ГБ, которая подключена к процессору с помощью интерфейса USDHC2. Поэтому для корректной работы модуля, необходимо установить с помощью дип переключателя режим загрузки с eMMC2 (1010110).

На плате EV-iMX6Ul-NANO-MBX переключатель не предусмотрен. Запрограммированный модуль EV-iMX6UL-NANO использует в качестве источника загрузки память eMMC объемом 2-32 ГБ, которая подключена к процессору с помощью интерфейса USDHC2.

Оба модуля EV-iMX6UL-SODIMM и EV-iMX6UL-NANO поставляются с незапрограммированными eFuse! (Путем программирования eFuse возможно установить любой источник  загрузки). Незапрограммированный модуль автоматически переходит в режим загрузки USB (MFGTool) в случае, если микросхема eMMC не содержит загрузчик или он поврежден.

 

3. Отладочный интерфейс DUART.

Используется в качестве консоли. Подключен к выводам UART1 процессора. На платах EV-iMX6UL-SODIMM-MB и EV-iMX6UL-NANO-MBX предусмотрен 4-х контактный разъем (SM04B-SRSS-TB(LF)(SN))  для подключения переходника UART-USB EV-FT230. Возможно использования любых других микросхем интерфейса RS-232 или переходников USB-UART с логическими уровнями сигнала 3.3В.

Назначение контактов разъема установленного на платах -

1 - GND  - GND

2 - RXD  - TXD

3 - TXD  - RXD

4 - VCC  - VCC

4. Включение модуля

Необходима любая терминальная программа, например PuTTY для просмотра выводимых сообщений. Настройки терминальной программы - скорость 115200, контроль передачи и четности - отсутствует.

Модули поставляются с запрограммированной микросхемой памяти eMMC - запрограммирован загрузчик u-boot, ядро OS Linux и файловая система. Достаточно установить модуль в материнскую плату, подключить консоль (RS-232, USB) и подать питание.

В терминальной программе будет виден старт загрузчика u-boot. В загрузчике установлена задержка в 3 секунды,по истечении которых из микросхемы eMMC будет прочитан образ ядра (zImage и dtb файл (imx6ul-14x14-sodimm.dtb или imx6ul-14x14-nano.dtb))

после чего будет выполнена загрузка ядра Linux и монтирование файловой системы rootfs.

Строка аргументов  загрузчика

u-boot>setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw';

u-boot>saveenv

Если вы записали собственный u-boot,  при первом включении выполните команду

u-boot>printenv

и убедитесь, что у вас заданы корректные значения

ipaddr - фиксированный IP адрес платы. По умолчанию он равен 192.168.1.155. Если ваша сеть имеет другую адресацию, назначьте необходимый адрес командой

u-boot>setenv ipaddr xxx.xxx.xxx.xxx (укажите нужный адрес)

u-boot>saveenv (сохранить назначенный адрес)

ethaddr - MAC адрес платы.

u-boot>setenv ethaddr 00:e0:0c:bc:e5:60 (укажите собственный MAC адрес)

u-boot>saveenv (сохранить назначенный MAC адрес)

fdt_file - имя DTB файла ядра операционной системы. Необходимо назначить файл соответствующий модулю, установленному на плате. Необходимо выбрать один из четырех вариантов.

u-boot>setenv fdt_file imx6ul-14x14-nano.dtb (Для модуля EV-iMX6UL-NANO с процессором семейства 6UL UltraLight  (G0/G1/G2/G3))

u-boot>setenv fdt_file imx6ull-14x14-nano.dtb (Для модуля EV-iMX6UL-NANO с процессором семейства 6ULL UltraLightLight (Y0/Y1/Y2/Y3))

u-boot>setenv fdt_file imx6ul-14x14-sodimm.dtb (Для модуля EV-iMX6UL-SODIMM с процессором семейства 6UL UltraLight  (G0/G1/G2/G3))

u-boot>setenv fdt_file imx6ull-14x14-sodimm.dtb (Для модуля EV-iMX6UL-SODIMMс процессором семейства 6ULL UltraLightLight (Y0/Y1/Y2/Y3))

u-boot>saveenv (сохраняем назначенный файл)

При попытке загрузить несоответствующий файл, например файл для процессора 6UL в плату с модулем 6ULL или наоборот будет вызван Kernel Panic.

После монтирования файловой системы требуется ввести имя и пароль (root/root)

Пароль необходим для того, чтобы получить доступ по ssh. Если пароль не задан, по ssh зайти не удастся. Изменить пароль всегда можно с помощью команды

passwd

При старте, ядро будет пытаться получить IP адрес для интерфейсов ETH0/ETH1 по DHCP. За это отвечает файл /etc/network/interfaces в файловой системе

--------------------------------------------------------------------------

auto lo

iface lo inet loopback


auto wlan0

iface wlan0 inet dhcp


auto eth0

iface eth0 inet dhcp


auto eth1

iface eth1 inet dhcp

--------------------------------------------------------------------------

Если по каким-то причинам необходимо использовать статический адрес, необходимо подправить файл, например для интерфейса eth0 зададим статический адрес 192.168.0.136

auto eth0

iface eth0 inet static

address 192.168.0.136

netmask 255.255.255.0

gateway 192.168.0.1


5. Запись и программирование модуля по USB

Для упрощения программирования модуля предусмотрен режим загрузки по интерфейсу USB0. Со стороны компьютера модуль виден как HID устройство. С помощью специальной программы MFGTool.exe возможна загрузка и запись в микросхему

eMMC, NAND, SPI Flash. Для перехода в режим загрузки по интерфейсу USB необходимо выставить соответствующий режим с помощью дип переключателя (для платы  EV-iMX6UL-SODIMM-MB) или стереть загрузочный сектор микросхемы eMMC (для любой платы).

Сделать это если при старте платы нажатием любой кнопки клавиатуры прервать чтение и загрузку ядра и выполнить команду

u-boot>mmc erase 0 1000

После нажатия на кнопку Reset или следующей подачи питания модуль перейдет в режим загрузки по интерфейсу USB.

Также, стереть загрузочный сектор можно и в ядре командой

root ~ #dd if=/dev/zero of=/dev/mmcblk1 bs=1k count=10

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

buildroot - собранная с помощью системы сборки buildroot

debian - известная и популярная файловая система Debian

yocto - собранная с помощью системы сборки Yocto Project

В архиве также можно найти vbs скрипты, упрощающие запись модуля. Например, скрипт mfgtool-evimx6ul-nano-buildroot.vbs запустит программу MFGTool для записи модуля EV-iMX6UL-NANO с процессором 6UL (UltraLight) с файловой системой buildroot. А скрипт mfgtool-evimx6ull-sodimm-debian.vbs запустит программу MFGTool для записи модуля EV-iMX6UL-SODIMM с процессором 6ULL (UltraLightLight) с файловой системой Debian. Заглянув в данные скрипты вы легко поймете какие параметры необходимо передать для записи различных dtb, u-boot, rootfs файлов. Файлы для записи находятся в папке \mfgtool-6UL-6ULL\Profiles\Linux\OS Firmware\files\ При необходимости, вам достаточно просто заменить данные файлы на свои и записать их в модуль.

Также, в архиве имеется утилита sb_loader.exe, с помощью которой можно загрузить код по USB и запустить на выполнение. Например, команда

PC://sb_loader.exe -f u-boot.imx

загрузит файл u-boot.imx в память модуля и запустить на выполнение. В терминальной программе можно увидеть лог запуска загрузчика u-boot.imx. Это удобно на стадии отладки загрузчика. Нет необходимости каждый раз его записывать в микросхему eMMC для проверки. Достаточно загрузить по USB и он готов к тестированию.

 

6. Загрузка ядра и dtb файла.

Обычно файлы zImage и imx6ul-14x14-sodimm.dtb или imx6ul-14x14-nano.dtb записаны в микросхеме eMMC (партиция mmcblk1p1). Загрузчик u-boot вычитывает их и запускает на выполнение.

При отладке ядра или dtb файла неудобно каждый раз стирать и записывать микросхему eMMC. Имеется возможность загрузить данные файлы другими способами:

1. Загрузка по сети:

В сети должен присутствовать tftp сервер, на который необходимо скопировать файлы zImage и imx6ul-14x14-sodimm.dtb или imx6ul-14x14-nano.dtb

в переменных окружения u-boot должны быть указаны ip адрес платы, mac адрес платы, ip адрес gateway и ip адрес tftp сервера. Для сети 192.168.1.x переменные могут выглядеть так:

u-boot>setenv ipaddr 192.168.1.119

u-boot>setenv ethaddr 12:8B:1C:F4:98:1A

u-boot>setenv gateip 192.168.1.1

u-boot>setenv serverip 192.168.1.110

u-boot>saveenv

Загружаем файлы по сети

u-boot>tftpboot ${loadaddr} zImage

u-boot>tftpboot ${fdt_addr} imx6ul-14x14-sodimm.dtb

u-boot>bootz ${loadaddr} - ${fdt_addr}


2. Загрузка с USB Flash:

Создадим на USB Flash Drive папку mx6ul. В нее скопируем файлы zImage и imx6ul-14x14-sodimm.dtb или imx6ul-14x14-nano.dtb. Вставляем USB Flash Drive в плату, подаем питание и в u-boot выполняем следующие команды:

u-boot>setenv loadaddr 0x81000000;

u-boot>usb start;

u-boot>fatload usb 0 $loadaddr /mx6ul/zImage;

u-boot>fatload usb 0 $fdt_addr /mx6ul/imx6ul-14x14-sodimm.dtb;

u-boot>bootz ${loadaddr} - ${fdt_addr};

 

Примечание! В случае, если используется ядро с initramfs (ядро со вxстроенной файловой системой) большого размера возможно потребуется изменение loadaddr и fdt_addr.

 

7. Виртуальная машина

Рано или поздно встанет вопрос о сборке загрузчика или ядра под собственные требования. Для сборки загрузчика, ядра операционной системы и файловой системы предлагается настроенная и сконфигурированная виртуальная машина VMware. Образ виртуальной машины можно загрузить по данной ссылке. (ссылка)

Для входа в виртуальную машину используйте

Login: user

Password: 123456

Запускаем терминал и переходим в папку buildroot

user@ubuntu: cd /home/user/Projects/EV-iMX6UL/buildroot-2016-11.1

user@ubuntu: make menuconfig

Меню настроек и выбора собираемых пакетов. Отметим наиболее важные пункты.

1. Kernel ->  Device Tree Source file names

Здесь необходимо указать имя dts файла, который будет собираться.

Для модуля EV-iMX6UL-NANO с процессором семейства 6UL (UltraLight) это imx6ul-14x14-nano

Для модуля EV-iMX6UL-NANO с процессором семейства 6ULL (UltraLightLight) это imx6ull-14x14-nano

Для модуля EV-iMX6UL-SODIMM с процессором семейства 6UL (UltraLight) это imx6ul-14x14-SODIMM

Для модуля EV-iMX6UL-SODIMM с процессором семейства 6ULL (UltraLightLight) это imx6ull-14x14-SODIMM

В файлах imx6ul-14x14-nano и imx6ull-14x14-nano есть дефайн DUAL_ETH, закомментируйте его если используется модуль с одной микросхемой PHY Ehternet и раскомментируйте, если с двумя микросхемами.

 

2. Filesystem images ->  tar the root filesystem -> Compression method (bzip2).

Для записи с помощью MFGTool нам потребуется файловая система в архиве tar.bz2. Также можно установить галочку на cpio the root filesystem (for use an an initial RAM filesystem). Это позволит собрать ядро со встроенной файловой системой.

 

3. Bootloaders -> U-Boot board name

Для модулей EV-iMX6UL-NANO и EV-iMX6UL-SODIMM u-boot одинаковый. Но для процессоров семейств 6UL и 6ULL он разный. В данных процессорах разные калибровки памяти (DCD в mximage.cfg), поэтому попытка запустить u-boot собранный для другого семейства может окончиться зависание или черным экраном в консоли. Хотя, иногда и работает...

Возможные варианты

mx6ul_14x14_evk - для модулей с процессором семейства 6UL (UltraLight - G0/G1/G2/G3)

mx6ull_14x14_evk - для модулей с процессором семейства 6ULL (UltraLightLight - Y0/Y1/Y2/Y3)

В меню Target packages можно выбрать пакеты для сборки, которые вам необходимы.

Здесь вам предстоит выбрать те пакеты и библиотеки, которые вы считаете необходимыми для вашей задачи.

Выходим , нажав на Exit и

выбрав Yes подтверждаем внесенные изменения.

4. Конфигурируем ядро

user@ubuntu: ~/Projects/EV-iMX6UL/buildroot-2016-11.1$ make linux-menuconfig


Здесь можно выбрать необходимые драйвера, которые необходимо включить в ядро Linux. Выходим нажав Exit и нажав Yes подтверждаем внесенные изменения.

5. Сборка.

Для сборки достаточно набрать make:

user@ubuntu: ~/Projects/EV-iMX6UL/buildroot-2016-11.1$ make

При удачном завершении процесса сборки в папке /build/output/images/ вы найдете следующие файлы:

  • u-boot.imx - собранный загрузчик u-boot
  • zImage - собранное ядро Linux
  • imx6ul-14x14-nano.dtb - файл описания периферии
  • rootfs.tar.bz2 - собранная и запакованная файловая система.

Эти файлы можно записать в микросхему eMMC используя утилиту MFGTool.exe (не забыв переименовать rootfs.tar.bz2 в rootfs_buildroot.tar.bz2 )

Сборка ядра с initramfs

user@ubuntu: ~/Projects/EV-iMX6UL/buildroot-2016-11.1$ make linux-menuconfig

Устанавливаем галочку

General Setup ->  Initial RAM filesystem and RAM disk (initramfs/initrd)

и указываем путь к файлу rootfs.cpio , в нашем случае это /home/user/Projects/EV-iMX6UL/buildroot-2016-11.1/output/images/rootfs.cpio

Exit->Yes.

Снова запускаем процесс сборки

user@ubuntu: ~/Projects/EV-iMX6UL/buildroot-2016-11.1$ make

После завершения сборки, можно заметить, что файл zImage заметно увеличился в размерах. В него теперь включена файловая система.

Подсказка - каждый раз после процесса удачной сборки buildroot создает в папке с собранным пакетом файл .stamp_built. Этим он делает себе заметку, что пакет был собран и его можно не пересобирать, если не было никаких изменений.

Удалите данный файл, если вы вносили какие-то изменения в коде борд файла или драйверах. Иначе, вы не увидите никаких изменений после сборки.

6. Исходные файлы.

Для загрузчика u-boot это два файла для модуля с процессором 6UL (UltraLight)

Файл конфигурации

/home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/uboot-rel_imx_4.1.15_2.0.0_ga/include/configs/mx6ul_14x14_evk.h

Борд файл платы

/home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/uboot-rel_imx_4.1.15_2.0.0_ga/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c

Для модуля с процессором 6ULL (UltraLightLight)

Файл конфигурации

/home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/uboot-rel_imx_4.1.15_2.0.0_ga/include/configs/mx6ullevk.h

Борд файл платы

/home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/uboot-rel_imx_4.1.15_2.0.0_ga/board/freescale/mx6ullevk/mx6ullevk.c

Для ядра Linux

Борд файл платы

/home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/linux-rel_imx_4.1.15_2.0.0_ga/arch/arm/mach-imx/mach-imx6ul.c

Файл описания периферии для модуля EV-iMX6UL-SODIMM

/home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/linux-rel_imx_4.1.15_2.0.0_ga/arch/arm/boot/dts/imx6ul-14x14-sodimm.dts

или

/home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/linux-rel_imx_4.1.15_2.0.0_ga/arch/arm/boot/dts/imx6ull-14x14-sodimm.dts

Файл описания периферии для модуля EV-iMX6UL-NANO

/home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/linux-rel_imx_4.1.15_2.0.0_ga/arch/arm/boot/dts/imx6ul-14x14-nano.dts

или

/home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/linux-rel_imx_4.1.15_2.0.0_ga/arch/arm/boot/dts/imx6ull-14x14-nano.dts

Важное замечание!

Если вы изменяете данные файлы, то после окончания редактирования удалите файл

.stamp_built в папке /home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/uboot-rel_imx_4.1.15_2.0.0_ga/  или /home/user/Projects/EV-iMX6UL/buildroot-2016.11.1/output/build/linux-rel_imx_4.1.15_2.0.0_ga в зависимости от того где вы производите изменения. Дело в том, что таким образом (создав файл .stamp_built) buildroot помечает удачно собранные пакеты и при следующей пересборке, обнаружив этот файл в папке, он обходит в сборке данный пакет.

Описание платы EV-iMX6UL-SODIMM-MB.

На плате расположены

  • разъем SODIMM200 для установки модуля EV-iMX6UL-SODIMM
  • Разъем микро SD карты
  • Разъем питания (5В/2А)
  • FPC разъем для подключения дисплея
  • Аудиокодек WM8960 с разъемами Line Out/Mic In/SPK_Out. Также на плате имеется встроенный электретный микрофон
  • Два Ethernet разъемами со встроенными трансформаторами. Один из разъемов подключен к микросхеме физического уровня PHY установленной на модуле EV-iMX6UL-SODIMM. Второй разъем подключен к микросхеме физического уровня Ethernet PHY расположенной на самой материнской плате EV-iMX6UL-SODIMM-MB
  • Два разъема USB 2.0 HS. Верхний разъем USB0, он же используется при программировании платы с помощью MFGTool. Нижний разъем -USB1.
  • Микросхема трансивера SN65HVD12 и разъем интерфейса RS-485 (UART3). В платах EV-iMX6UL-SODIMM-MB в ерсии 1.3 и ниже имеется ошибка. Для управления направлением прием/передача используется сигнал UART3_RTS, вместо сигнала UART3_CTS. Для исправления данной ошибки необходимо отрезать дорожку с сигналом UART3_RTS подключенную к выводам 2 и 3 микросхемы трансивера U6 (SN65HVD12) и подключить к данным выводам сигнал UART3_CTS (вывод 34 разъема модуля M1).
  • Микросхема трансивера SN65HVD232 и разъем интерфейса CAN (CAN2)
  • DIP переключатель для выбора источника загрузки модуля
  • Держатель батареи CR1220 для питания RTC встроенного в процессор
  • 20-и контактный разъем JTAG
  • Штыревые разъемы с шагом 2.54 мм, на которые выведены сигналы модуля.

 

Описание платы EV-iMX6UL-NANO-MBX.

Малоформатный модуль EV-iMX6UL-NANO прежде всего нацелен на использовании в области удаленного мониторинга и управления.  Материнская плата EV-iMX6UL-NANO-MBX призвана максимально раскрыть богатый потенциал модуля. На печатной плате 8-ми угольной формы, с размерами 120*120 мм расположены следующие компоненты:

  • 52-х контактный разъем mini PCI-e для установки модуля EV-iMX6UL-NANO
  • Подсистема питания, построенная на микросхеме TPS54331, позволяющая запитать плату от источника питания с напряжением 9-24В.
  • Дополнительные стабилизаторы на 3.3В для питания TFT LCD матриц с интерфейсом LVDS, напряжение 12В для работы подсветки дисплея и 4.0В для питания GSM модема SIM800C
  • USB Hub USB2514 на 4 нисходящих порта. К одному из нисходящих портов подключен модуль WiFi/Bluetooth на баз микросхемы RTL8273BU. Три остальных порта подключены к разъемам USB-A. Микросхема USB2514 управляет ключами питания портов USB и следит за перегрузкой по току.
  • Микросхема трансивера RS-485 (65HVD12) и разъем (разрывной клеммный соединитель с шагом 3,81 мм).
  • Микросхема трансивера CAN (65HVD232) и разъем (разрывной клеммный соединитель с шагом 3,81 мм).
  • Разъем micro USB, подключенный к порту USB0 модуля, позволяет программировать модуль с помощью утилиты MFGTool и работать в режиме Host/Device.
  • GSM модуль SIM800C компании SIMCOM с держателем SIM карт стандартного размера. Два светодиода отображает режим работы и статус модема.
  • 2 Реле HF49F с разъемами (разрывной клеммный соединитель с шагом 3,81 мм).  Два светодиода индицируют состояние реле.
  • Разъем для подключения малогабаритного OLED дисплея с разрешением 128*32 с контроллером SSD1306. Дисплей подключен к модулю интерфейсом I2C1 модуля.
  • 4-х контактный разъем DUART для использовании в качестве консоли. Уровни сигнала 3.3В. Рекомендуется использовать переходник EV-FT230.
  • WiFi/Bluetooth модуль на базе микросхемы RTL8273BU.
  • 40 контактный штыревой разъем с шагом 2,54 мм, на который выведены все сигналы модуля, за исключением USB/Ethernet.
  • Дополнительный 24 контактный разъем с шагом 2,54 мм. В данный разъем могут быть установлены ZigBee модули на базе микросхемы TI CC2530 и модуль трансивера на базе микросхемы Nordic nRF24L01
  • Кнопка Reset для аппаратного сброса модуля.
  • На обратной стороне платы расположен держатель литиевой батареи CR1220 для работы встроенного в процессор RTC и держатель SD карты.

Драйвер WiFi модуля RTL8273BU.

В Staging Drivers находится драйвер WiFi модуля.

Настройка WiFi соединения

Для подключения к открытой сети Asus-C064

root ~ #ifconfig wlan0 up

root ~ #iwlist wlan0 scan

root ~ #iwconfig wlan0 essid ASUS-C064

root ~ #dhcpcd wlan0

root ~ #ping 192.168.1.1

Для подключения к сети с WPA шифрованием Asus-C075 с паролем pass123456

root ~ #ifconfig wlan0 up

root ~ #iwlist wlan0 scan

root ~ #wpa_passphrase Asus-C075 pass123456 > /etc/wpa_supplicant.conf

root ~ #wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf

Управление модемом SIM800C.

Для включения / выключения модема используется сигнал Powerkey (SAI2_MCLK/GPIO1_IO11). Данный вывод объявлен как GPIO в u-boot и установлен уровень логического 0. Это сделано для того, чтобы при подачи питания на плату модем не включался. В файле imx6ul-14x14-nano.dts данный вывод также объявлен как GPIO.

В /etc/init.d/ создан файл S31modem

echo 11 > /sys/class/gpio/export

echo out > /sys/class/gpio/gpio11/direction

echo 0 > /sys/class/gpio/gpio11/value

При старте системы он настраивает GPIO1_IO11 на выход и устанавливает 0 на выходе.

Скрипт modem_on включает модем

Скрипт modem_off выключает модем

Скрипт connect_utel устанавливает ppp соединение

 

Управление реле

Сигнал I2C2_SCL (GPIO4_IO20) используется для управление Relay1, сигнал I2C2_SDA(GPIO4_IO19) для управления Relay2.

Для того чтобы включить реле необходимо записать 1 в соответствующий GPIO

echo 1 > /sys/class/gpio/gpio116/value  - включить Relay1

echo 1 > /sys/class/gpio/gpio115/value  - включить Relay2

Чтобы отключить реле необходимо записать 0 в соответствующий GPIO

echo 0 > /sys/class/gpio/gpio116/value  - выключить Relay1

echo 0 > /sys/class/gpio/gpio115/value  - выключить Relay2

Примечание: номер порта GPIO считается по формуле ((GPIO-1)*32) + IO. Пример,

GPIO4_IO20 = ((4-1)*32)+20 = 116

Использование TFT LCD с LVDS интерфейсом.

На модуле EV-iMX6UL-NANO может быть установлен LVDS передатчик 74LVDS93 включенный по схеме с 18-и битным цветом, поскольку большинство матриц небольшого размера 7-11" имеют глубину цвета 18 бит (262144 цветов)

Настройки LCD контроллера находятся в dts файле. Например, для дисплея LTN101NT06 (http://www.laptopremont.com/manuals/LTN101NT06-001.pdf) с диагональю 10,1" необходимо прописать следующте параметры:

ltn101 {

clock-frequency = <54200000>;

hactive = <1024>;

vactive = <600>;

hfront-porch = <24>;

hback-porch = <160>;

hsync-len = <136>;

vback-porch = <61>;

vfront-porch = <3>;

vsync-len = <6>;

 

hsync-active = <0>;

vsync-active = <0>;

de-active = <1>;

pixelclk-active = <0>;

};

На материнской плате находится стабилизатор 3,3В/2А для питания дисплея.  Матрица LTN101NT06  имеет максимальное потребление 1.5А. Для питания подсветки на материнской плате предусмотрен повышающий преобразователь AP3012 с выходным напряжением 14В.

OLED дисплей 128*32

На плате установлен OLED дисплей с разрешением 128*32 точки с управляющим контроллером SSD1306.

Ввиду небольшого разрешения, дисплей управляется по I2C шине (I2C1 шина процессора) .  Дисплей используется для отображения сетевых настроек (IP адрес) модуля. В виртуальной машине имеется папке C example содержащая пример работы с дисплеем. Для сборки данной программы достаточно запустить скрипт make_ssd. Собранный исполняемый файл test_ssd1306 можно скопировать в папку /root/ файловой системы и запускать:

./test_ssd1306