基于Ubuntu20.04詳細(xì)的Duo編譯環(huán)境搭建指南
指南使用Ubuntu 20.04 LTS Server作為系統(tǒng)

1.安裝依賴(lài)
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及以上所以需要自行下載一個(gè)預(yù)編譯的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
你在中國(guó)大陸請(qǐng)使用下面命令進(jìn)行下載
如果repo init報(bào)錯(cuò),需要設(shè)置全局的用戶郵箱與用戶名然后再執(zhí)行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#命令分別為清理編譯打包
每次打包都會(huì)生成一個(gè)新的img,可用使用
rm -rf install/soc_CV1800b_sophpi_duo_sd/*.img*
來(lái)進(jìn)行刪除使用buildroot 作為rootfs
cd buildroot-2021.05/
make cvitek_CV180X_musl_risCV64_defconfig
因?yàn)閏lean_all,你在buildroot目錄下進(jìn)行
make menuconfig
后生成的.config文件并不會(huì)應(yīng)用在實(shí)際的編譯中,可以使用如下命令覆蓋默認(rèn)配置文件
mv configs/cvitek_CV180X_musl_risCV64_defconfig configs/cvitek_CV180X_musl_risCV64_defconfig.bak#先備份下原來(lái)的配置文件mv .config configs/cvitek_CV180X_musl_risCV64_defconfig#替換掉默認(rèn)的defconfig
u-boot的默認(rèn)配置文件:
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的默認(rèn)配置文件:
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
可以參考上面在修改配置后覆蓋默認(rèn)配置文件
如果嫌Linux內(nèi)存太少了,可以修改
build/boards/CV180x/CV1800b_sophpi_duo_sd/memmap.py
文件的第43行的?ION_SIZE
默認(rèn)大小
? ?# =================
? ?# 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,這樣就會(huì)擁有更多的內(nèi)存了,如下修改大約為35M總內(nèi)存,使用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.插電開(kāi)機(jī)
串口引腳需要以??? Duo | Milk-V?34?頁(yè)面上的為準(zhǔn)?請(qǐng)勿相信板子上的絲印
默認(rèn)使用串口0 115200波特率
6.其他
編譯出來(lái)的鏡像位于根目錄的install文件夾下 如
install/soc_CV1800b_sophpi_duo_sd/
如使用Etcher刷寫(xiě)鏡像需要將tar.gz內(nèi)的img解壓出來(lái)后選擇img鏡像,不能直接選擇tar.gz
在根目錄執(zhí)行
menuconfig
可以進(jìn)入SDK的配置頁(yè)面clean_all
會(huì)覆蓋掉uboot與kernel的.config配置,要修改的話先clean在配置在buildroot目錄下
make menuconfig
可以進(jìn)入build root的配置頁(yè)面