MCom03-Linux: различия между версиями

Материал из WIKI ELVEES
м (Kirill переименовал страницу 1892ВА018 Drivers and Linux в MCom03-Linux без оставления перенаправления)
Нет описания правки
Строка 1: Строка 1:
'''Обратно на [[1892ВА018 (Скиф)]]'''
'''Обратно на [[1892ВА018 (Скиф)]]'''
== Добавить пакеты/модули ядра в AltLinux из Buildroot ==
В этом руководстве будет добавлен модуль ядра SCTP в AltLinux
=== Добавить модуль ядра в buildroot и собрать ===
В папке с распакованным архивом  mcom03-defconfig-src.tar.gz применить defconfig (<code>make mcom03_defconfig FRAGMENTS=rockpi</code>) и выполнить команду
  make linux-menuconfig
Далее по пути
 │     -> Networking support
 │ (1)   -> Networking options
Включить клавишей '''`M`:'''  <M> The SCTP Protocol  --->
M – в виде модуля ядра.
При необходимости можно воспользоваться поиском (клавиша `/`) и ввести '''sctp'''. Чтобы включить дополнительные параметры.
Далее '''Save''' и выйти из menuconfig '''`ESC ESC`'''
В терминале в директории mcom03-defconfig-src:
  make linux-rebuild && make
При необходимости протестировать полученный rootfs на плате (удостовериться, что модуль ядра загружен и работает)
=== Сборка AltLinux ===
Понадобится rootfs AltLinux и '''rootfs''' из собранного buildroot (с включенными SCTP)
В архиве<ref>[https://box.elvees.com/index.php/s/pgNBei2tfEtqcJb Архив create-alt-rootfs]</ref> скрипт, который копирует нужные папки и ядро из buildroot в Altlinux (см README)
Полученный образ Alt можно прошить на uSD и загрузиться. Также рекомендуем прошить sbl.bin на QSPI из текущей сборки buildroot.
Проверка загрузки модуля ядра на AltLinux
[elvees@altgo1 ~]$ uname -a
Linux altgo1 4 . 19.106 #2 SMP Wed Apr 5 16:24:31 MSK 2023 aarch64 GNU/Linux
[elvees@altgo1 ~]$ lsmod | grep sctp
sctp                  397312  4


== HOWTO: spidev в Buildroot для 1892ВА018 ==
== HOWTO: spidev в Buildroot для 1892ВА018 ==
Строка 108: Строка 151:
50000000        10
50000000        10
</pre>
</pre>
== Ссылки ==
<references />

Версия от 12:09, 5 июня 2023

Обратно на 1892ВА018 (Скиф)

Добавить пакеты/модули ядра в AltLinux из Buildroot

В этом руководстве будет добавлен модуль ядра SCTP в AltLinux

Добавить модуль ядра в buildroot и собрать

В папке с распакованным архивом  mcom03-defconfig-src.tar.gz применить defconfig (make mcom03_defconfig FRAGMENTS=rockpi) и выполнить команду

 make linux-menuconfig

Далее по пути

 │     -> Networking support

 │ (1)   -> Networking options

Включить клавишей `M`:  <M> The SCTP Protocol  --->

M – в виде модуля ядра.


При необходимости можно воспользоваться поиском (клавиша `/`) и ввести sctp. Чтобы включить дополнительные параметры.


Далее Save и выйти из menuconfig `ESC ESC`


В терминале в директории mcom03-defconfig-src:

 make linux-rebuild && make


При необходимости протестировать полученный rootfs на плате (удостовериться, что модуль ядра загружен и работает)

Сборка AltLinux

Понадобится rootfs AltLinux и rootfs из собранного buildroot (с включенными SCTP)


В архиве[1] скрипт, который копирует нужные папки и ядро из buildroot в Altlinux (см README)

Полученный образ Alt можно прошить на uSD и загрузиться. Также рекомендуем прошить sbl.bin на QSPI из текущей сборки buildroot.

Проверка загрузки модуля ядра на AltLinux

[elvees@altgo1 ~]$ uname -a
Linux altgo1 4 . 19.106 #2 SMP Wed Apr 5 16:24:31 MSK 2023 aarch64 GNU/Linux 
[elvees@altgo1 ~]$ lsmod | grep sctp 
sctp                  397312  4

HOWTO: spidev в Buildroot для 1892ВА018

На примере исследовательской платы MCom03-BuB.

В файл linux-mcom03/arch/arm64/boot/dts/elvees/mcom03-bub-r1.3.0.dts (dts-файл может поменяться) добавить:

&spi0 {
   status = "okay";
   num-cs = <1>;
   cs-gpios = <&gpio0c 6 GPIO_ACTIVE_LOW>;
   spidev: spidev@0{
       status = "okay";
       compatible = "spidev";
       reg = <0>;
       #address-cells = <1>;
       #size-cells = <0>;
       spi-max-frequency = <500000>;
   };
};

В сборке Buildroot включить пакет для Python, чтобы можно было запустить тестовый скрипт - python-spidev.

После этого в /dev/ должно появиться устройство вида /dev/spidev2.0

Для тестирования можно воспользоваться либо встроенной утилитой spidev-test (возможно ее нужно включить при конфигурации), либо самописной утилитой test_spi.py (код программы см. ниже).

Для проверки SPI необходимо соединить MISO и MOSI одним проводом (режим loopback).

test_spi.py

import argparse

import spidev


def freq_test(spi):
   send = bytearray(b"hello world")
   good_result = "hello world"

   kHz = 1000
   MHz = 1000000

   speeds = [
       10 * kHz,
       30 * kHz,
       100 * kHz,
       300 * kHz,
       1 * MHz,
       3 * MHz,
       10 * MHz,
       30 * MHz,
       40 * MHz,
       50 * MHz,
   ]

   print("{:<15} {:<30}".format("Speed, Hz", "error_cnt"))

   for speed in speeds:
       i = 0
       error_cnt = 0

       while i < 10:
           ret = spi.xfer(send, speed, 0, 8)
           ret = "".join(chr(e) for e in ret)
           if ret != good_result:
               error_cnt += 1
           i += 1
       print("{:<15} {:<30}".format(speed, error_cnt))

def main():
   parser = argparse.ArgumentParser(
       description="Script for SPI loopback test on different speeds. "
       "Required to connect MISO and MOSI by one wire. "
       )

   parser.add_argument(
       "-p",
       "--port",
       default="/dev/spidev2.0",
       help="Spidev device (/dev/spidevX.Y)",
   )

   args = parser.parse_args()

   spi_bus = int(args.port.replace("/dev/spidev", '')[0])
   spi_device = int(args.port.replace("/dev/spidev", '')[-1])

   spi = spidev.SpiDev()
   spi.open(spi_bus, spi_device)
   freq_test(spi)


if __name__ == '__main__':

   main()

Результаты работы скрипта примерно следующие:

  1. python spi_test.py -p /dev/spidev2.0

Speed, Hz       error_cnt

10000           0 30000           0 100000          0 300000          0 1000000         0 3000000         0 10000000        0 30000000        0 40000000        0 50000000        10

Ссылки