S100能用docker的方式来编译吗,这一块有什么介绍文档吗,包括bootloader/kernel的编译,以及上层ros应用的编译

我来帮你搜索一下 S100 Docker 编译相关的社区资源。

你好,@TonyYan!关于 S100 使用 Docker 进行编译的问题,社区已有相关讨论和官方文档支持。

核心结论

可以,官方推荐使用 Docker 进行 S100 的交叉编译。

Docker 环境主要用于 PC 端(x86 架构) 进行 交叉编译,而不是直接在 S100 板子上编译。这适用于 TROS 应用开发。对于 Bootloader 和 Kernel 的编译,通常有独立的工具链和流程,Docker 主要用于上层应用(TROS/ROS)的构建。


1. TROS/ROS 应用编译(Docker 方式)

这是官方推荐的标准流程,用于在 PC 上交叉编译 S100 可运行的 TROS 应用。

:white_check_mark: 操作步骤

第一步:准备 Docker 环境

# 1. 创建工作目录
mkdir -p ~/s100_build_ws
cd ~/s100_build_ws

# 2. 下载官方提供的 S100 交叉编译 Docker 镜像
# 注意:请根据官方文档确认最新镜像地址,以下为示例
wget http://archive.d-robotics.cc/TogetheROS/cross_compile_docker/pc_tros_ubuntu22.04_v1.0.0.tar.gz

# 3. 加载镜像
sudo docker load --input pc_tros_ubuntu22.04_v1.0.0.tar.gz

# 4. 查看镜像 ID
sudo docker images | grep pc_tros

第二步:启动容器并获取源码

# 1. 启动容器,挂载本地目录
# 将 <IMAGE_ID> 替换为上一步查到的实际镜像 ID
sudo docker run -it --entrypoint="/bin/bash" \
  -v ~/s100_build_ws:/mnt/ws \
  <IMAGE_ID>

# 2. 在容器内操作 (以下命令在容器内执行)
cd /mnt/ws

# 3. 创建工程目录
mkdir -p tros_ws/src
cd tros_ws

# 4. 获取编译配置文件
git clone https://github.com/D-Robotics/robot_dev_config.git -b develop

# 5. 拉取 TROS 源码
vcs-import src < ./robot_dev_config/ros2_release.repos

第三步:执行交叉编译

# 在容器内的 /mnt/ws/tros_ws 目录下执行
# 指定平台为 S100
bash ./robot_dev_config/build.sh -p S100

编译成功后,install 目录即为可部署到 S100 的产物。

:open_book: 详细文档参考: RDK S100 交叉编译官方文档


2. Bootloader / Kernel 编译

Docker 通常不用于 Bootloader 和 Kernel 的编译。 这部分属于系统底层开发,有独立的 SDK 和编译工具链。

  • 现状: 社区中关于 S100 底层编译的讨论多集中在 SDK 包的使用和烧录,较少提及用 Docker 封装底层编译环境。
  • 建议路径:
    1. 查看 RDK S100 的 SDK 文档,通常提供独立的 build.sh 或 Makefile。
    2. 如果需要隔离环境,可以自行构建包含底层工具链的 Docker 镜像,但官方目前主要提供应用层(TROS)的 Docker 镜像。
    3. 参考社区相关帖子:

3. 板端 Docker 部署(进阶)

如果你是想在 S100 板子上运行 Docker 容器(而不是编译):

  • 结论: 可行,但需注意架构。
  • 要点:
    • S100 是 ARM64 架构,必须使用 arm64v8 基础镜像。
    • 需确保 Docker 容器能访问 BPU 等硬件设备(使用 --privileged 或映射 /dev/bpu)。
    • 参考社区讨论:s100 开发板能用 docker 部署 ros2 么

建议

  1. 应用开发: 直接使用官方提供的 Docker 镜像进行 PC 端交叉编译(如上步骤 1)。
  2. 系统开发(Bootloader/Kernel): 建议先在本地 Ubuntu 环境按照 SDK 文档编译,熟悉流程后再考虑是否容器化。
  3. 文档查阅: 建议优先阅读 RDK DOC 中的 “Robot_development” 章节。

如果有具体的编译报错或环境配置问题,欢迎提供详细日志,我们可以进一步排查。