Документация по модулю 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 приложение из конструктора и локальное облако.
На данный момент образ диска собран только для 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 включен в режиме устройства 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 в консоли.
Для работы 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: логин root , пароль milkv.
Подключившись к GPIO GP12/GP13 через USB-UART переходник можно попасть в консоль операционной системы, где можно выполнить некоторые команды. Например посмотреть выданный ip адрес через команду ifconfig или переключить режим USB.
В данной консоли так же можно увидеть ошибки запуска, если имеются какие-то проблемы.
Для управления подойдет та же Putty. Скорость 115200.
Можно приобрести готовый разъем специально для Milk-v , но можно использовать любой разъем со встроенным трансформатором, например HR911105A - требуется соединить 5 проводков. Схема подключения в разработке.
Устройство имеет 2 входа для подключения питания:
VSYS - вход до 12 вольт !
VBUS - вход 5 вольт ! Требуется на него подать питание в случае подключения USB устройств через type-c (OTG).
Подключение 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(ШИМ) на данный момент не реализована. В планах.
SPI | SPI NOR | SD | PWM | I2C | UART | NUM | CV1800B | NAME | PIN | PIN | NAME | CV1800B | NUM | ADC | SPI NOR | SPI NAND | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
I2C0_SCL | UART1/2_TX | 508 | XGPIOA[28] | GP0 | 1 | 40 | VBUS(5V) | ||||||||||
I2C0_SDA | UART1/2_RX | 509 | XGPIOA[29] | GP1 | 2 | 39 | VSYS(5V) | ||||||||||
GND | 3 | 38 | GND | ||||||||||||||
SD1_GP1 | PWM10 | UART4_TX | 378 | PWR_GPIO[26] | GP2 | 4 | 37 | 3V3_EN | |||||||||
SD1_GP0 | PWM11 | UART4_RX | 377 | PWR_GPIO[25] | GP3 | 5 | 36 | 3V3(OUT) | |||||||||
SPINOR1_HOLD_X | SD1_D2 | PWM5 | I2C1_SCL | UART2/3_TX | 371 | PWR_GPIO[19] | GP4 | 6 | 35 | ||||||||
SPINOR1_WP_X | SD1_D1 | PWM6 | I2C1_SDA | UART2/3_RX | 372 | PWR_GPIO[20] | GP5 | 7 | 34 | ||||||||
GND | 8 | 33 | GND | ||||||||||||||
SPI2_SCK | SPINOR1_SCK | SD1_CLK | PWM9 | I2C3_SDA | 375 | PWR_GPIO[23] | GP6 | 9 | 32 | GP27 | XGPIOB[6] | 454 | ADC2(1.8V) | ||||
SPI2_SDO | SPINOR1_MOSI | SD1_CMD | PWM8 | I2C3_SCL | 374 | PWR_GPIO[22] | GP7 | 10 | 31 | GP26 | XGPIOB[3] | 451 | ADC1(1.8V) | ||||
SPI2_SDI | SPINOR1_MISO | SD1_D0 | PMW7 | I2C1_SDA | UART3_RTS | 373 | PWR_GPIO[21] | GP8 | 11 | 30 | RUN | ||||||
SPI2_CS_X | SPINOR1_CS_X | SD1_D3 | PWM4 | I2C1_SCL | UART3_CTS | 370 | PWR_GPIO[18] | GP9 | 12 | 29 | GP22 | PWR_GPIO[4] | 356 | ||||
GND | 13 | 28 | GND | ||||||||||||||
I2C1_SDA | 425 | XGPIOC[9] | GP10 | 14 | 27 | GP21 | XGPIOA[26] | 506 | SPINOR_HOLD_X | SPINAND_HOLD | |||||||
I2C1_SCL | 426 | XGPIOC[10] | GP11 | 15 | 26 | GP20 | XGPIOA[27] | 507 | SPINOR_WP_X | SPINAND_WP | |||||||
PWM4 | UART0/1_TX | 496 | XGPIOA[16] | GP12 | 16 | 25 | GP19 | XGPIOA[25] | 505 | SPINOR_MOSI | SPINAND_MOSI | ||||||
PWM5 | UART0/1_RX | 497 | XGPIOA[17] | GP13 | 17 | 24 | GP18 | XGPIOA[22] | 502 | SPINOR_SCK | SPINAND_SCK | ||||||
GND | 18 | 23 | GND | ||||||||||||||
494 | XGPIOA[14] | GP14 | 19 | 22 | GP17 | XGPIOA[24] | 504 | SPINOR_CS_X | SPINAND_CS | ||||||||
495 | XGPIOA[15] | GP15 | 20 | 21 | GP16 | XGPIOA[23] | 503 | SPINOR_MISO | SPINAND_MISO | ||||||||
440 | XGPIOC[24] | LED |