随着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
可覆盖保存更新原配置文件。
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
在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
其配置文件储存路径为:
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 可以做初始化管脚配置
源码结构:
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