感谢面包板论坛提供的MilkV-Duo的测评机会。开发板搭载的芯片型号为CV1800B,自带64MB的片上内存,属于入门级的嵌入式芯片,边上还带有8051内核,产品的定位应该是用于教育场景的使用。
官方提供的介绍页面有详细的使用说明。
https://milkv.io/zh/docs/duo/overview
https://milkv.io/zh/duo
# 1、开发环境搭建和镜像构建
使用VMware创建Ubuntu22.04的虚拟机。在创建完成的虚拟机中,修改系统的镜像源,保证软件可以正常更新,如果不更新,安装时会有拉取不到安装包的问题。

在虚拟机中运行以下指令安装开发相关的依赖项。
```bash
sudoaptinstall-ypkg-configbuild-essentialninja-buildautomakeautoconflibtoolwgetcurlgitgcclibssl-devbcslibsquashfs-toolsandroid-sdk-libsparse-utilsjqpython3-distutilssconsparalleltreepython3-devpython3-pipdevice-tree-compilersshcpiofakerootlibncurses5flexbisonlibncurses5-devgenext2fsrsyncunzipdosfstoolsmtoolstclopenssh-clientcmakeexpectpython-is-python3
```
使用官方的[duo-buildroot-sdk-v2](https://github.com/milkv-duo/duo-buildroot-sdk-v2),需要额外安装以及组件
```bash
sudopipinstalljinja2
```
运行以下指令,拉取官方的SDK仓库代码
```bash
gitclonehttps://github.com/milkv-duo/duo-buildroot-sdk-v2.git--depth=1
```
在编译过程中,Buildroot需要下载一些源码包,算能官方提供相关的源码包,避免因为网络问题导致的下载失败,影响编译过程。执行以下指令下载`dl.tar`包并解压到`buildroot`目录中。
```bash
wgethttps://github.com/milkv-duo/duo-buildroot-sdk-v2/releases/download/dl/dl.tar
tarxvf./dl.tar-C./duo-buildroot-sdk-v2/buildroot/
```
完成以下操作后,即可开始构建用于烧录的开发板镜像。在sdk目录中有`build.sh`脚本用于管理SDK的配置以及镜像编译。输入以下指令,并选择板卡对应的选项1,即可构建适配开发板的镜像文件。
```bash
./build.shlunch
```
编译完成后,可以在`out`输出目录中找到对应的可烧录镜像`milkv-duo-musl-riscv64-sd_xxxx-xxxx-xxxx.img`
# 2、镜像烧录
将编译好的镜像复制到Windows宿主机中,使用rufus工具将其烧录SD卡中。

烧录完成后,将SD卡插入开发板的卡槽中。连接USB后,可以在电脑端看到"CDC-NRM"的设备。
需要为其更新驱动。

浏览“我的电脑”为其选择驱动

从计算机中已有的驱动列表中为其选择相应的驱动。

选择驱动类型的为网络适配器。

厂商选择Microsoft,驱动型号为UsbNcm Host Device。

忽略弹出的警告继续安装。

驱动安装成功后,可以在设备列表中找到新添加的设备驱动。


至此,开发板就可以通过USB网口连接到PC,在PC端查看开发板的信息。
# 3、通过SSH连接开发板
开发板默认的地址为192.168.42.1,用户名为root,密码为milkv。配置SSH客户端即可连接到开发板。

# 4、应用程序开发
开发板的主核运行Linux操作系统,官方提供相应的示例程序供用户参考,仓库地址为:
https://github.com/milkv-duo/duo-examples.git
将其克隆到本地,修改环境配置脚本中的`host_tools`变量指向的路径。

然后运行`source envsetup.sh`脚本导入环境配置并选择芯片类型。编译示例程序得到可执行文件。

将可执行通过`scp helloworld root@192.168.42.1:/root/`发送到开发板。在开发板上运行示例程序可以得到输出结果。

# 5、总结
MilkV-Duo板卡作为一款入门学习嵌入式和Linux的板卡是不错的选择。官方提供完整和易用的SDK,便于开发者使用。