Milkv duo的github源代码仓库-配置修改保存

随着DUO256M逐渐大家都拿到了,看到有些朋友需要自己修改镜像,就分享一些基础的配置修改及保存方法,请自行勘误

一键编译

执行一键编译脚本build_milkv.sh

cd duo-buildroot-sdk/
./build.sh

会看到编译脚本的使用方法提示:

 ./build.sh
Usage:
./build.sh              - Show this menu
./build.sh lunch        - Select a board to build
./build.sh [board]      - Build [board] directly, supported boards asfollows:
milkv-duo
milkv-duo-python
milkv-duo256m
milkv-duo256m-python

最下边列出的是当前支持的目标版本列表,带 python 后缀的包含 python,pip, pinpong库。

如提示中所示,有两种方法来编译目录版本。

第一种方法是执行 ./build.sh lunch 调出交互菜单,选择要编译的版本序号,回车:

./build.sh lunch
Select a target to build:
1. milkv-duo
2. milkv-duo-python
3. milkv-duo256m
4. milkv-duo256m-python

Which would you like:
第二种方法是脚本后面带上目标版本的名字,直接一键编译,比如需要编译 Duo 带 python 和 pinpong 库的的镜像,命令如下:

./build.sh milkv-duo-python

编译成功后可以在 out 目录下看到生成的SD卡烧录镜像 milkv-duo-python--.img
编译成功后可以在out目录下看到生成的SD卡烧录镜像milkv-duo-XXX.img

分步编译、灵活编译

手动修改编译部分功能。

  • 前置环境使能

进入到SDK目录下,打开shell依次输入以下命令,即可环境使能

source device/[board]/boardconfig.sh
source build/milkvsetup.sh
[board]                    [config]
milkv-duo               cv1800b_milkv_duo_sd
milkv-duo-python        cv1800b_milkv_duo_sd
milkv-duo256m           cv1812cp_milkv_duo256m_sd
milkv-duo256m-python    cv1812cp_milkv_duo256m_sd

注:以上信息来源于仓库根目录readme,请先查阅

  • 板级配置

1.SDK根目录下输入下列命令,可进行板级配置。

defconfig cv1800b_milkv_duo_sd

2.板级配置文件路径被保存于:
duo-buildroot-sdk/build/boards/cv180x/cv1800b_milkv_duo_sd/cv1800b_milkv_duo_sd_defconfig

menuconfig

3.输入配置命令后,进入图形化配置界面,可对板级配置项进行配置

4.配置完毕保存更新,更新设置后的配置文件会被保存在./build/.config,同时生成.defconfig文件。
注:ESC可取消配置,返回shell。

执行
cp .defconfig build/boards/cv180x/cv1800b_milkv_duo_sd/linux/cvitek_cv1800b_milkv_duo_sd_defconfig 可覆盖保存更新原配置文件。

  • kernel配置

1.SDK根目录下输入下列命令,可进行Liunx kernel配置

menuconfig_kernel

其背后命令实现是配置好环境后执行make kernel-menuconfig,具体可查看milkvsetup.sh文件对应部分。直接使用封好的命令更方便。

内核的配置文件保存路径:
duo-buildroot-sdk/build/boards/cv180x/cv1800b_milkv_duo_sd/linux/cvitek_cv1800b_milkv_duo_sd_defconfig

2.输入配置命令后,进入图形化配置界面,可对Liunx kernel配置项进行配置

4.配置完毕保存,更新生成配置文件存储路径:linux_5.10/build/cv1800b_milkv_duo_sd/.config(defconfig)。
注:ESC可取消配置,返回shell。
特别注意:需要在linux_5.10/build/cv1800b_milkv_duo_sd目录下才可以执行make savedefconfig 生成defconfg文件。

执行cp linux_5.10/build/cv1800b_milkv_duo_sd/defconfig build/boards/cv180x/cv1800b_milkv_duo_sd/linux/cvitek_cv1800b_milkv_duo_sd_defconfig保存更新覆盖原配置文件。有些朋友没有做该步骤,所以一键编译发现刚修改的配置丢失不生效。

