Sipeed Lichee RV

Одноплатные компьютеры на RISC-V процессоре сравнительно новое веяние. Поднебесная активно работает над снижением зависимости от западных информационных систем и технологий, именно поэтому новая открытая архитектура RISC-V одна из ключевых ставок Китая. Для продвижения в массы китайский чипмейкер Allwinner на базе ядра Alibaba/T-Head Xuantie C906 RISC-V разработал процессор Allwinner D1 и упрощенную модификацию Allwinner D1s. На сегодня разработано несколько одноплатников на RISC-V процессоре, и в первенство по массовости вырвалась компания Sipeed с модульным компьютером Система-на-Модуле Lichee RV с 512 Мб ОЗУ всего за $16.90, работающим на Linux. Разработчик может спроектировать несущую плату для данного модуля, добавив необходимые периферийные устройства и разъемы. В результате получится решение максимально подготовленное для себя. Данный модуль предназначен для создания интеллектуальных информационных систем, терминалов, роботов, и т.д. В первой части рассмотрим архитектуру процессора, возможности модуля, дистрибутивы, программное обеспечение. Во второй части детально рассмотрим порты и интерфейсы для программирования, напишем программы на Python и C#.

Архитектура RISC-V


Sipeed Lichee RV

Архитектура RISC-V предоставляет открытую и гибкую систему машинных инструкций, позволяющую создавать микропроцессоры для различных задач, не ограничивает сферы использования (включая военную промышленность), и при этом не требует отчислений (royalties). RISC-V позволяет создавать полностью открытые SoC и процессоры. В настоящее время на базе спецификаций RISC-V компании и сообщества под свободными лицензиями (BSD, MIT, Apache 2.0) разрабатывают несколько десятков вариантов микропроцессорных ядер, SoC. Архитектура RISC-V поддерживается GNU/Linux (присутствует начиная с Glibc 2.27, binutils 2.30, gcc 7 и ядра Linux 4.15), FreeBSD и OpenBSD, многие пакеты доступные для архитектуры x86 и ARM уже перекомпилировы под новую архитектуру RISC-V.

Разработкой связанной с RISC-V занимаются различные китайские компании. Среди них выделяется компания Alibaba/T-Head предоставив миру, в открытый доступ ядра C906 и C910. На базе этих ядер можно самостоятельно разработать свой процессор (SoC) и начать массовое производство. Открытый доступ к документации ядра процессора облегчает разработку программного обеспечения и портирование необходимых драйверов.

Схемы, описания аппаратных блоков на языке Verilog, симулятор и сопутствующая проектная документация опубликованы на GitHub под лицензией Apache 2.0. Отдельно опубликованы адаптированные для работы с чипами XuanTie версии компиляторов GCC и LLVM, библиотека Glibc, инструменты Binutils, загрузчик U-Boot, ядро ​​Linux, middleware с интерфейсом OpenSBI (RISC-машины-V Supervisor Binary Interface), платформа для создания встраиваемых систем на базе Linux Yocto Project, а также патчи для запуска Android. Ядра OpenE902, OpenE906, OpenC906 и OpenC910, доступны на GitHub под лицензией Apache 2.0.

Чип XuanTie C910 наиболее мощный из доступных на сегодняшний момент, выпускается по 12-нм техпроцессу в 16-ядерном варианте с тактовой частотой 2,5 ГГц. Производительность чипа в тесте Coremark достигает 7,1 Coremark/МГц, что превосходит процессоры ARM Cortex-A73. Всего Alibaba разработала 11 различных чипов RISC-V, из которых уже выпущено более 2,5 млрд экземпляров, и компания работает над созданием экосистемы для дальнейшего продвижения архитектуры RISC-V не только для IoT-устройств, но и для других типов вычислительных систем.

Процессор Allwinner D1 на RISC-V архитектуре


Ядро XuanTie C906 предназначено для высокоэнергоэффективных систем, для которых не требуется высокая производительность. Alibaba обещает дополнительную поддержку, включая предоставление SDK без каких либо финансовых отчислений.

Однако те, кто заинтересован в разработке SoC на базе данных ядер, должны помнить, что они были созданы до ратификации некоторых стандартов RISC-V, в частности, векторных расширений. В результате разработанные ядра технически не полностью соответствуют текущей спецификации RISC-V и разработчики ядра Linux уже высказывали опасения по поводу того, как C906, будет поддерживаться в основной ветке Linux ядра. Идет речь о соответствие ядра ядра XuanTie C906 спецификации векторных расширений (RISC-V Vector Extension) версии v0.7.1 от 2019 г., в то время как ратифицирован окончательный вариант версии 1.0 от 20 сентября 2021.

Sipeed Lichee RV
Возможности процессора Allwinner D1 на ядре XuanTie C906

Процессор Allwinner D1 основан на ядре Alibaba/T-Head XuanTie C906 64-bit RISC-V ISA, работает на частоте 1 ГГц, содержит 5-ступенчатый конвейер, кеш 64KB для инструкций и данных, контроллер прерываний и 128-bit шину AXI 4.0. Максимально поддерживаем объем ОЗУ составляет 2 Гб DDR3. Компания Allwinner добавила в процессор DSP HiFi4, ускоритель G2D для 2D графики и декодирования видео. Это позволяет выводить видео H.265/H.264 с качеством 1080p@60fps (или 4K@30fps), и кодировать JPEG/MJPEG (CSI/CVBS) до 1080p@60fps. Как и другие SoC RISC-V на сегодняшний день, в нем отсутствует 3D-графический процессор (GPU). Для видео вывода доступны интерфейсы: RGB LCD до 1080p@60fps, LVDS до 1080p@60fps, 4-lane MIPI DSI до 1080p@60fps, HDMI V1.4 до 4K@30fps, CVBS OUT с поддержкой NTSC и PAL. Техпроцесс изготовления составляет 22 нм.

Sipeed Lichee RV
Структурная схема процессора Allwinner D1

Модуль Sipeed Lichee RV


Форм-фактор платы Sipeed Lichee RV это модуль SoM (System-on-Module) с двойным разъемом M.2. На плате размещена память 512 МБ DDR3, порт USB-C OTG, слот для карт MicroSD и разъем для подключения SPI дисплея. На разъем M.2 выведены интерфейсы HDMI, MIPI-DSI, RGB/MCU display, RGMII, audio, SDIO, GPIO, и другие. Размер платы составляет 46,2 x 25 мм (1,8" x 1") питается от источника питания в 5V, потребление составляет 500 мА.

