====== NMS-SDM-IMX6ULL v1 ds-ru ====== (SOM-IMX6ULL-E2)\\ {{ boards:nms-sdm-imx6ull:nms-sdm-imx6ull-v1.jpg?nolink&480 }} ====== Структурная процессора ====== {{ imx6_ull.png?nolink |}} \\ \\ ====== Структурная схема модуля ====== {{drawio>boards:nms-sdm-imx6ull:v1_ru:diagram1}} \\ \\ ====== Назначение выводов модуля ====== ^ Вывод ^ Обозначение ^ | 1 | VBUSIN | | 2 | VDDCOIN | | 3 | VBUSIN | | 4 | PORB | | 5 | VBUSIN | | 6 | VDD_SNVS_3V3 | | 7 | VBUSIN | | 8 | SYS_4V4 | | 9 | | | 10 | SYS_4V4 | | 11 | GND | | 12 | SYS_4V4 | | 13 | GND | | 14 | VCC_3V3 | | 15 | GND | | 16 | VCC_3V3 | | 17 | GND | | 18 | VCC_3V3 | | 19 | GND | | 20 | VBAT | | 21 | GND | | 22 | VBAT | | 23 | PMIC_ONREQ | | 24 | VBAT | | 25 | PMIC_STBY_REQ | | 26 | NVCC_CSI | | 27 | MX6_RESETB | | 28 | NVCC_SD1 | | 29 | NWDOG | | 30 | VLDO_1V8 | | 31 | ONOFF | | 32 | VLDO2_3V3 | | 33 | ONKEY | | 34 | VLDO3_3V3| | 35 | GND | | 36 | LED_CHARGE | | 37 | I2C1_SDA | | 38 | WDI | | 39 | I2C1_SCL | | 40 | NTC_THERMISTOR | | 41 | SNVS_TAMPER9 | | 42 | USB2_DP | | 43 | SNVS_TAMPER8 | | 44 | USB2_DN | | 45 | SNVS_TAMPER7 | | 46 | GND | | 47 | SNVS_TAMPER6 | | 48 | USB2_CHD_B | | 49 | SNVS_TAMPER5 | | 50 | USB2_VBUS | | 51 | SNVS_TAMPER4 | | 52 | GND | | 53 | SNVS_TAMPER3 | | 54 | USB1_DP | | 55 | SNVS_TAMPER2 | | 56 | USB1_DN | | 57 | SNVS_TAMPER1 | | 58 | GND | | 59 | SNVS_TAMPER0 | | 60 | USB1_CHD_B | | 61 | GND | | 62 | USB1_VBUS | | 63 | GPIO1_0 | | 64 | GND | | 65 | GPIO1_1 | | 66 | GND | | 67 | GPIO1_2 | | 68 | TRST | | 69 | GPIO1_3 | | 70 | TDO | | 71 | GPIO1_4 | | 72 | TDI | | 73 | GPIO1_5 | | 74 | TCK | | 75 | GPIO1_6 | | 76 | TMS | | 77 | GPIO1_7 | | 78 | MOD | | 79 | GPIO1_8 | | 80 | GND | | 81 | GPIO1_9 | | 82 | UART1_TXD | | 83 | GND | | 84 | UART1_RXD | | 85 | UART3_TXD | | 86 | UART1_CTS | | 87 | UART3_RXD | | 88 | UART1_RTS | | 89 | UART3_CTS | | 90 | GND | | 91 | UART3_RST | | 92 | UART2_TXD | | 93 | GND | | 94 | UART2_RXD | | 95 | UART4_TXD | | 96 | UART2_CTS | | 97 | UART4_RXD | | 98 | UART2_RTS | | 99 | GND | | 100 | GND | | 101 | UART5_TXD | | 102 | CLK1_N | | 103 | UART5_RXD | | 104 | CLK1_P | | 105 | GND | | 106 | NC | | 107 | NC | | 108 | NC | | 109 | LCD_RESET | | 110 | LCD_ENABLE | | 111 | LCD_CLK | | 112 | LCD_VSYNC | | 113 | LCD_HSYNC | | 114 | LCD_DATA_0 | | 115 | LCD_DATA_1 | | 116 | LCD_DATA_2 | | 117 | LCD_DATA_3 | | 118 | LCD_DATA_4 | | 119 | LCD_DATA_5 | | 120 | LCD_DATA_6 | | 121 | LCD_DATA_7 | | 122 | LCD_DATA_8 | | 123 | LCD_DATA_9 | | 124 | LCD_DATA_10 | | 125 | LCD_DATA_11 | | 126 | LCD_DATA_12 | | 127 | LCD_DATA_13 | | 128 | LCD_DATA_14 | | 129 | LCD_DATA_15 | | 130 | LCD_DATA_16 | | 131 | LCD_DATA_17 | | 132 | LCD_DATA_18 | | 133 | LCD_DATA_19 | | 134 | LCD_DATA_20 | | 135 | LCD_DATA_21 | | 136 | LCD_DATA_22 | | 137 | LCD_DATA_23 | | 138 | GND | | 139 | GND | | 140 | CPLD_IO_10 | | 141 | CPLD_TMS | | 142 | CPLD_IO_9 | | 143 | CPLD_TDI | | 144 | CPLD_IO_8 | | 145 | CPLD_TCK | | 146 | CPLD_IO_7 | | 147 | CPLD_TDO | | 148 | CPLD_IO_6 | | 149 | GND | | 150 | CPLD_IO_5 | | 151 | CSI_MCLK | | 152 | CPLD_IO_4 | | 153 | CSI_PIXCLK | | 154 | CPLD_IO_3 | | 155 | CSI_VSYNC | | 156 | CPLD_IO_2 | | 157 | CSI_HSYNC | | 158 | CPLD_IO_1 | | 159 | NC | | 160 | CPLD_IO_0 | | 161 | CSI_D7 | | 162 | NC | | 163 | CSI_D6 | | 164 | BOOT_0 | | 165 | CSI_D5 | | 166 | BOOT_1 | | 167 | CSI_D4 | | 168 | GND | | 169 | CSI_D3 | | 170 | SD_CLK | | 171 | CSI_D2 | | 172 | SD_CMD | | 173 | CSI_D1 | | 174 | SD_D3 | | 175 | CSI_D0 | | 176 | SD_D2 | | 177 | NC | | 178 | SD_D1 | | 179 | NC | | 180 | SD_D0 | | 181 | GND | | 182 | GND | | 183 | LED_SPD_1 | | 184 | LED_SPD_0 | | 185 | LED_LINK_1 | | 186 | LED_LINK_0 | | 187 | GND | | 188 | GND | | 189 | ETH_0_TX_P | | 190 | ETH_1_TX_P | | 191 | ETH_0_TX_N | | 192 | ETH_1_TX_N | | 193 | GND | | 194 | GND | | 195 | ETH_1_RX_P | | 196 | ETH_0_RX_P | | 197 | ETH_1_RX_N | | 198 | ETH_0_RX_N | | 199 | GND | | 200 | GND | ==== RMII1/RGII2 выводы процессора ==== ^ Вывод ^ Режим ^ | E17 | ENET1_RDATA1 | | F16 | ENET1_RDATA0 | | D15 | ENET1_RX_ER | | E16 | ENET1_RX_EN | | E14 | ENET1_TDATA1 | | E15 | ENET1_TDATA0 | | F14 | ENET1_REF_CLK | | F15 | ENET1_TX_EN | | C16 | ENET2_RDATA1 | | C17 | ENET2_RDATA0 | | D16 | ENET2_RX_ER | | B17 | ENET2_RX_EN | | A16 | ENET2_TDATA1 | | A15 | ENET2_TDATA1 | | D17 | ENET2_REF_CLK | | B15 | ENET2_TX_EN | | K17 | ENET1_MDIO | | L16 | ENET1_MDC | ==== I2C интерфейс ==== ^ Вывод ^ Режим ^ | G17 | I2C_SCL | | G16 | I2C_SDA | ==== NAND интерфейс ==== ^ Вывод ^ Режим ^ | E6 | NAND_DQS | | A3 | NAND_READY | | A4 | NAND CLE | | D5 | NAND_WP | | C8 | NAND_WE | | D8 | NAND_RE | | B4 | NAND_ALE | | A5 | NAND_D7 | | A6 | NAND_D6 | | B6 | NAND_D5 | | C6 | NAND_D4 | | D6 | NAND_D3 | | A7 | NAND_D2 | | B7 | NAND_D1 | | D7 | NAND_D0 | | B5 | NAND_CS1 | | C5 | NAND_CS0 | ====== Мультиплексирование UART и CAN ====== Вариант задействования 8-ми портов UART и 2 порта CAN ^ Контакт разъема ^ Вывод процессора ^ Обозначение ^ | 84 | K16 | UART1_RX | | 82 | K14 | UART1_TX | | 94 | J16 | UART2_RX | | 92 | J17 | UART2_TX | | 87 | H16 | UART3_RX | | 85 | H17 | UART3_TX | | 110 | B8 | UART4_RX | | 111 | A8 | UART4_TX | | 130 | G13 | UART5_RX | | 101 | F17 | UART5_TX | | 153 | E5 | UART6_RX | | 151 | F5 | UART6_TX | | 131 | B13 | UART7_RX | | 130 | C13 | UART7_TX | | 135 | B14 | UART8_RX | | 134 | C14 | UART8_TX | | 123 | A11 | CAN1_RX | | 122 | B11 | CAN1_TX | | 125 | D12 | CAN2_RX | | 124 | E12 | CAN2_TX | ====== Отладочная плата ====== {{drawio>boards:nms-sdm-imx6ull:v1_ru:diagram2}} ====== Cборка Linux для imx6ull ====== ===== Вступление ===== В качестве системы сборки для платы imx6_ull используется buildroot. Данная система сборки позваляет гибко собрать дистрибутив Embedded Linux для многих платформ. Официальный сайт системы сборки расположен по адресу https://buildroot.org/ . Для сборки проекта Вам понадобится ПК с дистрибутивом Linux (рекомендуем установить Ubuntu 18.04 или старше) или виртуальную машину с дистрибутивом Linux. Все дальнейшие действия по распоковки и сборки проекта будут производится на ПК с дистрибутивом Ubuntu 18.04. ===== Состав bsp ===== В домашней папке пользователя создайте папку **inmys_board**. Скачайте архив проекта (файл {{ boards:nms-sdm-imx6ull:v1_ru:imx6ull.tar.gz |}}) в папку inmys_board. Распакуйте архив imx6_ull.tar.gz в данную папку. После распаковки должна появится папка **imx6_ull**. Перейдите к папке imx6_ull (cd ~/inmys_board/imx6_ull/). Состав BSP: * Архив **buildroot-2019.05.1.tar.gz** (система сборки buildroot) * Архив **buildroot-external-inmys.tar.gz** с кофигурационными скриптами, настройками и патчами для сборки. * Скрипт **install_board.sh** для настройки системы сборки. ===== Сборка uboot, kernal и rootfs ===== Перейдите в папке **~/inmys_board/imx6_ull/** и выполните скрипт **~/inmys_board/imx6_ull/install_board.sh imx6ull_board**, скрипт настроит систему сборки. По завершению работы скрипта будут распакованы и созданы ряд папок buildroot-2019.05.1 - система сборки buildroot-external-inmys - BSP dl - папка куда будут скачиватся программы необходимые для сборки. imx6ull_board_output - папка с выходными файлами. В BSP используется: * Linux kernel 4.19.35 **git** https://source.codeaurora.org/external/imx/linux-imx branch **imx_4.19.35_1.1.0** * U-boot v2019.04 **git** https://source.codeaurora.org/external/imx/uboot-imx branch **imx_v2019.04_4.19.35_1.1.0** * Buildroot 2019.05.1 https://buildroot.org/downloads/buildroot-2019.05.1.tar.gz * Патчи ядра и его конфигурация **~/inmys_board/imx6_ull/buildroot-external-inmys/board/inmys/imx6ull/linux** * Патчи загрузчика и его конфигурация **~/inmys_board/imx6_ull/buildroot-external-inmys/board/inmys/imx6ull/uboot** * Папка overlay **~/inmys_board/imx6_ull/buildroot-external-inmys/board/inmys/imx6ull/rootfs_overlay** Перейдите в папку **~/inmys_board/imx6_ull/imx6ull_board_output** и выполните команду **make**. После этого начнется сборка системы. По завершению сборки в папке **~/inmys_board/imx6_ull/imx6ull_board_output/images** появятся файлы * imx6ull-inmys-som.dtb - файл конфигурации периферии для linux * rootfs.tar - архив с файловой системой * rootfs.ubi - архив с файловой системой ubifs * rootfs.ubifs - архив с файловой системой ubifs * u-boot-dtb.imx - загрузчик * uImage - ядро linux * sdcard_imx6ull_board.img - образ SD карты Пароль и логин для входа **root** **root**. ===== Загрузка с SD карты ===== Для загрузки som модуля с sd карты, необходимо записать загрузочный образ на sd карту. Подключите sd карту к компьютер. перейдите cd ~/inmys_board/imx6_ull/imx6ull_board_output Замените название SD устройства **sdX** на тот который у вас в системе. dd if=./images/sdcard_imx6ull_board.img of=/dev/sdX ===== Загрузка с NAND ===== Воспользуйтесь сознанной ранее SD картой и скопируйте на нее в папку /boot файлы u-boot-dtb.imx и rootfs.ubi Загрузитесь с SD карты и после загрузки системы выполните команды: # cd /boot # flash_erase /dev/mtd0 0 0 # mount -t debugfs none /sys/kernel/debug/ # kobs-ng init -x -w --chip_0_device_path=/dev/mtd0 ./u-boot-dtb.imx # flash_erase /dev/mtd1 0 0 # nandwrite -p /dev/mtd1 ./uImage # flash_erase /dev/mtd2 0 0 # nandwrite -p /dev/mtd2 ./imx6ull-inmys-som.dtb # flash_erase /dev/mtd4 0 0 # ubiformat /dev/mtd4 -f rootfs.ubi После копирования выключите питания модуля и переведите модуль для загрузки с NAND. ===== Проверка работы CAN ===== Проверка наличия доступных CAN интерфейсов # ifconfig can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 UP RUNNING NOARP MTU:16 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:26 can1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 UP RUNNING NOARP MTU:16 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:27 eth0 Link encap:Ethernet HWaddr 04:91:62:BC:83:17 inet addr:192.168.1.199 Bcast:0.0.0.0 Mask:255.255.255.0 inet6 addr: fe80::691:62ff:febc:8317/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2686 errors:0 dropped:0 overruns:0 frame:0 TX packets:27 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:177780 (173.6 KiB) TX bytes:1566 (1.5 KiB) eth1 Link encap:Ethernet HWaddr 04:91:62:BC:91:7E inet addr:192.168.0.199 Bcast:0.0.0.0 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Для прослушивания данных передаваемых по can можно воспользоваться консольной утилитой **candump** Пример для can0 # candump can0 can0 123 [8] 11 22 33 44 55 66 77 88 can0 123 [8] 11 22 33 44 55 66 77 88 can0 123 [8] 11 22 33 44 55 66 77 88 can0 123 [8] 11 22 33 44 55 66 77 88 can0 123 [8] 11 22 33 44 55 66 77 88 can0 123 [8] 11 22 33 44 55 66 77 88 Для проверки отладки передачи воспользуйтесь консольной программой **cansend** Пример для can0 # cansend can0 123#1122334455667788 Для временного изменения скорости работы can порта # ifconfig can0 down # ip link set can0 up type can bitrate 125000 Для установки скорости по умолчанию отредактируйте файл /etc/network/interfaces # vi /etc/network/interfaces Проверка двух CAN (необходимо соединить can0 и can1) # candump can0 & # cansend can1 123#1122334455667788 can0 123 [8] 11 22 33 44 55 66 77 88 # cansend can1 123#1122334455667788 can0 123 [8] 11 22 33 44 55 66 77 88 # cansend can1 123#1122334455667788 can0 123 [8] 11 22 33 44 55 66 77 88 # killall candump ===== Проверка работы UART ===== На плате доступны Последовательные порты: * ttymxc0 - консольный порт на USB * ttymxc1 - порт на USB * ttymxc2 - rs485 Х7_Е * ttymxc4 - ttl Х17 * ttymxc5 - rs232 Х11 * ttymxc6 - rs232 Х12 * ttymxc7 - ttl Х17 По умолчанию в сборке включена утилита **picocom** с помощью которой можно по передавать данные. picocom -b 115200 /dev/ttymxc1 ===== Настройки Ethernet ===== По умолчанию установлены статические IP адреса для обоих интерфейсов. Для изменения поведения(изменения IP адресов и под сетей или для выключения DHCP) необходимо отредактировать файл **/etc/network/interfaces**. auto lo iface lo inet loopback auto can0 iface can0 inet manual bitrate 125000 up /sbin/ip link set $IFACE down up /sbin/ifconfig $IFACE txqueuelen 10 up /sbin/ip link set $IFACE type can bitrate 125000 restart-ms 10 up /sbin/ip link set $IFACE up auto can1 iface can1 inet manual bitrate 125000 up /sbin/ip link set $IFACE down up /sbin/ifconfig $IFACE txqueuelen 10 up /sbin/ip link set $IFACE type can bitrate 125000 restart-ms 10 up /sbin/ip link set $IFACE up # Config static ip auto eth0 iface eth0 inet static address 192.168.1.199 netmask 255.255.255.0 # Configure eth0 with dhcp IP # auto eth0 # iface eth0 inet dhcp # Config static ip auto eth1 iface eth1 inet static address 192.168.0.199 netmask 255.255.255.0 # Configure eth0 with dhcp IP # auto eth1 # iface eth1 inet dhcp Пример получения сетевых настроек по dhcp на eth0 auto lo iface lo inet loopback auto can0 iface can0 inet manual bitrate 125000 up /sbin/ip link set $IFACE down up /sbin/ifconfig $IFACE txqueuelen 10 up /sbin/ip link set $IFACE type can bitrate 125000 restart-ms 10 up /sbin/ip link set $IFACE up auto can1 iface can1 inet manual bitrate 125000 up /sbin/ip link set $IFACE down up /sbin/ifconfig $IFACE txqueuelen 10 up /sbin/ip link set $IFACE type can bitrate 125000 restart-ms 10 up /sbin/ip link set $IFACE up # Config static ip #auto eth0 #iface eth0 inet static # address 192.168.1.199 # netmask 255.255.255.0 # Configure eth0 with dhcp IP auto eth0 iface eth0 inet dhcp # Config static ip auto eth1 iface eth1 inet static address 192.168.0.199 netmask 255.255.255.0 # Configure eth0 with dhcp IP # auto eth1 # iface eth1 inet dhcp