基于Ubuntu20.04详细的Duo编译环境搭建指南

本指南使用Ubuntu 20.04 LTS Server作为系统

U211)@)(5WGG)R5MU8S%K~R

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"' >> ~/.bashrc
source ~/.bashrc

3.获取SDK

mkdir duo && cd duo
curl https://storage.googleapis.com/git-repo-downloads/repo > repo
chmod 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 repo
chmod +x repo
export 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 页面上的为准 请勿相信板子上的丝印
  • 默认使用串口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的配置页面
2 Likes

感谢你的付出,这能帮到很多人。 :+1:

请把你的收件地址及论坛身份证明信息(可以是登陆后的截图)发送至邮箱:hoka@milkv.io

我会送你一个小礼品。可能会是未发售的扩展板。

Thanks for your dedication, this helps a lot of people.

Please send your recipient address and forum ID information (can be a screenshot after login)

Send it to hoka@milkv.io

I will send you a small gift. It will probably be an unreleased expansion board.

顺带一提,我会将你的帖子翻译成英文,方便更多人检索到你的文章。
Incidentally, I will translate your post into English to make it easier for more people to retrieve your post.

这一段是不是有问题啊?哪个是kernel 的哪个是uboot的?kernel默认的在哪啊?

第一个应该是是内核的默认配置,打错了,现在不能修改了

执行 ./repo sync 的时候一直没有进度,我哭死

上面提到的SDK已不再维护,最新的SDK是这个:

1 Like