Sipeed LicheeRV Allwinner D1 RISC-V
Детальное рассмотрение Lichee RV

Sipeed LicheeRV Allwinner D1 RISC-V
Вид сверху и снизу платы Lichee RV

Спецификация Sipeed Lichee RV:
 Процессор: SoC – Allwinner D1 single-core XuanTie C906 64-bit RISC-V processor @ 1.0 GHz with HiFi4 DSP, G2D 2D graphics accelerators.
 Оперативная память: 512MB DDR3 memory @ 792 MHz.
 Пользовательская память: слот для MicroSD карт.
 Видео: опционально дисплей диагональю 1.14 дюйма на SPI интерфейсе.
 GPU: поддержка только ускорения 2D, пост-обработка Allwinner SmartColor 2.0, поддержка деинтерлейсинга, аппаратный ускоритель G2D.
 USB: порт USB Type-C OTG.
 Отладка(Debugging): 4-pin UART разъем для Serial Console, USB ADB debugging.
 Разное: индикатор подачи питания, FEL кнопка.
 GPIO и программируемые интерфейсы: разъем 2x M.2 B-key edge для контактов ввода/вывода интерфейсов: HDMI, MIPI DSI, RGB, Ethernet, Audio, SDIO, GPIO и т.д.
 Питание: 5V/0.5A через порт USB-C.
 Размер: 43.2 x 25 мм.

Возле разъема USB-C располагается интерфейс UART предназначенный для отладки запуска операционной системы, по умолчанию контакты не припаяны.

Продается по цене $16.90, что существенно дешевле аналогичной платы Nezha SBC. Доступно два варианта платы, только модуль Lichee RV D1 (вариант licheeRV D1) и с 1.14 дюймовым дисплеем на SPI интерфейсе (вариант licheeRV D1 Suit).
Sipeed LicheeRV Suit Allwinner D1 RISC-V
Sipeed Lichee RV с дисплеем на SPI интерфейсе aka «Sipeed LicheeRV Suit»

Дополнительный дисплей 1.14" 135×240 SPI LCD работает на контроллере Sitronix ST7789V (Datasheets). Драйвер включен в основную ветку ядра Linux, раздел FBTFT для использования RGB порта. Так же существует версия драйвера TinyDRM.

Терминал Lichee RV 86 Panel на базе Lichee RV


Sipeed Lichee RV
Lichee RV 86 Panel

Для разработчиков информационных систем компания Sipeed разработала Starter kit терминал Lichee RV 86 Panel предназначенный для систем управления, например для умного дома. Терминал оборудован 4-дюймовым IPS Touch LCD экраном, двумя MEMS микрофонами и небольшим динамиком, Ethernet RJ45 разъемом, 2.4G Wi-Fi + BT модулем, 2x8 pin GPIO 2.54 мм. Корпус сделан из SLA пластика на 3D-принтере. Поддерживается WAFT (WebAssembly Framework для вещей).

Sipeed Lichee RV

Основные элементы и разъемы несущей платы для Lichee RV 86 Panel

Видео о Lichee RV 86 Panel:


Несущая плата Lichee RV Dock для Sipeed Lichee RV


Форм-фактор платы Lichee RV подразумевает подключение к несущей плате с разводкой периферийных устройств и линий электропитания. В конце прошлого года Sipeed выпустила несущую Dock-плату с разводкой контактов GPIO шагом 2.54 мм, разъемом HDMI и USB, опционально устанавливается модуль Wi-Fi.

При небольших размерах 65 x 40 мм (2.56″ x 1.57″) несущая плата Lichee RV Dock включает в себя модуль Realtek RTL8723DS беспроводной связи Wi-Fi 4 (802.11b/g/n) и Bluetooth 4.2, порт HDMI с поддержкой вывода 4K@30fps, порт USB Type-A, 40-контактный разъем GPIO частично совместимый с аналогичным разъемом на Raspberry Pi 3, и различные разъемы включая возможность подключения динамиков. Присутствует RGB светодиод и кнопка сброса (reset).

Спецификация платы Lichee RV Dock:
Система на модуле (System on Module или SOM): модуль Lichee RV на базе RISC-V процессора Allwinner D1@1 GHz, 512MB DDR3.
Пользовательская память: опционально SPI память.
 Видео: HDMI порт с поддержкой видео до 4K@30fps, опционально RGB интерфейс с поддержкой видео до  720p@30fps через модуль «Display Shell», опционально MIPI DSI интерфейс с поддержкой видео до  1080p@60fps через модуль «Display Shell».
 Связь:  опционально беспроводной модуль Realtek RTL8723DS с поддержкой Wi-Fi 4 (802.11b/g/n) и Bluetooth 4.2. На плате размещена встроенная SMT антенна и разъем IPEX для подключения внешней антенны.
 Звук: 3 Вт усилитель вывода на динамики, 1x аналоговый электретный микрофон, поддержка микрофонного массива Mic Array R6 (включает шесть микрофонов) через плату расширения, подключается на разъем 30P FPC.
 USB: порт USB Type-A, дополнительно еще один порт USB-C OTG на самом модуле Lichee RV.
 Разное: светодиод RGB на микросхеме WS2812, кнопка сброса (reset key), пользовательская кнопка (user key, ADC).
 Expansions Header: разъем 40-pins с шагом 2,54 мм частично совместимый с Raspberry Pi включая GPIOs, I2C/TWI, SPI, UART, PWM.
 Размер: 65 x 40 мм.

После установки основного модуля Lichee RV в Lichee RV Dock, плата очень походит на Raspberry Pi Zero.

Lichee RV Dock
Sipeed Lichee RV Dock с подключенной платой Lichee RV

Lichee RV Dock
Sipeed Lichee RV Dock без платы Lichee RV

Lichee RV Dock
Размещение основных модулей и разъемов на плате

Lichee RV Dock RTL8723DS
Модуль беспроводной связи Realtek RTL8723DS

Sipeed Lichee RV
Sipeed Lichee RV Dock, вид снизу

В официальном магазине Sipeed  доступно несколько вариантов приобретения платы. Можно купить плату Dock вместе с основным модулем Lichee RV и без него. Если желаете выбрать другой Wi-Fi модуль, то доступен вариант платы Dock без напаянного модуля Realtek RTL8723DS. Доставка в РФ осуществляется службой Hongkong Post. Для надежности продавец упаковывает товар в твердую картонную коробку. Для более простой работы рекомендуется приобретать Dock с модулем Wi-Fi в связи с возможностью сразу из коробки подключить плату к сети Интернет для установки и обновления ПО.

