基于Ubuntu20.04详细的Duo编译环境搭建指南
指南使用Ubuntu 20.04 LTS Server作为系统

1.安装依赖
sudo apt install dialog python3-dev make git bc gcc flex bison ninja-build libssl-dev rsync pkg-config device-tree-compiler squashfs-tools parted dosfstools cpio unzip wget libncurses-dev
2.安装Cmake
Apt自带的Cmake版本为3.16.3,SDK要求为3.16.5及以上所以需要自行下载一个预编译的Cmake
wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz
tar -zxvf cmake-3.19.3-Linux-x86_64.tar.gz
sudo mv cmake-3.19.3-Linux-x86_64 /usr/bin/echo 'export PATH="/usr/bin/cmake-3.19.3-Linux-x86_64/bin:$PATH"' >> ~/.bashrcsource ~/.bashrc
3.获取SDK
mkdir duo && cd duo
curl https://storage.googleapis.com/git-repo-downloads/repo > repochmod a+rx repo
./repo init -u https://github.com/milk-v/duo-manifest.git -b main -m milk-v_duo_CV180xb_sdk.xml
./repo sync
你在中国大陆请使用下面命令进行下载
如果repo init报错,需要设置全局的用户邮箱与用户名然后再执行repo init即可
git config --global url."https://hub.fgit.ml/".insteadOf "https://github.com/"mkdir duo && cd duo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repochmod +x repoexport REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'./repo init -u https://hub.fgit.ml/milk-v/duo-manifest.git -b main -m milk-v_duo_CV180xb_sdk.xml
./repo sync
4.编译
source build/cvisetup.sh
defconfig CV1800b_sophpi_duo_sd
clean_all && build_all && pack_sd_image#命令分别为清理编译打包
每次打包都会生成一个新的img,可用使用
rm -rf install/soc_CV1800b_sophpi_duo_sd/*.img*
来进行删除使用buildroot 作为rootfs
cd buildroot-2021.05/
make cvitek_CV180X_musl_risCV64_defconfig
因为clean_all,你在buildroot目录下进行
make menuconfig
后生成的.config文件并不会应用在实际的编译中,可以使用如下命令覆盖默认配置文件
mv configs/cvitek_CV180X_musl_risCV64_defconfig configs/cvitek_CV180X_musl_risCV64_defconfig.bak#先备份下原来的配置文件mv .config configs/cvitek_CV180X_musl_risCV64_defconfig#替换掉默认的defconfig
u-boot的默认配置文件:
build/boards/CV180x/CV1800b_sophpi_duo_sd/linux/cvitek_CV1800b_sophpi_duo_sd_defconfig
menuconfig_uboot后修改的配置文件:
u-boot-2021.10/build/CV1800b_sophpi_duo_sd/.config
u-boot的默认配置文件:
build/boards/CV180x/CV1800b_sophpi_duo_sd/u-boot/cvitek_CV1800b_sophpi_duo_sd_defconfig
menuconfig_kernel后修改的配置文件:
linux_5.10/build/CV1800b_sophpi_duo_sd/.config
可以参考上面在修改配置后覆盖默认配置文件
如果嫌Linux内存太少了,可以修改
build/boards/CV180x/CV1800b_sophpi_duo_sd/memmap.py
文件的第43行的ION_SIZE
默认大小
# =================
# Multimedia buffer. Used by u-boot/kernel/FreeRTOS
# =================
ION_SIZE = 26.80078125 * SIZE_1M H26X_BITSTREAM_SIZE = 0 * SIZE_1M H26X_ENC_BUFF_SIZE = 0
可以修改为4M,这样就会拥有更多的内存了,如下修改大约为35M总内存,使用Buildroot作为Rootfs可用约为17M
# =================
# Multimedia buffer. Used by u-boot/kernel/FreeRTOS
# =================
ION_SIZE = 4 * SIZE_1M H26X_BITSTREAM_SIZE = 0 * SIZE_1M H26X_ENC_BUFF_SIZE = 0
然后在重新编译一遍即可生效
5.插电开机
串口引脚需要以 🍐 Duo | Milk-V 34 页面上的为准 请勿相信板子上的丝印
默认使用串口0 115200波特率
6.其他
编译出来的镜像位于根目录的install文件夹下 如
install/soc_CV1800b_sophpi_duo_sd/
如使用Etcher刷写镜像需要将tar.gz内的img解压出来后选择img镜像,不能直接选择tar.gz
在根目录执行
menuconfig
可以进入SDK的配置页面clean_all
会覆盖掉uboot与kernel的.config配置,要修改的话先clean在配置在buildroot目录下
make menuconfig
可以进入build root的配置页面