Milk-V(Linux) (обновлено: 23 Jun 2024, 11:24:07)

Документация по модулю Milk-V DUO с ОС Linux + RTOS.

Поддержка готового SD образа для быстрого старта работы с устройством. Включает приложение wifi-iot и локальное облако, а так же драйвера wifi usb сетевых карт и usb-uart.

Документация будет обновляться по мере обновления функционала SD образа.


Описание модуля

Модуль на основе RISC-V процессора, 2 ядра: одно для Linux , другое - для RTOS, имеется процессор 8051 для работы модуля в спящем режиме, 64мб ОЗУ, загрузка с SD карты или с впаянной флешки.

Доступны интерфейсы: GPIO, I2C, SPI, PWM, ADC, USB 2.0, подключение камер, Ethernet (требуется подключить разъем со встроенным трансформатором).

Устанавливается Linux приложение из конструктора и локальное облако.


Готовый образ для SD диска

На данный момент образ диска собран только для 64 мб версии платы (еще существует 256 мб версия, дороже и для данных целей излишне)

Доступна тестовая сборка образа  от 23.06.24 для загрузки на SD диск по ссылке. Документация ниже относится к версии сборки от 23.06.24.

Сборка адаптирована для работы в IOT системах. Работа с камерой не предусмотрена.

Записать образ на SD диск можно через бесплатное приложение balenaEtcher или другими подобными программами. Размер SD флешки должен быть не менее 128мб.

Для начальной настройки wifi не имея подключения по  ethernet на данный момент затруднительно.


Реализовано

При подключении ethernet разъема и подключения к сети устройство получит ip адрес по dhcp.