Видео о Sipeed Lichee RV Dock:


Распиновка


Разъем GPIO на 40-pins с шагом 2,54 мм частично совместим с аналогичным разъемом Raspberry Pi, так же присутствую линии питания на 3.3V и 5V, но некоторые выводы GND не соответствуют выводам на Raspberry Pi.

Выведены интерфейсы: 1x TWI, 1x SPI, 6x PWM, 4x UART, MIPI DSI, RGB, LVDS.

Для отладки используется интерфейс UART0, контакты PB8 — UART0_TX и PB9 — UART0_RX.

Lichee RV Dock pinout diagram
Распиновка Lichee RV Dock

Дополнительные модули


На плате Lichee RV Dock специально выведен разъем 30P FPC для подключения массива микрофонов Mic Array R6. Данный модуль предназначен для создания интеллектуальных голосовых систем.
Lichee RV Dock
Mic Array R6

Плата Display Shell подключается к Lichee RV Dock на 40-pins разъем GPIO. Предоставляет разводку FPC разъемов для подключения LCD панелей по RGB и MIPI DSI включая сенсорные. На субъективный взгляд бесполезная вещь т.к. разводку под конкретную LCD панель придется делать самостоятельно.
Lichee RV Dock
Плата Display Shell для Lichee RV Dock

Операционные системы


Из операционных систем поддерживаются:
  • Tina Linux на базе OpenWrt;
  • Debian Desktop;
  • Linux с поддержкой среды Alibaba WAFT (WAFT — это Framework для AIOT, созданный компанией Alibaba на основе WebAssembly и собственного механизма рендеринга).

Часть образов опубликовано на сайте разработчика Sipeed /LICHEE/D1/Lichee_RV/SDK/image, другая на Mega.nz.

Все дальнейшие работы выполнялись на образе 20211230_LicheeRV_debian_d1_hdmi_8723ds.7z (1,07 ГБ). Данный образ построен на Debian и предназначен для использования вместе с Lichee RV Dock, поддерживается вывод видео по HDMI и Wi-Fi чип 8723ds.

Для загрузки прошивки на microSD карту (минимальный размер 16 Гб) необходимо использовать специализированную программу PhoenixCard, интерфейс который выполнен на китайском языке. Если в вашей версии Windows не добавлен китайский язык, то скорее всего кнопки и метки будут без надписей. Но на самом деле это не проблема, все предельно просто, вот документация на китайском языке.

Sipeed Lichee RV
Программа записи прошивки PhoenixCard

Первое, выбираем распакованный образ в формате *.img. Второе, выбираем второй пункт меню. Третье, нажимаем на первую кнопку из трех доступных и ждем 15 минут в не зависимости от размера исходного образа.

Подключение по UART


Если для взаимодействия с системой у вас нет возможности подключить экран по HDMI интерфейсу, то используя простой USB-TTL UART конвертер можно решить эту задачу. Для этого необходимо подключить контакты RX, TX, GND конвертера к соответствующим контактам Dock платы. Для примера, подключим конвертер на базе чипа CH340G.

Sipeed Lichee RV
Схема подключения USB-TTL UART конвертера

Для подключения удобно использовать терминал MobaXterm. Выберем появившийся COM порт в операционной системе, выставим скорость 115200 bps, и в терминале появится загрузочный экран:

Sipeed Lichee RV
Загрузочный экран Lichee RV

Debian. Настройка Wi-Fi и оборудование


После подачи питания по умолчанию загрузится графическая оболочка LXDE. Для авторизации необходимо указать: логин — sipeed или root, пароль — licheepi. Для удаленного доступа по SSH и UART входите в систему под именем sipeed. Выполним команды uname -a и lsb_release -a.

Результат выполнения:

root@sipeed:~# uname -a
Linux sipeed 5.4.61 #217 PREEMPT Thu Dec 30 06:50:31 UTC 2021 riscv64 GNU/Linux
root@sipeed:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

Образ построен на Debian 11 (bullseye), ядро Linux 5.4.61.

Sipeed Lichee RV
Запуск утилиты neofetch

Первым делом подключимся к сети Интернет, для этого включим Wi-Fi сеть, кнопка «Пуск» > Preferences > Connman Settings. Включаем модуль Wi-Fi и подключаемся к беспроводной сети.

Sipeed Lichee RV
Вызов менеджера подключения Wi-Fi в Debian

Выберем беспроводную сеть Wi-Fi и подключимся к ней.

Sipeed Lichee RV
Подключение к Wi-Fi сети

Откроем свойство подключения сети и включим автоподключение при запуске системы
Sipeed Lichee RV
Включение автоподключения к сети Wi-Fi

Оборудование


USB устройства клавиатура, мышь, хабы USB 2.0 и 3.0 поддерживаются без проблем. Вывод списка устройств утилитой inxi:

root@sipeed:~# inxi -Fc0
System:
  Host: sipeed Kernel: 5.4.61 riscv64 bits: 64 Console: pty pts/3
    Distro: Debian GNU/Linux 11 (bullseye)
Machine:
  Type: RISCV System: sun20iw1p1 details: N/A
CPU:
  Info: single core model: N/A variant: riscv bits: 64 type: UP
  Speed: N/A min/max: N/A core: No per core speed data found.
Graphics:
  Device-1: sunxi-disp driver: disp v: N/A
  Device-2: sunxi-hdmi driver: allwinner,sunxi_hdmi v: N/A
  Display: server: Moba/X 1.20.11 driver: loaded: fbdev
    resolution: 1920x1080
  OpenGL: renderer: llvmpipe (LLVM 11.0.1 128 bits) v: 4.5 Mesa 20.3.5
Audio:
  Device-1: simple-audio-card driver: sunxi_audio_card
  Device-2: sunxi-daudio driver: sunxi_daudio
  Device-3: simple-audio-card driver: sunxi_audio_card
  Device-4: sunxi-hdmiaudio driver: sunxi_hdmiaudio
  Device-5: sunxi-hdmi driver: allwinner,sunxi_hdmi
  Sound Server-1: ALSA v: k5.4.61 running: yes
  Sound Server-2: PulseAudio v: 14.2 running: yes
