【Milk-V Duo S 开发板免费体验】网络连接、分区扩展、外壳设计
本文介绍了 Milk-V Duo S 开发板实现网络连接、分区扩展、外壳设计等相关流程。
网络连接
包括 LAN 有线网口连接通信、WLAN无线通信连接、USB CNC-NCM通信连接以及串口UART连接等。
有线连接
- 将网线连接开发板和路由器,进入路由器终端获取开发板对应的 IP 地址,如
192.168.1.124
;

动态效果见底部视频。
固定网口 MAC
每次连接 LAN 有线网,Duo S 以太网口 MAC 地址便会随机分配,导致每次重启后,路由器为网口分配的 IP 地址改变,给登录带来诸多不便,因此终端执行 ifconfig
查看并获取当前网络的 MAC 地址

终端执行如下指令,为网口配置固定的 MAC 地址(注意修改MAC地址)
echo "pre-up ifconfig eth0 hw ether 3E:34:CA:4C:07:B1" >> /etc/network/interfaces && sync
终端执行 reboot
指令重启使其生效。
无线连接
编辑无线配置文件 /etc/wpa_supplicant.conf
,修改 ssid
和 psk
分别为目标 WiFi 的账号和密码
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1
network={
ssid="xxx"
psk="xxx"
key_mgmt=WPA-PSK
}
终端执行指令
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
即可获取 WiFi 连接。
通过路由器终端或 ifconfig
指令查看分配的 IP 地址。
自动连接
每次重启连接 WiFi 路由器会自动随机分配 ip 地址给开发板,给调试带来许多不便,因此需固定MAC地址,并设置开机自动连接无线网。
打开 /mnt/system/auto.sh
文件,并添加如下指令
interface="wlan0"
max_attempts=100
attempt=0
log_file="/var/log/auto.sh.log"
echo "start auto.sh" > "$log_file"
while [ $attempt -lt $max_attempts ]; do
ip link show "$interface" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "$(date +'%Y-%m-%d %H:%M:%S') $interface interface exists, starting wpa_supplicant..." >> "$log_file"
wpa_supplicant -B -i "$interface" -c /etc/wpa_supplicant.conf >> "$log_file"
break
else
echo "$(date +'%Y-%m-%d %H:%M:%S') $interface interface not found, waiting..." >> "$log_file"
sleep 1
attempt=$((attempt + 1))
fi
done
if [ $attempt -eq $max_attempts ]; then
echo "$(date +'%Y-%m-%d %H:%M:%S') Interface $interface not found after $max_attempts attempts" >> "$log_file"
fi
固定 WiFi MAC 地址
每次重启后路由器为 WiFi 分配的 ip 地址变化,终端执行如下指令,使 WiFi 具有固定的 MAC 地址
echo "MAC_ADDR=11:22:33:44:55:66" > /mnt/system/firmware/aic8800/rwnx_settings.ini && sync
执行 reboot
命令或重新上电并生效。
详见:WiFi 配置 Duo S | Milk-V .
USB 网络
系统默认启用 CDC-NCM 和 DHCP ;
驱动安装:将 Type-C 转 USB 数据线连接开发板和电脑,打开设备管理器,在 其他设备 选项下找到 CDC NCM 设备,右键更新驱动,浏览电脑查找驱动 - 从计算机可用驱动列表选择 - 网络适配器 - Microsoft - UsbNcm Host Device,点击安装;返回设备管理器界面,在网络适配器选项下可看到 UsbNcm Host Device 选项
直接在命令行终端使用指令 ssh root@192.168.42.1
即可登陆 Duo S 终端;