Автозагрузка приложения wifi-iot (http://[ip_addr]:1081) и локального облака (http://[ip_addr]). Порты можно поменять в конфигах в папках приложений, пути видно в команде htop.

Установлено приложение wifi-iot с поддержкой некоторых опций, включая поддержку датчиков. Доступна работа датчиками DS1820 с выбором GPIO через веб интерфейс(при включении опции или перенастройки GPIO требуется перезагрузка), при установленной соответствующей опции. Изменить состав опций можно через конструктор приложения.


Работа с USB

По умолчанию USB включен в режиме устройства RNDIS для подключения к компьютеру в качестве сетевого устройства. Устройство получит ip адрес 192.168.42.1.

Для включения режима host(OTG) требуется подать команду setcfg usbmode=1 в консоли ssh или UART. В этом случае  доступно подключение USB устройств, например wifi или usb флешек через type-c OTG-USB переходник. Возможно подключение USB HUB , в том числе сразу с разъемом type-c(существует куча не дорогих)

Поддерживается работа с USB-UART переходниками, например USB-RS485 (драйвера не загружены по умолчанию).

Для работы USB устройств, особенно wifi, требуется хорошее питание - иначе возможны зависания устройства.

setcfg usbmode=2 - вернуть обратно режим RNDIS

setcfg usbmode=0 - выключить работу с USB.

После подачи команд требуется перезагрузка через веб приложения wifi-iot или командой reboot в консоли.


Настройка Wifi

Для работы USB Wifi для начала включите USB в режиме host(OTG) !!!

В образе установлены некоторые wifi драйвера Realtek, подключаемые через USB.

Доступен режим работы в качестве точки доступа. Подключаемся к устройству по IP адресу 192.168.42.1 

Поддерживаемые драйвера:

rtl8188eu.ko - разные другие устройства, основанные на чипе Realtek, например D-Link,TP-Link.

rtl8188fu.ko -  pid/vid 0BDA/F179.

rtl8821cu.ko - pid/vid 0BDA/C811, устройства в том числе rtl8811.

rtl8723du.ko - драйвер имеется, но не входит в готовый образ SD. Загрузить прямо на устройство команда: cd /mnt/system/ko/ && wget http://files.wifi-iot.com/milk/soft/rtl8723du.ko

Драйвера выбираются автоматически, но по желанию можно загружать конкретный драйвер - этим вы ускорите загрузку устройства. Включение драйверов находится в файле /mnt/system/usb.sh

Получить справку по драйверам можно в чате Телеграм, предоставив vid/pid устройства, по команде lsusb.

Если драйвер устройства подошел, то в команде ifconfig вы увидите устройство wlan0. При успешном подключении к сети тут же будет отображаться ip адрес.

Установка точки доступа/пароля Wifi, два варианта:

1. Доступна через веб интерфейс приложения wifi-iot на вкладке main. При успешном вводе данных wifi должен заработать сразу. При изменении параметров сети требуется перезагрузка.

2. Или вручную требуется создать файл wpa_supplicant.conf в папке /etc/ и настроить его:

network={
ssid="имя точки"
psk="пароль"
}

далее ручной запуск wifi выполняется командой wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -B


Доступ в устройство через ssh

Доступ по ssh: логин root , пароль milkv.


Доступ в устройство по UART

Подключившись к GPIO GP12/GP13 через USB-UART переходник можно попасть в консоль операционной системы, где можно выполнить некоторые команды. Например посмотреть выданный ip адрес через команду ifconfig или переключить режим USB.

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

Для управления подойдет та же Putty. Скорость 115200.


Подключение Ethernet разъема

Можно приобрести готовый разъем специально для Milk-v , но можно использовать любой разъем со встроенным трансформатором, например HR911105A  - требуется соединить 5 проводков. Схема подключения в разработке.



Подключение питания к модулю

Устройство имеет 2 входа для подключения питания:

VSYS - вход до 12 вольт !

VBUS - вход 5 вольт ! Требуется на него подать питание в случае подключения USB устройств через type-c (OTG).


Расcпиновка модуля Milk-V DUO

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

В приложении wifi-iot доступно 4 UART на ногах:

/dev/ttyS0 - GP12/GP13. Используется системой для отладки вывода, не доступно для приложения;

/dev/ttyS1 - GP12/GP13 , заменяет uart0 (теоретически, не проверено). Если не хватает UARTов;

/dev/ttyS2 - GP0/GP1;

/dev/ttyS3 - GP4/GP5 . + RTS/CTS - GP8/GP9(не удалось задействовать, под вопросом);

/dev/ttyS4 - GP2/GP3.

Если имеется нехватка GPIO или количества UART, то можно использовать USB-UART конверторы.


Подключение I2C:

В приложении wifi-iot доступно 5 I2C на ногах:

/dev/i2c-0 - GP0/GP1;

/dev/i2c-1 - GP11/GP10;

/dev/i2c-3 - GP7/GP6;

/dev/i2c-4 - GP4/GP5 (виртуальный, фактически это i2c1 на других GPIO);

/dev/i2c-5 - GP9/GP8 (виртуальный, фактически это i2c1 на других GPIO).

Номер i2c необходимо указать на вкладке hardware.


Работа с ADC(АЦП) и PWM(ШИМ) на данный момент не реализована. В планах.


SPISPI NORSDPWMI2CUARTNUMCV1800BNAMEPINPINNAMECV1800BNUMADCSPI NORSPI NAND
I2C0_SCLUART1/2_TX508XGPIOA[28]GP0
1
40
VBUS(5V)
I2C0_SDAUART1/2_RX509XGPIOA[29]GP1
2
39
VSYS(5V)
GND
3
38
GND
SD1_GP1PWM10UART4_TX378PWR_GPIO[26]GP2
4
37
3V3_EN
SD1_GP0PWM11UART4_RX377PWR_GPIO[25]GP3
5
36
3V3(OUT)
SPINOR1_HOLD_XSD1_D2PWM5I2C1_SCLUART2/3_TX371PWR_GPIO[19]GP4
6
35
SPINOR1_WP_XSD1_D1PWM6I2C1_SDAUART2/3_RX372PWR_GPIO[20]GP5
7
34
GND
8
33
GND
SPI2_SCKSPINOR1_SCKSD1_CLKPWM9I2C3_SDA375PWR_GPIO[23]GP6
9
32
GP27XGPIOB[6]454ADC2(1.8V)
SPI2_SDOSPINOR1_MOSISD1_CMDPWM8I2C3_SCL374PWR_GPIO[22]GP7
10
31
GP26XGPIOB[3]451ADC1(1.8V)
SPI2_SDISPINOR1_MISOSD1_D0PMW7I2C1_SDAUART3_RTS373PWR_GPIO[21]GP8
11
30
RUN
SPI2_CS_XSPINOR1_CS_XSD1_D3PWM4I2C1_SCLUART3_CTS370PWR_GPIO[18]GP9
12
29
GP22PWR_GPIO[4]356
GND
13
28
GND
I2C1_SDA425XGPIOC[9]GP10
14
27
GP21XGPIOA[26]506SPINOR_HOLD_XSPINAND_HOLD
I2C1_SCL426XGPIOC[10]GP11
15
26
GP20XGPIOA[27]507SPINOR_WP_XSPINAND_WP
PWM4UART0/1_TX496XGPIOA[16]GP12
16
25
GP19XGPIOA[25]505SPINOR_MOSISPINAND_MOSI
PWM5UART0/1_RX497XGPIOA[17]GP13
17
24
GP18XGPIOA[22]502SPINOR_SCKSPINAND_SCK
GND
18
23
GND
494XGPIOA[14]GP14
19
22
GP17XGPIOA[24]504SPINOR_CS_XSPINAND_CS
495XGPIOA[15]GP15
20
21
GP16XGPIOA[23]503SPINOR_MISOSPINAND_MISO
440XGPIOC[24]
LED