Network:
  Message: No RISCV data found for this feature.
  IF-ID-1: sit0 state: down mac: 00:00:00:00
  IF-ID-2: wlan0 state: up mac: xx:xx:xx:xx:xx:xx
  IF-ID-3: wlan1 state: down mac: xx:xx:xx:xx:xx:xx
Drives:
  Local Storage: total: 29.72 GiB used: 3.05 GiB (10.3%)
  ID-1: /dev/mmcblk0 vendor: SanDisk model: SD32G size: 29.72 GiB
Partition:
  ID-1: / size: 7.75 GiB used: 3.05 GiB (39.4%) fs: ext4 dev: /dev/mmcblk0p7
Swap:
  Alert: No swap data was found.
Sensors:
  Message: No sensor data found. Is lm-sensors configured?
Info:
  Processes: 96 Uptime: 1h 10m Memory: 491.8 MiB used: 238.3 MiB (48.5%)
  Shell: Bash inxi: 3.3.12

Дополнительный дисплей 1.14" 135×240 SPI LCD


Небольшой дисплей используется в образе licheerv_d1_1.14lcd_ub2004.tgz. Вначале его не удалось запустить из-за допущенной ошибки Sipeed в инструкции к записи образа на карту памяти. После общения с Sipeed, удалось решить проблему и запустить дисплей, классно выглядит и прекрасно работает. Как и обещал публикую результат работы:

Sipeed Lichee RV
Sipeed Lichee RV
Lichee RV SPI LCD

Видео работа дисплея Lichee RV 86 SPI LCD:

Sipeed Lichee RV
Две платы с RISC-V процессором, Lichee RV и MCU ESP32-C3-32S

Работа с беспроводной сетью


Сеть Wi-Fi полноценно не работает. При вызове команды iwconfig сообщается, что интерфейсы wlan0 и wlan1 не поддерживают Wi-Fi.

Результат выполнения команды:

root@sipeed:~# sudo iwconfig
wlan0     no wireless extensions.
wlan1     no wireless extensions.
lo        no wireless extensions.
sit0      no wireless extensions.

Подключение к Wi-Fi с помощью wpa_supplicant не увенчалось успехом, хотя на странице Sipeed LicheeRV указано, что это должно работать. Bluetooth на данный момент не поддерживается.

Пара слов об утилиты nmtui для подключения к Wi-Fi сети

Для подключения к Wi-Fi сети из консоли, не используя графическую оболочку, используется удобная утилита nmtui (пакет network-manager) с возможностью подключения к Wi-Fi сети в интерактивном режиме, без ручной правки конфигурационных файлов. Так это прекрасно работает в Armbian. Но в Lichee RV после перезагрузки системы, Debian автоматически не подключается к настроенной Wi-Fi сети через утилиту nmtui, поэтому загрузку LXDE придется оставить.

RGB светодиод


RGB светодиод на микросхеме WS2812 включен в конфигурацию, управляется с помощью виртуальной файловой системы Sysfs. По пути /sys/class/leds располагаются три устройства: sunxi_led0b, sunxi_led0g, sunxi_led0r. Задавая свойство brightness от 0 до 255 каждого цвета RGB можно задать итоговый цвет. Включим фиолетовый цвет, по модели RGB, для этого необходимо задать свойства (128, 0, 255). Выполним команды:

$ echo 128 > /sys/class/leds/sunxi_led0r/brightness
$ echo 0 > /sys/class/leds/sunxi_led0g/brightness
$ echo 255 > /sys/class/leds/sunxi_led0b/brightness

Sipeed Lichee RV
Включение RGB светодиода на Sipeed Lichee RV Dock

GPIO, I2C, SPI


Для управления контактами GPIO используется библиотека Libgpiod. В отличие от Armbian, в репозитории размещен пакет последней версии (версия 1.6), поэтому установим данную библиотеку командой:

$ sudo apt-get update
$ sudo apt-get install -y libgpiod-dev gpiod   

После этого выполним команду gpiodetect для вывода списка всех чипов GPIO, метки и количество линий

Результат выполнения:

root@sipeed:~# gpiodetect
gpiochip0 [2000000.pinctrl] (224 lines)

Результат выполнения команды gpioinfo
root@sipeed:~# gpioinfo
gpiochip0 - 224 lines:
        line   0:      unnamed       unused   input  active-high
        ...
        line  31:      unnamed       unused   input  active-high
        line  32:      unnamed       kernel   input  active-high [used]
        line  33:      unnamed       kernel   input  active-high [used]
        line  34:      unnamed       unused   input  active-high
        ...
        line  39:      unnamed       unused   input  active-high
        line  40:      unnamed       kernel   input  active-high [used]
        line  41:      unnamed       kernel   input  active-high [used]
        line  42:      unnamed       kernel   input  active-high [used]
        line  43:      unnamed       kernel   input  active-high [used]
        line  44:      unnamed       unused   input  active-high
        ...
        line  63:      unnamed       unused   input  active-high
        line  64:      unnamed       kernel   input  active-high [used]
        line  65:      unnamed       unused   input  active-high
        ...
        line 139:      unnamed       unused   input  active-high
        line 140:      unnamed       unused  output  active-high
        line 141:      unnamed       unused   input  active-high
        line 142:      unnamed       kernel   input  active-high [used]
        line 143:      unnamed       unused  output  active-high
        line 144:      unnamed       unused  output  active-high
        line 145:      unnamed       kernel   input  active-high [used]
        line 146:      unnamed       unused   input  active-high
        ...
        line 159:      unnamed       unused   input  active-high
        line 160:      unnamed       kernel   input  active-high [used]
        line 161:      unnamed       kernel   input  active-high [used]
        line 162:      unnamed       kernel   input  active-high [used]
        line 163:      unnamed       kernel   input  active-high [used]
        line 164:      unnamed       kernel   input  active-high [used]
        line 165:      unnamed       kernel   input  active-high [used]
        line 166:      unnamed         "cd"   input  active-high [used]
        line 167:      unnamed       unused   input  active-high
        ...
        line 191:      unnamed       unused   input  active-high
        line 192:      unnamed       kernel   input  active-high [used]
        line 193:      unnamed       kernel   input  active-high [used]
        line 194:      unnamed       kernel   input  active-high [used]
        line 195:      unnamed       kernel   input  active-high [used]
        line 196:      unnamed       kernel   input  active-high [used]
        line 197:      unnamed       kernel   input  active-high [used]
        line 198:      unnamed       kernel   input  active-high [used]
        line 199:      unnamed       kernel   input  active-high [used]
        line 200:      unnamed       kernel   input  active-high [used]
        line 201:      unnamed       kernel   input  active-high [used]
        line 202:      unnamed "wlan_hostwake" input active-high [used]
        line 203:      unnamed       unused   input  active-high
        line 204:      unnamed "wlan_regon"  output  active-high [used]
        line 205:      unnamed       unused  output  active-high
        line 206:      unnamed "fts_irq_gpio" input active-high [used]
        line 207:      unnamed "fts_reset_gpio" output active-high [used]
        line 208:      unnamed       unused   input  active-high
        line 209:      unnamed       unused   input  active-high
        line 210:      unnamed     "bt_rst"  output  active-high [used]
        line 211:      unnamed       unused   input  active-high
        ...
        line 223:      unnamed       unused   input  active-high


