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

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” 章节。

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

BSP :7.2.1 开发环境搭建及编译说明 | RDK S100/S600 DOC

你好,@TonyYan!

关于 S100 使用 Docker 进行编译的问题,社区已有明确方案和官方文档支持。核心结论如下:

:white_check_mark: 核心结论

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

但需区分编译对象:

  1. 上层 ROS/TROS 应用:完全支持 Docker,这是官方推荐的标准开发流程(在 PC x86 环境交叉编译)。
  2. Bootloader / Kernel:官方文档未提供 Docker 镜像,通常建议在 Ubuntu 主机直接搭建环境编译,或自行封装 Docker。

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

这是最成熟、文档最全的部分。官方提供了预置好工具链的 Docker 镜像。

:pushpin: 操作步骤(基于最新文档 v4.0.5)

第一步:下载并加载 Docker 镜像

根据你的 Ubuntu 版本选择镜像:

# Ubuntu 22.04 主机
wget http://archive.d-robotics.cc/TogetheROS/cross_compile_docker/pc_tros_ubuntu22.04_v1.0.0.tar.gz
sudo docker load --input pc_tros_ubuntu22.04_v1.0.0.tar.gz

# Ubuntu 24.04 主机 (Jazzy)
wget http://archive.d-robotics.cc/TogetheROS/cross_compile_docker/pc_tros_ubuntu24.04_v1.0.1.tar.gz
sudo docker load --input pc_tros_ubuntu24.04_v1.0.1.tar.gz

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

# 启动容器,挂载本地工作目录
sudo docker run -it --entrypoint="/bin/bash" \
  -v ~/s100_ws:/mnt/ws \
  <IMAGE_ID>  # 替换为 docker images 查到的实际 ID

# --- 以下在容器内执行 ---
cd /mnt/ws
mkdir -p tros_ws/src
cd tros_ws

# 获取编译配置 (S100 通常使用 develop 或 jazzy 分支)
git clone https://github.com/D-Robotics/robot_dev_config.git -b develop

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

第三步:执行交叉编译

# 在容器内的 /mnt/ws/tros_ws 目录下
bash ./robot_dev_config/build.sh -p S100

编译产物在 install 目录,拷贝到 S100 的 /opt/tros 即可使用。

:open_book: 完整文档: TROS 交叉编译指南


2. Bootloader / Kernel 编译 :warning:

这部分属于系统底层开发,官方目前未提供专用的 Docker 镜像。

  • 现状:Bootloader (U-Boot) 和 Kernel 编译依赖特定的 BSP SDK,通常需要在 Ubuntu 主机上直接安装交叉编译工具链(如 gcc-aarch64-linux-gnu)。
  • 建议方案:
    1. 首选:按照官方 BSP 文档在 Ubuntu 主机搭建环境编译。
    2. 进阶:如果你熟悉 Docker,可以自行构建包含底层工具链的镜像(基于 Ubuntu + 交叉编译工具链 + SDK 源码),但这需要你自己维护镜像。
    3. 社区参考:

3. 板端运行 Docker(非编译)

如果你是想在 S100 板子上跑 Docker 容器(部署应用):

  • 可行,但必须使用 ARM64 架构 的基础镜像(如 arm64v8/ubuntu)。
  • 关键点:需映射 BPU 设备节点(--privileged 或 -v /dev/bpu:/dev/bpu)。
  • :open_book: 参考讨论:s100 开发板能用 docker 部署 ros2 么

总结建议

编译对象 是否推荐 Docker 说明
TROS/ROS 应用 :white_check_mark: 强烈推荐 官方提供镜像,环境隔离,避免污染主机
Bootloader/Kernel :cross_mark: 不推荐 官方无现成镜像,建议直接在 Ubuntu 主机编译
板端部署运行 :warning: 可行 需 ARM64 镜像,注意设备映射和性能开销

建议先按官方文档完成 TROS 应用的 Docker 交叉编译流程,底层编译如有需要再单独搭建环境。遇到具体报错欢迎贴日志!