Данный краткий обзор посвящен материнским платам 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.
Ссылки
- Виртуальная машина Ubuntu (28/05/2017)
- Архив с MFGTool и файлами для записи
- Руководство пользователя EV-iMX6UL-SODIMM-MB
- Руководство пользователя EV-iMX6UL-NANO-MBX
- Руководство пользователя модуля EV-iMX6UL-SODIMM
- Руководство пользователя модуля EV-iMX6UL-NANO
- Документация на процессоры серии 6UL
- Документация на процессоры серии 6ULL
- iMX6UL Reference Manual
- iMX6ULL Reference Manual
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