Результат выполнения команды: cat /sys/kernel/debug/gpio
root@sipeed:~# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-223, parent: platform/2000000.pinctrl, 2000000.pinctrl:
 gpio-166 (                    |cd                  ) in  hi IRQ
 gpio-202 (                    |wlan_hostwake       ) in  hi
 gpio-204 (                    |wlan_regon          ) out hi
 gpio-206 (                    |fts_irq_gpio        ) in  hi IRQ
 gpio-207 (                    |fts_reset_gpio      ) out hi
 gpio-210 (                    |bt_rst              ) out lo


В продолжение поста займемся программированием и работой с аппаратными интерфейсами, но для этого потребуется сформировать образ операционной системы с помощью SDK на последней версии ядра Linux.

BSP SDK


Информации об BSP SDK немного, предлагается загрузить архив достаточно большого размера (9.66 Гб) для формирования образа, дополнительно доступен на Docker Hub zepan/d1compile. Как работать с SDK сказано ссылка1, ссылка2, ссылка3.

От разработчика процессора Allwinner доступна регистрация (по e-mail, китайский номер мобильного телефона не требуется) на сайте open.allwinnertech.com в качестве разработчика. Заполняем форму регистрации и получаем доступ к SDK.

Sipeed Lichee RV
Allwinner SDK Page

На странице whycan.com/t_6440.html собрана документация об аппаратных интерфейсах на китайском языке, в формате PDF.

Использование RISC-V процессоров в обучение


Одноплатный компьютер Sipeed Nezha 64bit на процессоре XuanTie C906 RISC-V используется для обучения в информационных дисциплинах Норвежским университетом естественных и технических наук (NTNU).

Sipeed Lichee RV
Одноплатный компьютер Sipeed Nezha Allwinner D1

Норвежский университет естественных и технических наук является университетом мирового класса, подготавливает высококлассных специалистов с сильными техническими и академическими знаниями в области нефтяных и морских технологий, физиологии и медицины, химической инженерии, электротехники и электроники, производства и инженерии качества. Морская инженерия университета занимает второе место в мире. В 2021 году NTNU занял 101–150 место в мировом рейтинге университетов мира. Пять выпускников NTNU получили Нобелевские премии. Для сравнения МГУ имени М.В. Ломоносова занимает 97 место, второе место по России Санкт-Петербургский государственный университет — 301-400 место.

Профессор Michael Engel подробно рассказывает как работают операционные системы на примере запуска (портирования) ОС xv6 MIT под архитектуру RISC-V, а именно запуск на одноплатнике Sipeed Nezha.

Sipeed Lichee RV
Sipeed Nezha в программе курса

ОС xv6 — это операционная система предназначенная для использования в обучение студентов, разработана Массачусетским технологическим институтом (MIT) для курса «Инженерия операционных систем» (код 6.828).

В отличие от систем Linux или BSD, ОС xv6 очень проста и может быть изучена всего за один семестр. Весь программный код составляет немного более 8000 строк, но он по-прежнему включает важные концепции и организационные структуры Unix.

Благодаря высокой производительности и широкому спектру применения одноплатного компьютера Sipeed Nezha, удалось получить широкое признание в информационной отрасли, не только достигнув цели использование для разработки в различных областях, но и сделав первый шаг к тому, чтобы китайские процессоры вышли в лидерство на мировой рынок.

MangoPi MQ-Pro


Еще один интересный проект, на таком же процессоре Allwinner D1 RISC-V, от стартапа MangoPi (на момент публикации сайт не работает), одноплатный компьютер MangoPi MQ-Pro. В отличие от Lichee RV, на плате размещен 40 Pins разъем GPIO, который полностью совместимый с аналогичным разъемом на  Raspberry Pi 3. Форм фактор платы выполнен в стиле Raspberry Pi Zero, что более удобнее для DIY проектов, чем исполнение в виде модуля (SoM). Отдельно выведен разъем MIPI DSI для подключения  дисплеев с сенсорным экраном. Если вам интересно поработать с RISC-V процессором в более комфортных условиях, то лучше дождаться выпуска MangoPi MQ-Pro.
Sipeed Lichee RV
MangoPi MQ-Pro

Ориентировочная стоимость около $20 без учета доставки. Массовое производство планируется запустить 15-20 февраля, как раз после празднования Китайского Нового года. Скорее всего, где-то в марте появятся в магазинах.

«Допиливание» системы


Расширение раздела rootfs

Китайцы очень шустро делают новые платы, но с поддержкой программного обеспечения возникают некоторые сложности. Не смотря на указанные требования в размере 16 Гб для microSD, фактический размер раздела rootfs (образ  с Debian) составит 4 Гб. В отличие от Armbian, при запуске системы, раздел с rootfs не расширяется автоматически до максимального размера карты памяти. Поэтому для карты microSD объемом 32 Гб необходимо расширить раздел с rootfs.

Расширение раздела с  rootfs до максимального размера карты microSD
Расширение раздела выполняется «на лету» в загруженной системе, выполним следующие шаги:

1 Шаг. Отобразим текущий список точек монтирования, командой df -h:

В первой строке видим корень файловой системы размером всего 4 Гб.

Sipeed Lichee RV

2 Шаг. Выведем список разделов на microSD карте, командой fdisk -l

Sipeed Lichee RV

Подключена карта памяти объемом 30 Гб. Необходимо раздел /dev/mmcblk0p8 удалить, а раздел /dev/mmcblk0p7 расширить до максимального размера.

