集成构建流程之根文件系统Buidroot

2024-05-24 07:20

本文主要是介绍集成构建流程之根文件系统Buidroot,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编译流程

单板信息

#---- device/milkv-duos-sd/boardconfig.sh
export MV_BOARD=milkv-duos-sd
export MV_BOARD_CPU=cv1813h
export MV_VENDOR=milkv
export MV_BUILD_ENV=milkvsetup.sh
export MV_BOARD_LINK=cv1813h_milkv_duos_sd 

通用编译脚本:build.sh

#---- build.sh
...
get_available_board              	# 查看device目录下支持的单板MILKV_BOARD_ARRAY=( $(find device ... # 收集所有单板到数组MILKV_BOARD_ARRAY中...if [ $# -ge 1 ]; thenif [ "$1" = "lunch" ]; then		# 脚本参数为lunch时,执行lunch动作choose_board || exit 0			...read -p "Which would you like: " index	# 手动选择目标单板if [[ -n $index && $index =~ ^[0-9]+$ && $index -ge 1 && $index -le $MILKV_BOARD_ARRAY_LEN ]]; thenMILKV_BOARD="${MILKV_BOARD_ARRAY[$((index - 1))]}"    	# 确认目标单板elseif [[ ${MILKV_BOARD_ARRAY[@]} =~ (^|[[:space:]])"${1}"($|[[:space:]]) ]]; then	# 检索数据MILKV_BOARD_ARRAY,查找匹配的单板MILKV_BOARD=${1}				# 确认目标单板
...									# 其他参数检查MILKV_BOARD_CONFIG=device/${MILKV_BOARD}/boardconfig.sh	# 单板配置文件get_toolchainif [ ! -d host-tools ]; then    	# 如果不存在host-tools目录,下载相关工具链toolchain_url="https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz"wget ${toolchain_url} -O ${toolchain_file}export MILKV_BOARD="${MILKV_BOARD}"prepare_envsource ${MILKV_BOARD_CONFIG}							# 加载单板配置脚本,Duo S为:device/milkv-duos-sd/boardconfig.shsource build/${MV_BUILD_ENV} > /dev/null 2>&1         # 加载环境变量配置脚本: build/milkvsetup.shdefconfig ${MV_BOARD_LINK} > /dev/null 2>&1			# 加载单板配置文件,Duo S为:build/boards/cv181x/cv1813h_milkv_duos_sd/cv1813h_milkv_duos_sd_defconfig#   含Buildroot相关信息,文件:build/common_functions.sh
build_info
milkv_build										# 编译过程clean_allbuild_all										#   完整编译
milkv_pack

通用shell函数定义脚本

#---- build/common_functions.sh
function defconfig()		# defconfig依据单板配置文件推导出.config文件board=$1chip_arch=`"${BUILD_PATH}/scripts/boards_scan.py" --get-chip-arch --board_name ${board}`# if input is chip series, then list boards by chip seriesif [ "${chip_arch}" != "" ]; then_call_kconfig_script "${FUNCNAME[0]}" "${BUILD_PATH}/boards/${chip_arch}/${board}/${board}_defconfig"script=$1shift    cd $BUILD_PATH || return${BUILD_PATH}/scripts/${script}.py $@			# 生成.config文件,对Duo S为:build/scripts/defconfig.py build/.../cv1813h_milkv_duos_sd_defconfig    cvi_setup_env || return $?					# Buildroot配置,文件:build/milkvsetup.shfunction pack_rootfs		# 打包根文件系统,含根文件系统Buildroot的编译...cd "$BUILD_PATH" || returnmake rootfs										# 执行make操作,编译Buildroot,查看文件:build/Makefile

通用环境变量配置脚本

#---- build/milkvsetup.sh
function cvi_setup_env()		# 环境变量设置,截取Buidroot相关...# buildroot configexport BR_DIR="$TOP_DIR"/buildroot-2021.05export BR_BOARD=${MV_BOARD}_${SDK_VER}export BR_OVERLAY_DIR=${BR_DIR}/board/${MV_VENDOR}/${MV_BOARD}/overlayexport BR_DEFCONFIG=${BR_BOARD}_defconfig            	# Buildroot配置文件export BR_ROOTFS_DIR="$OUTPUT_DIR"/tmp-rootfsexport BR_MV_VENDOR_DIR=${BR_DIR}/board/${MV_VENDOR} function build_all()			# 完整编译build_uboot  || return $?build_kernel || return $?build_osdrv  || return $?build_middleware              || return $?pack_access_guard_turnkey_app || return $?pack_ipc_turnkey_app          || return $?pack_boot   || return $?pack_cfg    || return $?pack_rootfs || return $?						# 打包根文件系统pack_datapack_system || return $?copy_toolspack_upgrade

执行make,Makefile文件为:build/Makefile

#---- build/Makefile
...
br-rootfs-pack: export TARGET_OUTPUT_DIR=$(BR_DIR)/output/$(BR_BOARD)
br-rootfs-pack:$(call print_target)${Q}$(MAKE) -C $(BR_DIR) $(BR_DEFCONFIG) BR2_TOOLCHAIN_EXTERNAL_PATH=$(CROSS_COMPILE_PATH)	// 配置文件,Duo S为:milkv-duos-sd_musl_riscv64_defconfig${Q}$(BR_DIR)/utils/brmake -j${NPROC} -C $(BR_DIR)											// brmake工具执行编译...

这篇关于集成构建流程之根文件系统Buidroot的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997749

相关文章

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事