若需修改默认 CDC-NCM 登录地址,可进入文件 /mnt/system/usb-ncm.sh
~!/bin/sh
usb_en=453
usb_select=510
function set_gpio()
{
local gpio_num=$1
local gpio_val=$2
local gpio_path="/sys/class/gpio/gpio${gpio_num}"
if test -d ${gpio_path}; then
echo "GPIO ${gpio_num} already exported" >> /tmp/ncm.log 2>&1
else
echo ${gpio_num} > /sys/class/gpio/export
fi
echo out > ${gpio_path}/direction
sleep 0.1
echo ${gpio_val} > ${gpio_path}/value
}
set_gpio ${usb_en} 0
sleep 0.5
set_gpio ${usb_select} 0
sleep 0.5
/etc/uhubon.sh device >> /tmp/ncm.log 2>&1
/etc/run_usb.sh probe ncm >> /tmp/ncm.log 2>&1
/etc/run_usb.sh start ncm >> /tmp/ncm.log 2>&1
sleep 0.5
ifconfig usb0 192.168.42.1
count=`ps | grep dnsmasq | grep -v grep | wc -l`
if [ ${count} -lt 1 ] ;then
echo "/etc/init.d/S80dnsmasq start" >> /tmp/ncm.log 2>&1
/etc/init.d/S80dnsmasq start >> /tmp/ncm.log 2>&1
fi
以及文件 /etc/dnsmasq.conf
interface=usb0
dhcp-range=192.168.42.2,192.168.42.242,1h
dhcp-option=3
dhcp-option=6
详见:设置工作环境 | Milk-V .
串口通信
Duo S 主板上预留 UART 调试串口,可以查看系统的启动日志,登陆到控制台,执行终端命令等。
使用 USB-TTL 串口线连接板载排针引脚,连接方案为
Milk-V DouS |
USB - TTL |
---|
GND (pin 6) |
GND |
TX (pin 8) |
RXD |
RX (pin 10) |
TXD |
实物连接

Duo S 默认串口参数为
baudrate: 115200
data bit: 8
stop bit: 1
parity : none
flow control: none
效果演示

动态演示见顶部视频。
详见:串口通信 Duo S | Milk-V .
分区扩展
这里介绍 SD 卡启动方式的根分区拓展流程,便于后续存储和运行较大体积的程序。
操作流程
运行命令 df -h
查看当前磁盘分区和使用情况。
[root@milkv-duo]/etc
Filesystem Size Used Avail Use% Mounted on
/dev/root 739M 236M 449M 35% /
devtmpfs 158M 0 158M 0% /dev
tmpfs 158M 0 158M 0% /dev/shm
tmpfs 158M 412K 158M 1% /tmp
tmpfs 158M 40K 158M 1% /run
/dev/mmcblk0p1 128M 3.8M 124M 3% /boot
运行指令 fdisk -l
查看磁盘分区详细信息
[root@milkv-duo]/etc
Disk /dev/mmcblk0: 29.72 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x438efa6e
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 1 262144 262144 128M c W95 FAT32 (LBA)
/dev/mmcblk0p2 262145 266240 4096 2M 0 Empty
/dev/mmcblk0p3 266241 1839104 1572864 768M 83 Linux
目标扩展分区为 /dev/mmcblk0p3 ,该分区的起始扇区为 266241 .
运行命令 fdisk /dev/mmcblk0
启动 fdisk ;
- 输入 d 以删除分区;
- 输入分区号 3 以删除分区 /dev/mmcblk0p3;
- 输入 n 以创建新分区;
- 选择 p 创建主分区;
- 输入分区号 3 ;
- 输入起始扇区 266241 ;
- 输入结束扇区,直接回车以扩展至最大空间;
- 出现
Do you want to remove the signature? [Y]es/[N]o
,输入 N 并回车;
- 输入 w 保存更改并退出 fdisk
执行指令 resize2fs /dev/mmcblk0p3
实现扩展文件系统,以使用新的分区大小。
效果
查看扩展后的分区大小

脚本
通过创建脚本文件,实现上述流程的快速执行。
创建扩展根分区脚本 touch resize.sh
,并添加如下代码
#!/bin/bash
if [ "$EUID" -ne 0 ]; then
echo "请以root用户运行此脚本"
exit
fi
DEVICE="/dev/mmcblk0"
{
echo d
echo 3
echo n
echo p
echo 3
echo 266241
echo
echo N
echo w
} | fdisk "$DEVICE"
resize2fs "${DEVICE}p3"
df -h
修改文件权限并运行即可
chmod +x resize.sh
./resize.sh
详见:扩展根分区 | Milk-V .
外壳设计
3D 外壳为上下层设计,四脚采用 M2 螺丝固定
Bottom 设计

Top 设计
顶层设计包括大、中、小 3 种尺寸

其中 Large 可以使用嘉立创 3D 打印免费券。
实物展示

组装

这里使用 M2 螺丝,长度为 25mm,头部直径 3.8mm,螺母为 M2 六角型。
彩色外壳效果如下

详见:MilkV DuoS Case Version A by carbonfix - Thingiverse .
总结
本文介绍了 Milk-V Duo S 开发板实现网络连接、分区扩展、外壳设计等相关流程,为后续开发做好准备,也为该产品的相关开发设计和产品应用提供了参考。