English | 简体中文
Milk-V Duo是一个基于CV1800B芯片的超紧凑嵌入式开发平台。它可以运行Linux和RTOS,为专业人士、工业ODM厂商、AIoT爱好者、DIY爱好者和创作者提供了一个可靠、低成本和高性能的平台。
- 处理器: CVITEK CV1800B (C906@1Ghz + C906@700MHz)
- 内存: 64MB
- 网口: 10/100Mbps 以太网 (需外接扩展板)
├── build // 编译目录,存放编译脚本以及各board差异化配置
├── build_milkv.sh // Milk-V Duo 一键编译脚本
├── buildroot-2021.05 // buildroot开源工具
├── freertos // freertos系统
├── fsbl // fsbl启动固件,prebuilt形式存在
├── install // 执行一次完整编译后,临时存放各image路径
├── isp_tuning // 图像效果调试参数存放路径
├── linux_5.10 // 开源linux内核
├── middleware // 自研多媒体框架,包含so与ko
├── milkv // 存放 Milk-V Duo 相关配置及脚本文件的目录
├── opensbi // 开源opensbi库
├── out // Milk-V Duo 最终生成的SD卡烧录镜像所在目录
├── ramdisk // 存放最小文件系统的prebuilt目录
└── u-boot-2021.10 // 开源uboot代码
- 使用本地的Ubuntu系统,推荐
Ubuntu 20.04 LTS
(也可以使用虚拟机中的Ubuntu系统、Windows中WSL安装的Ubuntu、基于Docker的Ubuntu系统) - 安装串口工具:
mobarXterm
或者Xshell
或者其他。
安装编译依赖的工具:
sudo apt install -y pkg-config build-essential ninja-build automake autoconf libtool wget curl git gcc libssl-dev bc slib squashfs-tools android-sdk-libsparse-utils jq python3-distutils scons parallel tree python3-dev python3-pip device-tree-compiler ssh cpio fakeroot libncurses5 flex bison libncurses5-dev genext2fs rsync unzip dosfstools mtools tclsh ssh-client android-sdk-ext4-utils
注意:cmake
版本最低要求 3.16.5
查看系统中 cmake
的版本号
cmake --version
当前Ubuntu 20.04
中用 apt 安装的 cmake 版本号为
cmake version 3.16.3
不满足此SDK最低要求,需要手动安装目前最新的3.27.6
版本
wget https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-x86_64.sh
chmod +x cmake-3.27.6-linux-x86_64.sh
sudo sh cmake-3.27.6-linux-x86_64.sh --skip-license --prefix=/usr/local/
手动安装的cmake
在/usr/local/bin
中,此时用cmake --version
命令查看其版本号, 应为
cmake version 3.27.6
安装编译依赖的工具:
sudo apt install -y pkg-config build-essential ninja-build automake autoconf libtool wget curl git gcc libssl-dev bc slib squashfs-tools android-sdk-libsparse-utils jq python3-distutils scons parallel tree python3-dev python3-pip device-tree-compiler ssh cpio fakeroot libncurses5 flex bison libncurses5-dev genext2fs rsync unzip dosfstools mtools tcl openssh-client cmake
另外,SDK中的mkimage命令依赖的libssl1.1
,在 Ubuntu22.04 中已弃用,需要手动安装,以下两种方法都可以
-
补源安装
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list sudo apt update sudo apt install libssl1.1
-
手动下载deb包安装
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.19_amd64.deb sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.19_amd64.deb
git clone https://github.com/milkv-duo/duo-buildroot-sdk.git --depth=1
- 执行一键编译脚本
build_milkv.sh
cd duo-buildroot-sdk/
./build_milkv.sh
- 编译成功后可以在
out
目录下看到生成的SD卡烧录镜像milkv-duo-*-*.img
。
注: 第一次编译会自动下载所需的工具链,大小为 840M 左右,下载完会自动解压到 SDK 目录下的host-tools
目录,下次编译时检测到已存在host-tools
目录,就不会再次下载了
可依次输入如下命令
export MILKV_BOARD=milkv-duo
source milkv/boardconfig-milkv-duo.sh
source build/milkvsetup.sh
defconfig cv1800b_milkv_duo_sd
clean_all
build_all
pack_sd_image
生成的固件位置: install/soc_cv1800b_milkv_duo_sd/milkv-duo.img
注意: 将镜像写入TF卡会擦除卡中原有数据,记得在烧录前备份重要的数据!!!
- Window下使用
balenaEtcher
或者Rufus
或者Win32 Disk Imager
等工具将生成的镜像写入TF卡中 - Linux下使用
dd
命令将生成的镜像写入TF卡中,请务必仔细确认of
设备/dev/sdX
为要烧录的TF卡sudo dd if=milkv-duo-XXX.img of=/dev/sdX
- 将烧录好镜像的TF卡插入 Milk-V Duo 的TF卡槽中
- 接好串口线(可选)
- 将平台上电,Duo会正常开机进入系统
- 如有接串口线,在串口工具中可以看到开机日志,进系统后可通过串口登入终端,执行Linux下的相关命令
- 通过串口线
- 通过USB网卡(RNDIS)方式
- 通过以太网接口(需要扩展板支持)
登陆Duo终端的用户名和密码分别为
root
milkv
上电后 LED 会自动闪烁,这个是通过开机脚本实现的,如果需要禁用 LED 闪烁功能,在 Duo 的终端中执行:
mv /mnt/system/blink.sh /mnt/system/blink.sh_backup && sync
也就是将 LED 闪烁脚本改名,重启 Duo 后,LED 就不闪了
如果需要恢复 LED 闪烁,再将其名字改回来,重启即可
mv /mnt/system/blink.sh_backup /mnt/system/blink.sh && sync
注意,使用 IO Board 底板时,USB网卡(RNDIS)不可用,如需使用网络功能,请使用底板上的以太网接口
使用底板上的4个USB口,需要修改一下配置,将默认固件中的usb-rndis
功能修改为usb-host
rm /mnt/system/usb.sh
ln -s /mnt/system/usb-host.sh /mnt/system/usb.sh
sync
修改完,重启或重新上电即可生效
比如底板USB口接入U盘后,可以用ls /dev/sd*
查看是否有检测到设备
挂载到系统中查看U盘中的内容(以/dev/sda1为例):
mkdir /mnt/udisk
mount /dev/sda1 /mnt/udisk
查看/mnt/udisk
目录中的内容是否符合预期
ls /mnt/udisk
卸载U盘的命令
umount /mnt/udisk
不使用底板时,恢复USB网卡(RNDIS)的方法
rm /mnt/system/usb.sh
ln -s /mnt/system/usb-rndis.sh /mnt/system/usb.sh
sync
修改完,需要重启或重新上电生效
-
为什么只显示单核?
CV1800B芯片采用双核设计,当前Linux系统运行在其中的一个核上,另外一个核用来运行实时系统,这个核的SDK尚未公布,待后续更新
-
为什么查看RAM只显示28M?
因为有一部分RAM被分配绐了 ION,是在使用摄像头跑算法时需要占用的内存。如果不使用摄像头,您可以修改这个 ION_SIZE 的值为
0
然后重新编译生成固件。
-
CV181x/CV180x MMF SDK 开发文档汇总:CV181x/CV180x MMF SDK 开发文档汇总
-
CV系列芯片 TPU SDK 开发资料汇总:CV系列芯片 TPU SDK 开发资料汇总