使用 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
相关推荐
摇滚侠20 小时前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 19-25
java·云原生·kubernetes
我叫张小白。1 天前
一个微服务电商+社区项目(瓷韵app)的技术深度复盘
docker·微服务·云原生·架构
咕噜咕噜的猪大侠1 天前
《K8s 核心知识梳理:Deployment 滚动更新、JobCronJob、DaemonSet 和 Service》
云原生·容器·kubernetes
虚心的百褶裙1 天前
远程调用服务架构设计及zookeeper技术详解(下篇)
分布式·zookeeper·云原生
Geek-Chow1 天前
微服务认证与授权:08 — OPA(PDP)
微服务·云原生·架构
阿标在干嘛1 天前
100+微服务的统一出入口:政策快报平台的API网关设计
微服务·云原生·架构
摇滚侠1 天前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 26-40
java·云原生·kubernetes
极***技1 天前
2026云原生核心!Go高并发限流实战,从原理到落地
开发语言·云原生·golang
诚信定制8392 天前
2025年CSDN年度技术趋势预测:AI、云原生与开发者工具的未来
人工智能·云原生
Waay2 天前
面试口述版:个人对 Prometheus 完整理解
运维·学习·云原生·面试·职场和发展·kubernetes·prometheus