===== Методика прошивки и пуско-наладки модулей NMS-uQ7-BKLT совместно с мат. платой PicoITX_v2 ===== ==== 1. Прошить STM32 ==== Инструкция по прошивке STM32 находится по ссылке: https://github.com/inmys/WDOG_BFK/blob/main/docs/firmware.pdf Бинарник прошивки STM32 от 23.03.2022: https://github.com/inmys/WDOG_BFK/blob/main/bin_releases/202202023_WDOG_BFK.bin Инструкция по сборке бинарника STM32 из исходников находится по ссылке: https://github.com/inmys/WDOG_BFK/blob/main/docs/firmware.pdf Исходники прошивки STM32 находятся по ссылке: https://github.com/inmys/WDOG_BFK ==== 2. С помощью STM32 залить u-boot по протоколу X-modem ==== Для прошивки u-boot понадобится бинарник u-boot.bin, терминал с возможностью передачи файлов по протоколу xmodem (например minicom), кабель micro-usb, консольный кабель Cisco. 2.1 Установить модуль NMS_uQ7_BKLT в мат. плату PicoITX. Подключить кабель MicroUSB в разъем X17 на мат. плате, консольный кабель Cisco в разъем X8, убедиться в отсутствии джампера X19, подать питание 12Вольт через разъем X4 (цоколевка разъема приведена здесь: [[power_connector|Разъем питания PicoITX]]). 2.2 После подачи питания в операционной системе должен определиться COM-порт. В windows номер ком-порта можно увидеть в "Диспетчере устройств", в linux командой dmesg. 2.3 В течениие 5 секунд после подачи питания, подключиться к плате с помощью программы-терминала. Например: minicom -b 115200 -D /dev/ttyS23 На экране должно отобразиться загрузочное меню STM32: INMYS NMS-uQ7-BKLT HW ver.: 1.0 FW ver.: 2.8 CPU main flash #1 CPU boot flash #1 Boot attempt:4/4 Watchdog:OFF Autoboot:Off by key Flash 1: 1.8V 128Mb Flash 2: 1.8V 128Mb I/O Expander: OK CPU FW status:CONFIRMED Select menu item 1) Boot 2) Update flash 1 3) Update flash 2 4) Toggle main flash 5) Toggle boot flash 6) Toggle watchdog 7) Set FW status to: CONFIRMED 8) Set FW status to: UPDATED 9) Set FW status to: BAD 10) Update MCU Требуется остановить загрузку нажатием на Enter. Экран меню должен обновиться. Если загрузка началась, то при нажатии на Enter ничего не произойдет. В этом случае требуется ввести команду poweroff 2.4 Для загрузки u-boot в qspi NOR flash 16MB требуется выбрать пункт меню 2 нажатием на кнопку 2 клавиатуры, подтвердить начало загрузки нажатием на кнопку Y клавиатуры. Должны начать появляться символы CCC 2.5 Начать передачу файла u-boot.bin по протоволу xmodem. В minicom это делается последовательным нажатием комбинации кнопок: Ctrl+a, s Затем требуется выбрать в меню пункт ** xmodem **, после чего выбрать на файловой системе файл u-boot.bin Процесс загрузки может продолжаться около 20-30 секунд. 2.6 После успешной загрузки файла требуется отключить питание от платы и включить питание платы через 10 секунд. 2.7 Убедиться, что u-boot стартует через КОМ-порт, в который подключен консольный кабель Cisco В случае успешной загрузи u-boot на экране консоли будет примерно слудующий вывод: U-Boot 2021.01-ga6d0dbbb-dirty (Feb 22 2022 - 14:59:51 +0300) bfk3 Model: Baikal-T1 BFK3 evaluation board DRAM: 2048MB, ECC, 32-bit 128 MiB WDT: Not found! Loading Environment from SPIFlash... SF: Detected w25q128fw with page size 256 Bytes, erase size 64 KiB, total 16 MiB CPU frequency set to 1200MHz OK In: serial Out: serial Err: serial SF: Detected w25q128fw with page size 256 Bytes, erase size 64 KiB, total 16 MiB RomID: ef60180000000000000000000000000000000000 Bus dwc3@1F100000: Register 1000140 NbrPorts 1 Starting the controller USB XHCI 1.00 scanning bus dwc3@1F100000 for devices... 2 USB Device(s) found SATA link 0 timeout. SATA link 1 timeout. AHCI 0001.0300 32 slots 2 ports 6 Gbps 0x3 impl SATA mode flags: ncq stag pm led clo only pmp fbss pio slum part ccc apst Net: eth0: eth1@1F05E000, eth1: eth2@1F060000 Hit any key to stop autoboot: 0 Инструкция по сборке файла u-boot.bin находится здесь: [[boards:nms-uq7-bklt:v1_ru:сборка_линукс|Сборка образа Линукс для NOR Flash ]] ==== 3. Прошить NOR-flash маленьким пропатченым u-boot, kernel и rootfs из сборки SDK байкала ==== Подключить плату в сеть с DHCP через разъем ETH0. Через консольный разъем ciso подключиться терминалом (putty, picocom, minicom и пр) в режиме 8-n-1 115200. Включить плату. После старта u-boot остановить загрузку нажатием на Enter и ввести следующие команды. i2c dev 1 i2c probe #Корректный вывод: #Valid chip addresses:timeout in disabling I2C adapter # 52 53 68 6A setenv ipaddr 192.168.1.190 setenv serverip 192.168.1.51 tftp ${initrd_addr_n} baikal_kif/bfk3.rom sf probe 0 sf update ${initrd_addr_n} 0 ${file_size} reset Выключить и включить питание. Это обязательно! Должен загрузиться Linux (сборка Байкалэлектроникс) с логотипом белочки. Все дальнейшие команды выполняются в командной строке Linux. Инструкция по сборке файла bfk3.rom находится здесь: [[boards:nms-uq7-bklt:v1_ru:сборка_линукс|Сборка образа Линукс для NOR Flash ]] ==== 4. Провести проверку работоспособности модуля и всех его интерфейсов. ==== === 4.1 Проверка MAC-адресов === ifconfig | grep HWaddr MAC-адреса интерфейсов должны быть уникальны. Обычно они начинаются на 04:91:62 ** Внимание! MAC-адреса, начинающиеся на 4C являются ошибочными ** === 4.1 Проверка eth0 === Подключить ethernet в разъём eth0 (рядом с консолью) ping -c 5 192.168.1.51 Проверить светодиодную индикацию на разъеме eth0. Оранжевый светодиод должен светиться непрерывно, зеленый должен моргать в такт передаваемым пакетам (ping) === 4.2 Проверка eth1 === Отключить кабель от разъема eth0, и подключить к eth1. ** Для работы разъема eth1 мат. плата PicoITX должна быть соединина с модулем Q7 шлейфом FPC ** ifconfig eth0 down #дождаться получения адреса на интерфейсе eth1 под dhcp. процедура не должна занимать больше одной минуты ip='' ; while [ "x$ip" == "x" ] ; do ip=`ifconfig eth1 | grep 'inet addr' | awk '{print $2}' | awk -F':' '{print $2}'`; sleep 1; echo "Waiting for a IP eth1" ; done; ifconfig eth1 ; ping -c 5 192.168.1.51 Проверить светодиодную индикацию на разъеме eth1. Оранжевый светодиод должен светиться непрерывно, зеленый должен моргать в такт передаваемым пакетам (ping) === 4.3 Проверка M.2 SATA SSD === cat /proc/partitions | grep sda ; cat /sys/block/sda/device/model ; dd if=/dev/sda of=/dev/null bs=10M count=50 Должна отобразиться модель M2 диска. Например ** TS256GS8042-NPF ** должен быть диск sda скорость должна быть не меньше 400МБ/с === 4.3 Проверка SATA диска === cat /proc/partitions | grep sdb ; cat /sys/block/sdb/device/model ; dd if=/dev/sdb of=/dev/null bs=10M count=50 должен быть диск sdb Должна отобразиться модель внешнего SATA диска. Например ** OCZ-VERTEX4 ** скорость должна быть не меньше 380МБ/с === 4.4 Проверяем все USB (5 штук) === USB 2.0 flash должна детектироваться как /dev/sdc dd if=/dev/sdc of=/dev/null bs=10M count=10 dd if=/dev/sdd of=/dev/null bs=10M count=10 dd if=/dev/sde of=/dev/null bs=10M count=10 dd if=/dev/sdf of=/dev/null bs=10M count=10 dd if=/dev/sdg of=/dev/null bs=10M count=10 Скорость должна быть не меньше 10 MB/s === 4.5 Проверка RTC === echo "HW clock time1 (UTC):" && hwclock -r && sleep 1 && echo "HW clock time2 (UTC):" && hwclock -r && rdate 192.168.1.51 && echo "Synced system time (localtime):" && date && hwclock -w -u && echo "Synced HW clock time (UTC):" && hwclock -r && echo "Synced system time (localtime):" && date reboot === 4.6 Светодиод D2 на модуле Q7 должен моргать два раза в секунду === Светодиод D13 на PicoITX должен светиться непрерывно.