3 Шаг. Работаем с разделами утилитой parted, выполним команду parted /dev/mmcblk0, затем введем команду вывода списка всех разделов p:

Sipeed Lichee RV

В первую очередь удалим раздел под номером 8, затем раздел под номером 7 (rootfs) расширим до максимального размера.

4 Шаг. Удаляем раздел под номером 8, команда rm 8
(parted) rm 8

5 Шаг. Расширяем раздел под номером 7, команда resizepart 7. Указываем точку окончания раздела на 30 Гб.
(parted) resizepart 7
End? [8642MB]? 30000

6 Шаг. Выходим из программы parted, командой quit
(parted) quit

7 Шаг. Расширяем раздел /dev/mmcblk0p7 утилитой resize2fs, выполним команду
$ sudo resize2fs /dev/mmcblk0p7

Ход выполнения:
root@sipeed:~# resize2fs /dev/mmcblk0p7
resize2fs 1.46.2 (28-Feb-2021)
Filesystem at /dev/mmcblk0p7 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mmcblk0p7 is now 7311480 (4k) blocks long.

8 Шаг. Перезапускам систему командой, reboot now

9 Шаг. Повторно выводим информацию о точках монтирования командой, df -h

Sipeed Lichee RV

Как видим теперь раздел rootfs составляет 28 Гб.


Обновление ключей репозитория пакетов

При обновление пакетов возникла ошибка верификации корневых ключей публичного репозитория. Выполнение команды apt-get update приводит к следующей  ошибке:

root@sipeed:/etc/apt# apt-get update
Get:1 http://ftp.ports.debian.org/debian-ports sid InRelease [65.1 kB]
Err:1 http://ftp.ports.debian.org/debian-ports sid InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E852514F5DF312F6
Reading package lists... Done
W: GPG error: http://ftp.ports.debian.org/debian-ports sid InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E852514F5DF312F6
E: The repository 'http://ftp.ports.debian.org/debian-ports sid InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Проблема заключается в наличие просроченных ключей, необходимо загрузить в ручном режиме новые ключи. Для этого со страницы debian-ports-archive-keyring  загружаем DEB-пакет debian-ports-archive-keyring_2021.12.30_all.deb, копируем его на Lichee RV, используя терминал MobaXterm, и запускаем установку командой:

$ sudo dpkg -i debian-ports-archive-keyring_2021.12.30_all.deb

После обновления ключей все заработает включая обновление. Обновим систему, выполним команды:

$ sudo apt-get update
$ sudo apt-get -y upgrade

Установка дополнительных пакетов

Для работы с текстовыми конфигурационными файлами удобнее пользоваться не древним программами vi или nano, а нормальным редактором с поддержкой псевдографики и мыши. В состав пакета mc входит файловый менеджер Midnight Commander и текстовый редактор mcedit. Установим пакет mc и htop, командой:

$ sudo apt-get install -y mc htop usbutils

Настройка расширения экрана для LXDE

В не зависимости от диагонали подключаемого экрана, Xorg будет выводить картинку с разрешением 1080p. Но если у вас небольшой портативный LCD на 8 дюймов, то это проблема. Для задания других разрешений экрана необходимо создать конфигурационный файл с настройками для вашего монитора. Для этого необходимо создать конфигурационный файл по пути /usr/share/X11/xorg.conf.d/99-fbdev.conf и разместить в нем следующий фрагмент:

Файл 99-fbdev.conf
Section "Device"  
  Identifier "myfb"
  Driver "fbdev"
  Option "fbdev" "/dev/fb0"
EndSection

Section "Screen"
    Identifier    "Default Screen"
    Monitor        "Configured Monitor"
    Device        "myfb"
    DefaultDepth    24
    SubSection "Display"
        Depth    24
        Modes     "640x480" "800x600" "1024x768" "1024x600" "1280x720" "1920x1080"
    EndSubSection
EndSection

Section "InputDevice"
	Identifier	"Keyboard0"
	Driver		"keyboard"
	Option	"Floating" "off"
	Option	"XkbRules" "xorg"
	Option	"XkbModel" "pc105"
	Option	"XkbLayout" "us"
EndSection

Section "InputDevice"
  Identifier      "Mouse0"
  Driver          "evdev"
  Option          "Name" "Logitech USB Gaming Mouse"
  Option          "evBits"  "+1-2"
  Option          "keyBits" "~272-287"
  Option          "relBits" "~0-2 ~6 ~8"
  Option          "Pass"    "3"
  Option          "CorePointer"
EndSection

Section "ServerLayout"
  Identifier     "Default Layout"
  Screen 0       "Default Screen" 0 0
  InputDevice    "Keyboard0" "CoreKeyboard"
  InputDevice    "Mouse0" "CorePointer"
EndSection


В строке Modes задайте необходимые разрешения экрана, остальные параметры изменять не требуется.

Далее, необходимо выставить значение dpi. В папке домашней директории (/root) создаем файл .Xresources, командой:

$ sudo mcedit /root/.Xresources

В файле размещаем единственною строку параметр:

Xft.dpi: 100

Сохраняем изменения <F2> и выходим из редактора <F10>. Перезапускаем систему и входим в под пользователем root.

После перезапуска системы, в LXDE откроем меню «Пуск» > Preferences > Monitor Settings, выберем необходимое разрешение экрана.

Sipeed Lichee RV
Выбор разрешения экрана

Итог


Поднебесная, в отличие от российских разработчиков процессоров МЦСТ и Байкал электроникс, стремится к максимальной открытости не только в виде документации по использованию, но и открывает открытый доступ к исходникам ядер процессора. Ставка на открытость очень сильно подкупает.

Учитывая что спецификацию RISC-V сделали буквально вчера, а на руках уже работающая плата по низкой цене, это весьма впечатляющий результат. Пока драйверов и софта под архитектуру RISC-V очень мало, но многие пакеты уже скомпилированы под новую архитектуру.

Для полноценного теста необходим нормально работающий образ операционной системы, поэтому никакие тесты скорости не выполнялись. Поэтому следующий шаг, это сборка и настройка своего образа на базе Debian или Ubuntu.

Отдельно хотелось бы отметить проект Carlos Eduardo по портированию Docker на RISC-V архитектуру с последующей сборкой пакетов для этой архитектуры. Carlos Eduardo предлагает запускать QEMU эмулятор RISC-V архитектуры на x86 машине. Для эксперимента были установлены бинарные пакеты Docker от Carlos Eduardo на Lichee RV, но демон Docker не запустился. На данный момент с помощью инструмента Buildx (при сборке указать платформу --platform linux/riscv64) собираются контейнеры не только для ARM архитектуры, но и для RISC-V архитектуры, но об этом в продолжение.

