news 2026/4/18 17:57:16

Milk-V Duo到手第一步:从零配置Ubuntu20.04到成功点亮开发板(保姆级避坑)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Milk-V Duo到手第一步:从零配置Ubuntu20.04到成功点亮开发板(保姆级避坑)

Milk-V Duo开发板实战:从零构建Ubuntu开发环境到系统启动全指南

第一次拿到Milk-V Duo开发板时,那种既兴奋又忐忑的心情记忆犹新。作为RISC-V架构的新锐力量,这款小巧的开发板蕴含着巨大的可能性,但对于习惯纯软件开发的工程师来说,从裸板到可编程状态的跨越往往充满未知的"坑"。本文将分享我完整的上手历程,特别针对Windows/Linux混合环境下那些容易忽略的细节,提供一站式解决方案。

1. 开发环境准备:构建稳定的Ubuntu基础

工欲善其事,必先利其器。对于Milk-V Duo开发,Ubuntu 20.04 LTS是最稳妥的选择——其长期支持特性和广泛的社区资源能大幅降低环境配置的复杂度。我推荐采用虚拟机方案,既保持主机系统纯净,又能随时创建开发环境快照。

关键组件清单

  • VMware Workstation Player(免费版足够使用)
  • Ubuntu 20.04.6 LTS镜像(约2.6GB)
  • 至少50GB的虚拟磁盘空间
  • 8GB以上主机内存(分配4GB给虚拟机)

安装过程中有几个易错点需要特别注意:

  1. 在VMware创建虚拟机时,务必选择"稍后安装操作系统",手动指定为Linux/Ubuntu 64位,避免自动识别错误
  2. 磁盘分区建议手动设置:
    • /根分区:30GB
    • swap交换分区:物理内存的1.5倍
    • /home:剩余空间
  3. 安装开放SSH服务选项,方便后续远程访问

安装完成后立即执行以下基础配置:

sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential git cmake libncurses5-dev

提示:建议在此时创建虚拟机快照,命名为"Base System",作为干净的恢复点。

2. 开发工具链配置:搭建完整的SDK环境

Milk-V Duo采用CV1800B芯片,需要特定的工具链才能进行开发。不同于常见的ARM架构,RISC-V的工具链配置有其特殊性,这也是新手最容易卡壳的环节。

2.1 获取官方SDK

官方推荐使用duo-buildroot-sdk,通过以下命令获取:

git clone --recursive https://github.com/milkv-duo/duo-buildroot-sdk.git cd duo-buildroot-sdk

这个仓库包含:

  • 预配置的buildroot系统
  • 交叉编译工具链
  • 硬件抽象层(HAL)库
  • 示例代码

2.2 安装依赖项

执行SDK中的环境准备脚本前,需补充几个易遗漏的依赖:

sudo apt install -y flex bison texinfo gperf libssl-dev bc

然后运行环境准备:

source milkvsetup.sh

这个脚本会:

  1. 下载预编译的工具链
  2. 设置环境变量
  3. 检查必要的开发工具

注意:如果遇到权限问题,可能需要先执行chmod +x milkvsetup.sh

2.3 编译测试镜像

验证环境是否配置成功的最佳方式就是尝试编译一个基础镜像:

make milkv_duo_sd_defconfig make -j$(nproc)

成功编译后,你会在out/目录下得到:

  • milkv-duo-*.img:完整系统镜像
  • rootfs.cpio.gz:根文件系统
  • u-boot.bin:引导加载程序

编译时间视硬件性能而定,在4核8G的虚拟机上大约需要30-45分钟。

3. 镜像烧录实战:Windows环境下的完整流程

虽然开发环境建议使用Linux,但很多用户仍习惯在Windows下进行烧录操作。这个跨平台过程存在几个关键注意事项。

3.1 TF卡准备要点

参数推荐规格注意事项
容量≥8GB2GB仅够基础系统
速度Class10影响系统响应速度
品牌知名厂商避免兼容性问题

操作流程

  1. 使用读卡器将TF卡连接至Windows电脑
  2. 下载并安装Rufus工具
  3. 选择编译好的.img文件(从Linux虚拟机导出)
  4. 分区类型选择"MBR",文件系统选"FAT32"
  5. 点击"开始"等待完成

常见问题处理:

  • 如果Rufus提示"镜像太大",实际是工具误判,勾选"列表USB硬盘"选项即可
  • 烧录失败时,尝试先用DiskGenius等工具完全清除分区表
  • 遇到写保护错误,检查TF卡物理锁是否滑动到位

3.2 硬件连接技巧

Milk-V Duo的USB-C接口支持供电和数据传输,但要注意:

  • 必须使用数据线而非充电线(测试方法:连接手机看能否传输文件)
  • 推荐使用主板自带的USB3.0(蓝色)接口,稳定性更好
  • 若使用扩展坞,优先选择带独立供电的型号

