RISC-V技术论坛
直播中

jf_07365693

1年用户 222经验值
擅长:嵌入式技术 控制/MCU
私信 关注
[经验]

【Milk-V Duo S 开发板免费体验】网络连接、分区扩展、外壳设计

uart

【Milk-V Duo S 开发板免费体验】网络连接、分区扩展、外壳设计

本文介绍了 Milk-V Duo S 开发板实现网络连接、分区扩展、外壳设计等相关流程。

网络连接

包括 LAN 有线网口连接通信、WLAN无线通信连接、USB CNC-NCM通信连接以及串口UART连接等。

有线连接

  • 将网线连接开发板和路由器,进入路由器终端获取开发板对应的 IP 地址,如 192.168.1.124

lan_connect.jpg

  • 使用 MobaXterm 软件或 PowerShell 命令行终端建立 SSH 连接,登录名和默认密码分别为 root 和 milkv ;

    ssh_LAN_login.jpg

动态效果见底部视频。

固定网口 MAC

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

mac_address.jpg

终端执行如下指令,为网口配置固定的 MAC 地址(注意修改MAC地址)

echo "pre-up ifconfig eth0 hw ether 3E:34:CA:4C:07:B1" >> /etc/network/interfaces && sync

终端执行 reboot 指令重启使其生效。

无线连接

编辑无线配置文件 /etc/wpa_supplicant.conf ,修改 ssidpsk 分别为目标 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"

# Continuously attempt to detect if the interface exists, up to $max_attempts times
echo "start auto.sh" > "$log_file"
while [ $attempt -lt $max_attempts ]; do
    # Check if the wlan0 interface exists
    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  # Exit the loop if the interface is found
    else
        echo "$(date +'%Y-%m-%d %H:%M:%S') $interface interface not found, waiting..." >> "$log_file"
        sleep 1  # Wait for 1 second before checking again
        attempt=$((attempt + 1))  # Increment the attempt counter
    fi
done

# If the maximum number of attempts is reached and the interface still not found, output an error message
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 终端;

ssh_login.jpg

若需修改默认 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

实物连接

uart_connect.jpg

Duo S 默认串口参数为

baudrate: 115200
data bit: 8
stop bit: 1
parity  : none
flow control: none

效果演示

uart_communication.jpg

动态演示见顶部视频。

详见:串口通信 Duo S | Milk-V .

分区扩展

这里介绍 SD 卡启动方式的根分区拓展流程,便于后续存储和运行较大体积的程序。

操作流程

运行命令 df -h 查看当前磁盘分区和使用情况。

[root@milkv-duo]/etc# df -h
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# fdisk -l
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 实现扩展文件系统,以使用新的分区大小。

效果

查看扩展后的分区大小

disk_expolore.jpg

脚本

通过创建脚本文件,实现上述流程的快速执行。

创建扩展根分区脚本 touch resize.sh ,并添加如下代码

#!/bin/bash

# 确保脚本以root身份运行
if [ "$EUID" -ne 0 ]; then
    echo "请以root用户运行此脚本"
    exit
fi

# 设置设备名称
DEVICE="/dev/mmcblk0"

# 使用fdisk进行分区操作
{
echo d      # 删除分区
echo 3      # 删除分区3
echo n      # 创建新分区
echo p      # 主分区
echo 3      # 分区号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 设计

3d_shell_bottom.jpg

Top 设计

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

3d-shell_top.jpg

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

实物展示

3d-shell.jpg

组装

3d-shell_install.jpg

这里使用 M2 螺丝,长度为 25mm,头部直径 3.8mm,螺母为 M2 六角型。

彩色外壳效果如下

3d_shell_design.jpg

详见:MilkV DuoS Case Version A by carbonfix - Thingiverse .

总结

本文介绍了 Milk-V Duo S 开发板实现网络连接、分区扩展、外壳设计等相关流程,为后续开发做好准备,也为该产品的相关开发设计和产品应用提供了参考。

ssh

回帖(1)

无垠的广袤

2025-7-5 17:33:19
外壳设计得真不错哈,既能实现电气隔离、保护开发板,又能增加美观度,方便展示和携带。网络连接配置很有用,在进行物联网应用设计时需要调用网络通信协议,期待后面能给出一些物联网和智能家居的应用✌?
1 2 举报
  • jf_07365693: 感谢关注~ 外壳设计确是不错,和开发板器件匹配得严丝合缝,小巧美观。使用SD卡安装milkv duo s 镜像在实现物联网时,需要 SDK 编译生成可执行程序;后面会尝试板端部署 Debian 系统,通过Python编程和 OpenCV 实现摄像头调用以及物联网相关项目,敬请期待~

更多回帖

发帖
×
20
完善资料,
赚取积分