6.注意!!!如果要修改dts文件的话,板级.dts文件被保存在:build/boards/cv180x/cv1800b_milkv_duo_sd/dts_riscv,与uboot共用。

7.执行以下命令即可完成单独Linux kernel编译

build_kernel

完成后会生成 boot.xx

  • buildroot配置

在SDK/buildroot-2021.05/目录下执行以下命令,可进行buildroot配置

1.执行下列命令,将在buildroot-2021.05/目录下生成.config配置文件

make milkv_duo_musl_riscv64_defconfig

先根据默认配置文件生成.config配置文件,其储存路径为:
buildroot-2021.05/configs/milkv_duo_musl_riscv64_defconfig

命令执行成功将输出

2.执行下列命令,进入图形化配置界面配置

make menuconfig

成功将进入下图所示界面

3.修改完成后,保存。

由于build options下保存路径也被配置,执行下列命令,将配置文件.config保存至buildroot-2021.05/configs/下覆盖更新milkv_duo_musl_riscv64_defconfig

make savedefconfig

  • u-boot配置

其配置文件储存路径为:
duo-buildroot-sdk/build/boards/cv180x/cv1800b_milkv_duo_sd/u-boot/cvitek_cv1800b_milkv_duo_sd_defconfig,并没有存储在duo-buildroot-sdk/u-boot-2021.10/configs/

执行以下命令即可配置uboot

menuconfig_uboot

该命令背后实现是使能环境,并且执行make u-boot-menuconfig,具体实现参考milkvsetup.sh,使用已封好的命令更方便,不再使用原始命令。

2.退出后配置文件被保存在:
duo-buildroot-sdk/u-boot-2021.10/build/cv1800b_milkv_duo_sd/.config

执行cp u-boot-2021.10/build/cv1800b_milkv_duo_sd/.config build/boards/cv180x/cv1800b_milkv_duo_sd/u-boot/cvitek_cv1800b_milkv_duo_sd_defconfig可进行配置更新覆盖。

3.执行以下命令即可完成单独uboot编译

build_uboot

CV180X/ CV181X C906 采用 FSBL+OPENSBI+UBOOT 架构,最后打包后也复用 (FIP) 文件名,完成后会生成 fip.bin。

注意:

uboot和kernel复用dts

cvi_board_init.c 可以做初始化管脚配置

源码结构:

  • middleware编译

build_middleware
pack_rootfs

重新编译 middleware 及 system 生成的 Install/PROJECT_NAME/system.* 包含最新的 middleware

build_middleware 会针对 Sensor driver(位于 middleware/component/isp/ 下)以及 sample application(位于 middleware/sample/下)重新编译,末了 pack_rootfs 会将变更后的 driver 以及 application 包装成可烧录文件。

  • 编译&打包

依次执行以下命令

clean_all
build_all
pack_sd_image

生成的固件位置: install/soc_cv1800b_milkv_duo_sd/milkv-duo.img

还可以执行下面的命令完成不同的操作,具体可以查看脚本文件实现了解具体功能

build_fsbl
​
clean_fsbl
​
build_fip_pre
​
build_rtos
​
clean_rtos
​
menuconfig_uboot
​
build_uboot
​
clean_uboot
​
menuconfig_kernel
​
build_kernel
​
clean_kernel
​
build_middleware
​
clean_middleware
​
build_all
​
clean_all

烧录

· FIP : Bootloader/U-Boot 分区

· CV180X/ CV181X C906 采用 FSBL+OPENSBI+UBOOT 架构,最后打包后也复用 (FIP) 文件。

· BOOT : Partition for Linux Kernel 分区

· MISC : Boot Logo 分区(NOR、NAND、eMMC启动等用到)

· ROOTFS : root file system 分区

· SYSTEM: CVITEK libraries 所在分区(NOR、NAND、eMMC启动等用到)

· DATA : 使用这资料分区(NOR、NAND、eMMC启动等用到)

布局修改

build/boards/cv180x/cv1800b_milkv_duo_sd/partition/partition_sd.xml可进行调整修改

SD卡烧录 注意: 将镜像写入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

3 Likes

收藏一下,没玩的操作,也来试试。

原来 64m 的镜像不用丢,只要升级和更换内核一般就能用