连接顺序建议:

  1. 先插入已烧录镜像的TF卡
  2. 再连接USB数据线
  3. 最后接通电源(如有独立供电)

成功启动的标志是蓝色LED开始规律闪烁,约1分钟后变为稳定呼吸灯效。

4. 系统访问与调试:USB网络配置详解

与传统开发板不同,Milk-V Duo通过USB虚拟网卡提供网络访问,这种方式既节省了额外网络模块的成本,又提供了稳定的调试通道。

4.1 Windows驱动安装

当首次连接开发板时,设备管理器会出现未知设备"USB Ethernet/RNDIS",需要手动安装驱动:

  1. 右键选择"更新驱动程序"
  2. 选择"浏览我的计算机以查找驱动程序"
  3. 定位到以下路径:
    C:\Windows\System32\DriverStore\FileRepository\netrndis.inf_amd64_*
  4. 选择"USB Ethernet/RNDIS Gadget"完成安装

验证方法:

ping 192.168.42.1

成功收到回复说明连接正常。

4.2 SSH登录配置

推荐使用MobaXterm作为终端工具,其内置的SFTP功能方便文件传输:

  1. 新建SSH会话,地址填192.168.42.1
  2. 用户名:root
  3. 密码:milkv
  4. 端口保持默认22

登录成功后你会看到熟悉的Linux shell提示符。首次登录建议:

passwd # 修改默认密码 df -h # 查看存储空间使用情况

4.3 网络共享配置

要使开发板能够访问外网,需设置Windows主机的网络共享:

  1. 打开"网络和共享中心"
  2. 右键点击已联网的适配器→属性→共享
  3. 允许其他用户通过此计算机的Internet连接
  4. 选择RNDIS适配器作为家庭网络连接

在开发板上测试:

ping github.com

如果出现"Temporary failure in name resolution"错误,需要手动设置DNS:

echo "nameserver 8.8.8.8" > /etc/resolv.conf

5. 进阶配置与性能优化

系统成功运行后,可以通过以下调整获得更好的开发体验。

5.1 存储空间扩展

默认镜像只使用TF卡的部分空间,通过以下步骤扩展:

fdisk /dev/mmcblk0 # 删除第二个分区后新建(保持起始扇区相同) # 写入更改后退出 resize2fs /dev/mmcblk0p2

5.2 交换空间设置

对于内存密集型操作,可添加交换文件:

dd if=/dev/zero of=/swapfile bs=1M count=512 chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 添加到/etc/fstab实现开机自动挂载

5.3 温度监控

CV1800B芯片在持续负载下可能发热,安装监控工具:

opkg update opkg install lm-sensors sensors-detect --auto

然后可以通过sensors命令实时查看温度变化。

常见问题速查表

现象可能原因解决方案
蓝灯不亮供电不足换用带外接供电的USB集线器
SSH连接超时IP地址冲突修改/etc/network/interfaces中的静态IP
编译失败内存不足添加交换空间或减少make的并行任务数
文件系统只读异常关机运行fsck手动修复

从第一次点亮开发板到现在,我已经用Milk-V Duo完成了多个物联网原型开发。最深刻的体会是:遇到问题时不要急于重烧镜像,90%的情况都能通过串口日志找到原因(需额外USB转TTL模块)。建议在/var/log/目录下建立自己的日志收集脚本,这对后期调试会有极大帮助。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 16:38:31

终极桌面监控解决方案:TrafficMonitor插件完整指南

终极桌面监控解决方案:TrafficMonitor插件完整指南 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 在繁忙的数字工作环境中,如何高效监控系统状态、股票行…

作者头像 李华
网站建设 2026/4/16 16:37:29

STM32 FSMC时序配置实战:从手册解读到SRAM驱动

1. FSMC基础与SRAM驱动需求 STM32的FSMC(Flexible Static Memory Controller)模块是连接外部存储器的关键接口,尤其适合驱动SRAM、NOR Flash等设备。在实际项目中,当STM32内部RAM不够用时,外扩SRAM就成了常见选择。我最…

作者头像 李华
网站建设 2026/4/16 16:37:20

BilibiliDown:3步轻松搞定B站视频下载的跨平台神器

BilibiliDown:3步轻松搞定B站视频下载的跨平台神器 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/B…

作者头像 李华
网站建设 2026/4/16 16:32:24

从图形学到Web前端:手把手教你用JavaScript实现3D拾取(Ray-AABB碰撞)

从屏幕点击到3D交互:JavaScript实现AABB碰撞检测全解析 在网页3D场景中点击选中一个模型,看似简单的交互背后隐藏着复杂的数学计算。当鼠标点击屏幕时,如何准确判断这个二维坐标对应着三维空间中的哪个物体?这正是3D拾取&#xff…

作者头像 李华