使用 Docker 构建 preboot 交叉编译环境

ASR1606/ASR1603 的 preboot 代码需要在 Linux 环境下编译,通常使用 VMware 或者 VirtualBox 软件创建一个 Linux 虚拟机,在虚拟机中做交叉编译。但 preboot 不是那种需要经常编译的代码,完全可以将 preboot 的编译环境制作成 docker 镜像,与虚拟机相比,docker 的启动速度更快,占用资源更少,需要用到的时候创建一个 docker 容器来编译 preboot,非常适合用来做这类偶尔需要用一下的场景。

构建镜像

docker 根据 dockerfile 文件来构建镜像,dockerfile 中的命令描述其实就是搭建交叉编译环境的过程,主要将工具链、编译脚本复制到镜像内并配置好环境变量。

复制代码
FROM ubuntu:latest
LABEL version="1.0.0"
LABEL author="hacper"


RUN apt update && apt install make unzip curl -y &&  mkdir /preboot && mkdir /preboot/src
COPY gcc-arm-none-eabi-9-2019-q4-major.zip /preboot
COPY build_CRANEL.sh /preboot
COPY build_CRANEM.sh /preboot
WORKDIR /preboot
RUN unzip gcc-arm-none-eabi-9-2019-q4-major.zip && rm gcc-arm-none-eabi-9-2019-q4-major.zip
ENV PATH=$PATH:/preboot/gcc-arm-none-eabi-9-2019-q4-major/bin

依赖的工具链 gcc-arm-none-eabi-9-2019-q4-major.zip,需要将其放在根目录。然后执行 docker build 命令构建镜像:

复制代码
docker build -t hacper/preboot_builder:latest .

镜像构建完成之后可以将镜像推送到 docker hub,后面使用的时候直接从 docker hub 拉取构建好的镜像。

复制代码
docker push hacper/preboot_builder

使用

后面使用只需要从 docker hub 拉取镜像:

复制代码
docker pull hacper/preboot_builder

然后创建容器:

复制代码
docker run -v /e/workspace/preboot/preboot_boot2:/preboot/src -it hacper/preboot_builder

/e/workspace/preboot/preboot_boot2 只是示例路径,需要修改为自己电脑上的 preboot 源码路径。preboot_boot2 目录下的 CRANEL、CRANEM 分别放置对应的 preboot 源码,将 preboot_boot2 目录挂载到容器中。

执行编译脚本编译preboot:

复制代码
 ./build_CRANEL.sh
 ./build_CRANEM.sh

生成的镜像分别在路径:

复制代码
preboot_boot2\CRANEL\apps\preboot\bin\crane\preboot.bin


preboot_boot2\CRANEM\apps\preboot\bin\cortexr-arom-crane\preboot.bin
相关推荐
alden_ygq15 分钟前
k8s statefulset pod重启顺序
云原生·容器·kubernetes
bjzhang753 小时前
微服务组件——Eureka组件的安装与使用指南
微服务·eureka
云上艺旅3 小时前
K8S学习之基础七十二:Ingress基于Https代理pod
学习·云原生·容器·https·kubernetes
liux35283 小时前
k8s之Ingress讲解
云原生·容器·kubernetes
阿里云云原生4 小时前
函数计算支持热门 MCP Server 一键部署
云原生
阿里云云原生4 小时前
AI 网关代理 LLMs 最佳实践
云原生
小刘爱喇石( ˝ᗢ̈˝ )7 小时前
玛卡巴卡的k8s知识点问答题(六)
云原生·容器·kubernetes
rider1897 小时前
【1】搭建k8s集群系列(二进制部署)之系统初始化
云原生·容器·kubernetes
阿里云云原生8 小时前
仅3步!即刻拥有 QwQ-32B,性能比肩全球最强开源模型
前端·云原生
小刘爱喇石( ˝ᗢ̈˝ )9 小时前
玛卡巴卡的k8s知识点问答题(七)
云原生·容器·kubernetes