Коротко:
  • На Lichee RV образ с Debian запускается в среднем за 1 минуту;
  • Видео не воспроизводится, показывается только первый кадр, далее видео замирает;
  • Браузера нет. Пока нет порта ни Firefox, ни Chrome;
  • Что-то намудрили с запуском диспетчера LXDE, иногда система зависает при инициализации GPU. Перезагрузка не спасает, только обесточивание платы и LCD панели решает проблему;
  • Образ Debian «кривой», необходимо собирать свой;
  • Вся текущая документация на плату и SDK только на китайском языке.

Благодарю за внимание, пишите в комментариях что вы бы хотели проверить, протестировать на новом одноплатнике Sipeed Lichee RV.

Обновление


[10.02.2022] Заменены фотографии SPI LCD на собственные. Добавлено видео запуска Lichee RV на SPI LCD.

Ресурсы



Комментарии (25)


  1. muradali
    09.02.2022 14:58
    +3

    Почему эти производители одноплатников упорно избегают распаивать постоянную память на них типа SSD и тд? 21 век, до сих пор SD карты.


    1. gudvinr
      09.02.2022 15:02

      NextThingCo не избегали (:


    1. devzona Автор
      09.02.2022 15:13
      +1

      На многих платах есть eMMC память. Для SSD размещают слот подключения, например в ROCK Pi 4


    1. kovserg
      10.02.2022 11:12
      +1

      Обычно проблемы не с памятью, а с видео дровами. Как бы оборудование есть и может, но по факту ни описания ни рабочих дров.


  1. count_enable
    09.02.2022 15:42
    +8

    Поднебесная, в отличие от российских разработчиков процессоров МЦСТ и
    Байкал электроникс, стремится к максимальной открытости не только в виде
    документации по использованию, но и открывает открытый доступ к
    исходникам ядер процессора.

    К сожалению, кроме ядра больше ничего и не открыто, я не уверен даже в доступности документации на остальную периферию. Полностью открытый Linux-совместимый SoC это была бы сенсация, народ бы создал свои драйвера в момент и платформу наверняка бы ждала немалая популярность.

    А так получился кактус с половиной нерабочей периферии, и мышкам ещё предстоит немало потрудиться чтобы пережевать его до готовности.


    1. devzona Автор
      09.02.2022 16:51
      +6

      Документации хватает, только она в основном на китайском языке:

      И как бы в открытой Raspberry Pi блобов вагон и маленькая тележка, открытость вопрос очень сложный.

      Не судите так строго, окончательная спецификация на RISC-V появилась только в прошлом году. Поэтому драйвера просто пока не успели написать. Потом необходимо учитывать использование образа на достаточно старом ядре Linux. Дабы не вводить в заблуждение аудиторию специально не стал выполнять никаких тестов на производительность.

      Сейчас разбираюсь с SDK. Подготовлю образ на свежем ядре Linux, добьюсь работы периферии, и тогда протестирую плату по полной.


      1. count_enable
        09.02.2022 18:17
        +1

        Да, малинка имеет закрытое видеоядро и не только, это известная проблема. Но и этот SoC ну никак открытым не назвать. Например DSP от Tensilica уж точно закрыт.


      1. dragonnur
        10.02.2022 15:33

        Очень интересная антитеза малинке. Спасибо!


  1. edo1h
    10.02.2022 00:00
    +2

    Разработкой связанной с RISC-V занимаются различные китайские компании.

    глаз зацепился за эту фразу, по её прочтению возникает ощущение, что только китайские компании, что, конечно же, неправда.


    Для загрузки прошивки на microSD карту (минимальный размер 16 Гб) необходимо использовать специализированную программу PhoenixCard, интерфейс который выполнен на китайском языке. Если в вашей версии Windows

    omg, чтобы сделать загрузочную флешку с linux нужен windows?


    1. devzona Автор
      10.02.2022 05:14

      глаз зацепился за эту фразу, по её прочтению возникает ощущение, что только китайские компании, что, конечно же, неправда.

      Но наиболее активно работают именно китайские компании. На руках у меня именно китайская плата с RISC-V процессором, а не европейская или американская.

      Среди компаний уровня "Premier Members" в консорцоуме RISC-V значатся компании: Alibaba Cloud, Andes, Chengwei Capital, FutureWei, Google, Huawei, ICT, ISCAS, Intel, RIOS, Rivos, ZTE, StarFive, SiFive, Stream Computing, SyntaCore, Unisoc, Ventana Micro, Western Digital.

      Всего 21 компания, 11 компаний китайские, как говорится комментарии излишни.

      В отличие от китайских компаний, другие только собираются заняться вплотную RISC-V архитектурой.

       Intel объявила об инвестирование 1 миллиарда баксов в фонд Intel Foundry Services (IFS). Задача IFS помочь в производстве процессоров для стартапов на базе архитектур x86, Arm и RISC-V, в том числе на основе RISC-V IP-ядер от SiFive. В дополнение, Intel собирается разрабатывать и лицензировать собственные ядра RISC-V.

      Компания  SiFive вместе с Intel  собирается представить ​​во втором квартале 2022 года процессор SiFive Performance P550 RISC-V под кодовым названием «Horse Creek». Данный процессор предполагается производить по техпроцессу 7-нм и будет включать IP-ядра от Intel такие как PCIe и DDR.

      omg, чтобы сделать загрузочную флешку с linux нужен windows?

      Тоже самое можно сделать и в Linux, кому как нравится. А еще можно залить прошивку по USB использую FEL, но это немного другая история.


      1. edo1h
        10.02.2022 06:35

        В отличие от китайских компаний, другие только собираются заняться вплотную RISC-V архитектурой.

        разве? чипы risc-v есть уже и в проде, хотя бы
        Titan is Google's branding for hardware-based security products, and with the Pixel 6 series, it's now a two-part setup. The Titan M2 is a discrete RISC-V security chip fully designed and developed by Google


        Поднебесная, в отличие от российских разработчиков процессоров МЦСТ и Байкал электроникс,

        почему вы сравниваете именно с этими компаниями?


        опенсорсных реализаций ядер помимо китайских достаточно, в том числе и
        scr1 from Syntacore, a 32-bit microcontroller unit (MCU) class RV32IMC implementation in Verilog
        от российской компании.


        другие только собираются заняться вплотную RISC-V архитектурой.

        на roadmap'е wd от 2019 года, видно, что у них на тот момент уже было как минимум одно risc-v ядро
        https://riscv.org/wp-content/uploads/2019/12/12.11-14.20a3-Bandic-WD_SweRV_Cores_Roadmap_v4SCR.pdf
        также там было несколько уже существовавших на тот момент ядер других разработчиков.
        это «только собираются заниматься»?


        На руках у меня именно китайская плата с RISC-V процессором, а не европейская или американская.

        да, дешёвые одноплатники сейчас предлагают только китайцы, не вижу в этом ничего удивительного.


        1. edo1h
          10.02.2022 06:54

          вдогонку, гуглится и такое:
          Storage giant Western Digital (WD) has added Linux and Android support to its Swerv line of RISC-V CPU cores. The company augmented the new EHX3 CPU with a memory-management unit, expanding its capabilities from embedded to low-end application processing

          WD is already manufacturing SSD controllers using the new CPU.


          однако конкретных моделей я не смог найти, возможно, журналисты что-то напутали.


          1. devzona Автор
            10.02.2022 21:50

            Все верно WD давно используют RISC-V в своих контроллерах к дискам.


        1. DungeonLords
          10.02.2022 10:04

          Про risc v в продакшн смотри

          И гринвейвс


        1. devzona Автор
          10.02.2022 21:48
          -2

          Нескольно не уточнил, подразумевал не RISC-V для MCU, а законченный результат в виде SoC с запуском Linux в конечном продукте как одноплатники.

          Сравниваю с МЦСТ и Байкал электроникс в контексте политики. Китайцы для экспансии наоборот пытаются все открыть, а российская политика все закрыть и не пущать.

          А какие другие дорогие одноплатники не от китайцев на RISC-V можете привести в пример?


          1. edo1h
            10.02.2022 22:17
            +1

            Сравниваю с МЦСТ и Байкал электроникс в контексте политики. Китайцы для экспансии наоборот пытаются все открыть, а российская политика все закрыть и не пущать.

            не очень понятно, что вы имеете в виду под «всё открыть»?
            ЕМНИП поддержку своих SoC байкаловцы активно проталкивают в апстрим.
            открыть ядра не могут, они покупные.


            МСЦТ отдельная история, если учесть, что разработку процессора заказывали вояки, хорошо и то, что есть )


            А какие другие дорогие одноплатники не от китайцев на RISC-V можете привести в пример?

            нет. очевидно, другим вендорам одноплатники не особо интересны.


            1. dernuss
              11.02.2022 13:33

              не очень понятно, что вы имеете в виду под «всё открыть»?

              Может всё что могут, схему там....


      1. Punk_Joker
        11.02.2022 00:32

        У SiFive есть несколько отладкой с их чипами. Хотя они больше специализируются на лицензировании ядер.


  1. akaAzazello
    10.02.2022 12:45
    -2

    По бравому тону мне кажется, что это перевод/компиляция, а не опыт реального использования этой платы.

    >> Идет речь о соответствие ядра ядра XuanTie C906 спецификации векторных расширений (RISC-V Vector Extension) версии v0.7.1 от 2019 г.,

    Поддержка RVV 0.7.1 заявлена для ядра C910(v), и хотя блок RVV тоже неофициально присутствует в С906 - утверждать, что он соответсввует спецификации - некорректно.


    1. devzona Автор
      10.02.2022 22:04
      +6

      По бравому тону мне кажется, что это перевод/компиляция, а не опыт реального использования этой платы.

      А вот это очень обидно и оскорбительно. Если у вас есть сомнения, то можете написать последовательно bash скрипт для исполнения. И я с записью на видео, его выполню на плате.

      Обновил раздел - "Дополнительный дисплей 1.14" 135×240 SPI LCD"

      Я очень много вкладываю сил и времени разбираясь во всем этом, всегда очень сложно быть первопроходцем. На сколько могу судить я единственный кто работает так с одноплатниками. Другие максимум только про малинку переводы клепают, но так что бы последовательно как мануал все в разжёванном виде представить, я что-то не припомню. Мне как автору интересно видеть отклик от аудитории, но в последнее время технические посты про разработку и программирование все больше хочется переводить на другие площадки.

      Видя реакцию на пост, учитывая уже поставленные три минуса, думаю что продолжение о формирование своего дистрибутива и программирования на .NET для RISC-V скорее всего публиковать на Хабре уже не буду. Я для себя не вижу смысла писать для Хабра в таком ключе.


      1. edo1h
        10.02.2022 22:09

        Видя реакцию на пост, учитывая уже поставленные три минуса, думаю что продолжение о формирование своего дистрибутива и программирования на .NET для RISC-V скорее всего публиковать на Хабре уже не буду. Я для себя не вижу смысла писать для Хабра в таком ключе.

        хм, на 20+ плюсов 3 минуса, вы серьёзно?


      1. trak
        11.02.2022 07:33
        +1

        haters gonna hate. спасибо за статью , а на хабре полно маргиналов с раздутым ЧСВ, не принимайте близко ик сердцу


  1. Albert2009ru
    10.02.2022 22:46

    Круто, большое спасибо. С нетерпением буду ждать вторую часть, особенно C#. Просто пока не догоняю, если это GUI на C#, то ведь это же Windows Forms и иже... Под Linux вроде на C++ Qt GUIшки клепают? Дико интересно, ставлю Вас в закладки и подписываюсь ????????????


    1. DungeonLords
      12.02.2022 01:02

      .net не осилил GUI, только через Авалониа.

      Под Linux обычно на Qt клепают. Хотя некоторые предпочитают через wxWidgets.


      1. Albert2009ru
        12.02.2022 01:16
        +1

        Спасибо. Не ожидал, что на мой "туповатый, по меркам Хабра" коммент кто-либо отреагирует. Мне, кстати, "дотнетовый и вижуалстудийный" GUI подход лучше зашёл. Чисто субъективно. Понравилось как-то больше что ли (вкусовщина, абсолютно понимаю :) ). Хотя, опять же, в Эклипсе "кьютовые формс" выглядят гораздо юзабелней с точки зрения - не надо лишнюю вкладку создавать... На Ваши статьи тоже подписываюсь, ибо прочитал и понравилось!