
Milk-V Duo是一款基于算能 CV1800B芯片的MPU,能够运行基于LINUX和RTOS的操作系统。Milk-V Duo为专业人士、工业OEM企业、物联网爱好者、业余爱好者、DIYers和创作者提供了一个可靠、低成本且极具功能的平台,使他们能够打造和调试自己的想法,并将其变成现实。
1、Milk-V Duo之开箱初体验
一、第一印象
外观设计方面,Milk-V Duo以简约而精致的风格为主,采用沉金工艺,给人一种高端大气的感觉。开发板的尺寸小巧,便于携带和使用,在我拿到的所有的开发板中,也只有STM32103C8T6核心板的体积能与之媲美了,但是前者在同样的体积下塞进去了更强的功能。
二、外设

Milk-V Duo是一个基于CV1800B芯片的超紧凑嵌入式开发平台。它可以运行Linux和RTOS,为专业人士、工业ODM厂商、AIoT爱好者、DIY爱好者和创作者提供了一个可靠、低成本和高性能的平台,在这块小小的开发板上集成了多达26个GPIO引脚,可以访问内部外设,如SDIO、I2C、PWM、SPI、J-TAG和UART。
- 处理器: CVITEK CV1800B (C906@1Ghz + C906@700MHz)
- 内存: 64MB
- 网口: 10/100Mbps 以太网 (需外接扩展板)
这样看来很适合做一些广告机等多媒体设备。
三、软件
除了强大的硬件性能,Milk-V Duo还具备良好的软件支持。官方释放了丰富的开发工具和库,方便用户进行各种应用程序的开发。此外,开发板还提供了丰富的示例代码和文档,帮助用户快速上手和学习。
>>>点此查看全文
2、OpenCV的交叉编译
Milk-V Duo是一款基于算能 CV1800B芯片的MPU,能够运行基于LINUX和RTOS的操作系统。算能 CV1800B使用的是平头哥的玄铁C906核,具有很强的处理能力,所以我们尝试交叉编译试用于Milk-V Duo的OpenCV图像处理库。平头哥的网站提供了优化的定制版OpenCV,据说这个版本可以最大限度地发挥芯片的性能,让人很是期待。
下载和编译OpenCV

交叉编译器采用的是算能官方提供的。这个包中包括了用于裸机的elf工具链和gnu、musl两个版本的工具链。我们使用cat /proc/version目录查看了官方镜像所使用编译器的版本,和官方提供的工具链一致,而且是musl版本的。

在主机上建立一个env.sh文件,输入如下内容:
HOST_TOOL_PATH=/home/xxx/milk-v/CV180x/host-tools
export PATH="$HOST_TOOL_PATH/gcc/riscv64-linux-x86_64/bin:$HOST_TOOL_PATH/gcc/riscv64-linux-musl-x86_64/bin:$HOST_TOOL_PATH/gcc/riscv64-elf-x86_64/bin:$PATH"
(左右移动查看全部内容)
然后在主机的命令行执行source env.sh以设置环境变量。
......略
演示结果:

>>>点此查看全文
3、RoboMaster机器人装甲板的识别
上次我们介绍了OpenCV图像处理库的移植,这次我们尝试将RoboMaster机器人装甲板识别的程序移植到板子上,测试开发板的图像处理能力。
装甲板识别算法简介:

装甲板识别的算法已经非常成熟,其基本思想是先利用阈值分割、膨胀等算法对图像中的灯条进行识别,再根据长宽比、面积大小和凸度来筛选灯条,对找出的灯条进行匹配找到合适的配对,并将配对灯条作为候选装甲板,提取其中间的图案判断是否是数字进行筛选。
代码移植注意事项
Milk-V Duo处理板的CPU主频达到1GHz,但是其RAM只有64MB,远少于一般Linux系统,所以在移植程序时必须非常小心内存的占用。我们的程序每次仅处理一帧图像,而且在处理过程中尽量减少对图像的Clone,处理的内存稍微多一点就可能导致程序失败。
在视频处理方面,我们没有采用OpenCV的VideoCapture和VideoWrite类,这两个类的处理都非常耗用内存,再加上我们的视频分辨率较高(1280×1024),处理不了几帧就会出错。我们采用的是将视频以图片序列进行存储,这样可以保障每次处理的内存降到最少。
>>>点此查看全文
4、光感bh1750驱动添加及测试
本章介绍在milkv-duo开发板上添加光感bh1750,并实现应用层测试。
一、电路图查看
1.1 duo开发板i2c引脚:https://github.com/milkv-duo/duo-files

这些都是可以作为i2c使用的引脚:

注意:电路图中的gpio0、1对应的是芯片上的gpio28、29,到dtsi中查看也是28、29。电路图中检索gpio0、1即可找到对应的电路。
如图,小板的gpio0、1的默认功能是IIC_SCL、IIC_SDA

>>>点此查看全文
5、基于Duo开发板的Densenet图像分类
1、实验环境

2、安装Docker
依次执行以下命令即可:
$ sudo apt update
$ sudo apt install ca-certificates curl gnupg lsb-release
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https:
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ curl -fsSL https:
$ sudo sh get-docker.sh
(左右移动查看全部内容)
等待安装结束:

验证docker:sudo docker run hello-world,有如下打印说明安装成功。

3、拉取docker镜像 (方式1、2均可)
1)pull,拉取时长取决于网络环境
$ docker pull sophgo/tpuc_dev:v2.2
(左右移动查看全部内容)
2)导入镜像,云盘下载后导入即可
镜像下载:链接:https://pan.baidu.com/s/1298AU09H0t_w8BHZu7-REQ?pwd=cw8c
提取码:cw8c
复制到虚拟机里,导入:sudo docker load -i tpuc_dev.tar

导入后列出本地列表可以看到框选镜像:

......
测试结果:

>>>点此查看全文