Методика прошивки и пуско-наладки модулей NMS-uQ7-BKLT совместно с мат. платой PicoITX_v2

1. Прошить STM32

Инструкция по прошивке STM32 находится по ссылке: https://github.com/inmys/WDOG_BFK/blob/main/docs/uboot.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 (цоколевка разъема приведена здесь: Разъем питания 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 находится здесь: Сборка образа Линукс для 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 находится здесь: Сборка образа Линукс для 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 должен светиться непрерывно.