Инструменты пользователя

Инструменты сайта


boards:nms-uq7-komdiv-mk:peripherial:start

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
boards:nms-uq7-komdiv-mk:peripherial:start [2026/07/28 11:38] – Илья Ковальчукboards:nms-uq7-komdiv-mk:peripherial:start [2026/08/06 09:28] (текущий) – [SATA] Илья Ковальчук
Строка 1: Строка 1:
 ====== Использование периферии Q7_KOMDIV_MK ======  ====== Использование периферии Q7_KOMDIV_MK ====== 
 +
 +На странице приведены примеры настройки и проверки периферийных интерфейсов модуля ''Q7_KOMDIV_MK''.
 +
 +  * CAN
 +  * UART;
 +  * I2C;
 +  * SPI;
 +  * SATA;
 +  * RTC.
 +
 +
 +**Скрипты для тестирования доступны в [[https://gitlab.inmys.online/srisa-public/k5500vk018-test-suite|репозитории test-suite]].**
 +
 +<code>
 +git clone https://gitlab.inmys.online/srisa-public/k5500vk018-test-suite.git
 +</code>
 +
 +===== ETH =====
 +ETH на краевом разъеме Q7 по стандарту работает на RJ45-розетке рядом с USB:
 +
 +{{ native-eth.jpg?480 }}
  
 ===== CAN ===== ===== CAN =====
Строка 5: Строка 26:
 Пример CAN loopback:   Пример CAN loopback:  
  
-===== Подключение =====+==== Подключение ==== 
 + 
 +Соединить CAN интерфейсы следующим образом: 
  
 <code> <code>
Строка 13: Строка 36:
 </code> </code>
  
-===== Настройка =====+{{komdiv_can_connection.jpeg?600}}
  
-<code bash>+==== Настройка ==== 
 + 
 +Перед изменением скорости интерфейсы необходимо выключить: 
 + 
 +<code>
 ip link set can0 down ip link set can0 down
 ip link set can0 type can bitrate 1000000 restart-ms 100 ip link set can0 type can bitrate 1000000 restart-ms 100
Строка 26: Строка 53:
 Скорость на обоих интерфейсах должна совпадать. Скорость на обоих интерфейсах должна совпадать.
  
-===== Приём =====+==== Приём ====
  
-<code bash>+Приём всех кадров: 
 + 
 +<code>
 candump can0 candump can0
 </code> </code>
  
-Только CAN ID ''123'':+Приём только кадров с идентификатором ''123'':
  
-<code bash>+<code>
 candump 'can0,123:7FF' candump 'can0,123:7FF'
 </code> </code>
  
-===== Отправка =====+==== Отправка ====
  
-<code bash>+Отправка кадра через ''can1'': 
 + 
 +<code>
 cansend can1 123#1122334455667788 cansend can1 123#1122334455667788
 </code> </code>
Строка 46: Строка 77:
 Где ''123'' — CAN ID, после ''#'' идут данные. Где ''123'' — CAN ID, после ''#'' идут данные.
  
-===== Проверка состояния =====+==== Остановка ====
  
-<code bash> +<code> 
-ip -details -statistics link show can0+ip link set can0 down 
 +ip link set can1 down
 </code> </code>
  
-Нормальное состояние:+==== Проверка состояния ====
  
 +<code> ip -details -statistics link show can0 </code>
 +
 +Нормальное состояние интерфейса:
 +
 +<code> state ERROR-ACTIVE bitrate 1000000 </code>
 +
 +В статистике отображаются:
 +
 +количество принятых пакетов — ''RX packets'';
 +
 +количество отправленных пакетов — ''TX packets'';
 +
 +ошибки приёма — ''RX errors'';
 +
 +ошибки передачи — ''TX errors''.
 +
 +===== UART =====
 +
 +==== Подключение ====
 +
 +Для loopback соедините:
 +
 +<code> TX --- RX </code>
 +
 +==== Настройка ====
 +
 +<code> stty -F /dev/ttyS1 115200 raw -echo </code>
 +
 +==== Приём ====
 +
 +<code> cat /dev/ttyS1 </code>
 +
 +==== Отправка ====
 +
 +В другом окне терминала:
 +
 +<code> printf 'UART test' > /dev/ttyS1 </code>
 +
 +При loopback отправленная строка должна появиться в окне приёма.
 +
 +===== I2C =====
 +I2C-шины по стандарту Q7 реализованы через 4х-канальный мультиплексор PCA9546APW.
 +
 +Описание i2c-шин с точки зрения Linux:
 <code> <code>
-state ERROR-ACTIVE+ls -la /sys/class/i2c-adapter* 
 + 
 +i2c-0 -> ../../devices/platform/1b400130.i2c/i2c-0 - SoC's I2C-Master  
 +i2c-1 -> ../../devices/platform/1b400130.i2c/i2c-0/i2c-1 - I2C_SYS. Шина на модуле, куда подключены PMIC(0x18), i2c eeprom, i2c-mux(0x74), rtc (0x68) 
 +i2c-2 -> ../../devices/platform/1b400130.i2c/i2c-0/i2c-2 - I2C0 по стандарту Q7 
 +i2c-3 -> ../../devices/platform/1b400130.i2c/i2c-0/i2c-3 - SMB_I2C по стандарту Q7 
 +i2c-4 -> ../../devices/platform/1b400130.i2c/i2c-0/i2c-4 - Not Connected 
 </code> </code>
  
-Смотрите счётчики ''RX'', ''TX'' и ошибок. 
  
-===== Остановка =====+Пример работы с VL53L0X, подключенном к I2C0 по Q7:  
  
-<code bash> +==== Просмотр шин ==== 
-ip link set can0 down + 
-ip link set can1 down+<code> 
 +i2cdetect -l 
 +ls /dev/i2c-*
 </code> </code>
  
 +==== Поиск устройств ====
  
-===== UART =====+Для шины ''i2c-2'':
  
-===== I2C =====+<code> 
 +i2cdetect -y 2 
 +</code> 
 + 
 +VL53L0X обычно доступен по адресу ''0x29''. 
 + 
 +==== Чтение регистра ==== 
 + 
 +<code> 
 +i2cget -y 2 0x29 0xC0 
 +</code> 
 + 
 +Где: 
 + 
 +* ''2'' — номер I²C-шины; 
 +* ''0x29'' — адрес устройства; 
 +* ''0xC0'' — адрес регистра. 
 + 
 +==== Запись регистра ==== 
 + 
 +<code> 
 +i2cset -y 2 0x29 0x00 0x01 
 +</code> 
 + 
 +==== Чтение нескольких байтов ==== 
 + 
 +<code> 
 +i2ctransfer -y 2 w1@0x29 0x14 r12 
 +</code> 
 + 
 +Команда указывает датчику начать чтение с регистра 0x14, после чего получает 12 последовательных байт данных. 
 + 
 + 
 +В качестве примера используется лазерный дальномер VL53L0X. 
 + 
 +==== Подключение VL53L0X ==== 
 + 
 +{{komdiv_i2c_connection.jpeg?600}} 
 + 
 +==== Чтение VL53L0X ==== 
 + 
 +<code> 
 +chmod +x i2c-test.sh 
 +./i2c-test.sh 2 20 
 +</code> 
 + 
 +Где: 
 + 
 +* ''2'' — номер I²C-шины; 
 +* ''20'' — количество измерений. 
 + 
 +Вывод скрипта: 
 + 
 +<code> 
 +Distance 1: 87 mm 
 +Distance 2: 65 mm 
 +Distance 3: 71 mm 
 +Distance 4: 68 mm 
 +Distance 5: 74 mm 
 +Distance 6: 65 mm 
 +Distance 7: 74 mm 
 +Distance 8: 104 mm 
 +Distance 9: 122 mm 
 +Distance 10: 169 mm 
 +Distance 11: 281 mm 
 +Distance 12: 364 mm 
 +Distance 13: 298 mm 
 +Distance 14: 185 mm 
 +Distance 15: 112 mm 
 +Distance 16: 89 mm 
 +Distance 17: 76 mm 
 +Distance 18: 69 mm 
 +Distance 19: 65 mm 
 +Distance 20: 70 mm 
 +</code> 
 + 
 +===== SPI ===== 
 + 
 +В качестве примера используется SPI Flash, подключённая к ''CS0''. Ей соответствует устройство ''/dev/spidev1.0''. 
 + 
 +При подключении к  ''CS1'' используется устройство ''/dev/spidev1.1''. 
 + 
 + 
 +==== Подключение ==== 
 + 
 +{{komdiv_spi_connection.jpeg?600}} 
 + 
 +==== Конфигурация ==== 
 + 
 +Для работы с устройствами SPI необходимо загрузить модуль ядра:  
 + 
 +<code> 
 +modprobe spidev 
 +</code> 
 + 
 +==== Определение SPI Flash ==== 
 + 
 +<code> 
 +flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=1000 
 +</code> 
 + 
 +Пример успешного результата: 
 + 
 +<code> 
 +flashrom v1.5.1 on Linux 6.1.135 (mips64) 
 +flashrom is free software, get the source code at https://flashrom.org 
 + 
 +Found Macronix flash chip "MX66L51235F/MX25L51245G" (65536 kB, SPI) on linux_spi. 
 +=== 
 +This flash part has status UNTESTED for operations: WP 
 +The test status of this chip may have been updated in the latest development 
 +version of flashrom. If you are running the latest development version, 
 +please email a report to flashrom@flashrom.org if any of the above operations 
 +work correctly for you with this flash chip. Please include the flashrom log 
 +file for all operations you tested (see the man page for details), and mention 
 +which mainboard or programmer you tested in the subject line. 
 +You can also try to follow the instructions here: 
 +https://www.flashrom.org/contrib_howtos/how_to_mark_chip_tested.html 
 +Thanks for your help! 
 +No operations were specified. 
 +</code>
  
 ===== SATA ===== ===== SATA =====
 +
 +В модуле 1x SATA, который мультиплицируется между SATA0 и SATA1. По умолчанию выбран SATA1 по стандарту Q7 (на отладочной плате m2-разъем).
 +
 +Выбор активного канала выполняется через GPIO с помощью скрипта ''gpio.sh''.
 +
 +Выбор канала 0:
 +
 +<code>
 +./gpio.sh sata_select 0
 +</code>
 +
 +Выбор канала 1:
 +
 +<code>
 +./gpio.sh sata_select 1
 +</code>
 +
 +После выбора канала проверить обнаружение накопителя можно командой:
 +
 +<code> cat /proc/partitions </code>
 +
 +Пример успешного обнаружения SATA-накопителя:
 +
 +<code>
 +major minor  #blocks  name
 +   1        0      16384 ram0
 +   1        1      16384 ram1
 +   1        2      16384 ram2
 +   1        3      16384 ram3
 +   1        4      16384 ram4
 +   1        5      16384 ram5
 +   1        6      16384 ram6
 +   1        7      16384 ram7
 +   1        8      16384 ram8
 +   1        9      16384 ram9
 +   1       10      16384 ram10
 +   1       11      16384 ram11
 +   1       12      16384 ram12
 +   1       13      16384 ram13
 +   1       14      16384 ram14
 +   1       15      16384 ram15
 +  31        0        640 mtdblock0
 +  31        1         64 mtdblock1
 +  31        2         64 mtdblock2
 +  31        3         64 mtdblock3
 + 179        0    7634944 mmcblk0
 + 179        1    1048576 mmcblk0p1
 + 179        2    1048576 mmcblk0p2
 + 179        3    1048576 mmcblk0p3
 + 179        8       4096 mmcblk0boot0
 + 179       16       4096 mmcblk0boot1
 +   8       16  125034840 sdb   # <------------------------/ 
 +   8       17     153600 sdb1  # <-----------------------/  Обнаруженный SATA-накопитель
 +   8       18  124881223 sdb2  # <----------------------/ 
 +</code>
 +
 +В данном примере накопитель определён как ''/dev/sdb'' и содержит два раздела.
 +
 +Имя устройства может отличаться в зависимости от порядка обнаружения накопителей.
 +
 +===== RTC =====
 +
 +В дереве устройств определена I2C RTC.  
 +
 +При первом запуске системное время может быть установлено на 01.01.1970, а RTC ещё не будет содержать корректного значения.
 +
 +Пример установки системного времени:
 +
 +<code>
 +date -s "2026-07-29 14:48:00"
 +</code>
 +
 +Запись системного времени в RTC:
 +
 +<code>
 +hwclock -w
 +</code>
 +
 +Просмотр текущего времени RTC:
 +
 +<code>
 +hwclock -r
 +</code>
 +
 +При наличии батарейки записанные дата и время сохраняются после отключения питания.
 +
 +
 +
boards/nms-uq7-komdiv-mk/peripherial/start.1785238712.txt.gz · Последнее изменение: — Илья Ковальчук