跳到主要内容
XROBOTLIBXR

同一份模块代码,在不同的硬件和系统上运行

LibXR 是跨平台的 C++ 兼容层,包含外设驱动、数据结构、通信中间件、操作系统封装与数学工具,以及 USB 协议栈 XRUSB。

CodeGenerator 和 XRobot 是配合 LibXR 使用的两个命令行工具:CodeGenerator 由 STM32CubeMX 工程生成外设对象和入口函数 app_main,XRobot 负责拉取模块、把每个模块锁定到具体的提交,并根据配置生成主函数 XRobotMain。

动画
LIBXRWEBASSEMBLYTERMINAL

LibXR 的命令行终端在浏览器中运行

这里的终端是 LibXR 编译成 WebAssembly 后在浏览器中运行的程序。Terminal 提供行编辑、历史记录和路径补全,按路径运行 RamFS 中的命令。

在单片机上,同一个 Terminal 通过串口或 USB 虚拟串口提供命令行。

TerminalRamFSWebAssembly
LIBXRUARTREADPORT

串口接收:硬件持续写入,软件按需读取

MCU 上的串口驱动让接收 DMA 一直运行。中断根据 DMA 的写指针算出新增的字节,用 PushBatch 写入 ReadPort 的环形队列 SPSCQueue,再调用 Publish() 完成挂起的读请求。

接收路径中没有停下 DMA 再重新启动的一步,软件只负责追赶硬件的写指针。

ReadPortSPSCQueueDMA
LIBXRMESSAGETOPIC

Topic:精确类型的发布订阅

Topic 是进程内、精确类型的发布订阅通道。发布时同步分发给已注册的订阅者,订阅者以同步、异步、队列或回调四种方式之一接收。

Linux 上的 LinuxSharedTopic 把数据放在共享内存的槽位中,订阅者通过描述符读取同一块内存,进程之间不复制数据。

TopicLinuxSharedTopic
XROBOTMODULESCI

模块的拉取、锁定与主函数生成

BSP 在 Modules/modules.yaml 中列出需要的模块。xrobot setup 拉取模块并把每个模块锁定到 xrobot.lock 中的具体提交,xrobot gen 根据 User/ 下的配置生成主函数 XRobotMain。

STM32 BSP 的 CI 调用共享工作流:检查生成的文件与提交一致,构建每份配置,并在推送到 master、打 v* tag 或发布 Release 时上传固件。

xrobot.lockXRobotMainCI
LIBXRXRUSBDAP

XRUSB:设备侧 USB 协议栈与调试接口

XRUSB 是 LibXR 中的 USB 设备协议栈,提供 CDC、HID、UAC、GSUSB、CMSIS-DAP v1/v2 和 DFU 等设备类,一个设备可以同时包含多个设备类。

调试接口部分用 GPIO 时序实现 SWD 与 JTAG,DAPLink 设备类通过它们访问目标芯片,例如读取 DP 的 IDCODE。

CDCDAPLinkDFUSWD
XROBOTMODULESROBOTS

由模块组成的机器人

官方模块源包含 IMU、磁力计、气压计、光流、激光测距、灰度循迹、遥控接收、显示屏和姿态解算等模块。

一份配置选择模块并填写参数,xrobot gen 由它生成一台机器人的主函数;不同的配置组成不同机器人的固件。

ModuleBSP
DOCS

按工程类型进入文档

四个入口对应四类工程;场景列表给出常见任务的起点。

DOCSBASELINE

文档基线

本文档对应的 xrobot、libxr 发布版本与 LibXR 提交。

xrobot
1.0.1
libxr (CodeGenerator)
6.0.1
LibXR master
5161373

近期动态

  • XRobot 1.0XRobot 1.0 由配置静态生成主函数入口源文件用 XR_REGISTER 注册硬件,xrobot gen 生成按配置顺序构造实例的 XRobotMain。
  • Platform平台驱动覆盖 STM32、CH32、ESP32、HPM、MSPM0、Linux、Webots 和 WebAssembly各平台驱动位于 LibXR 的 driver 目录下,每个平台一个子目录。
  • XRUSBXRUSB 提供 CDC、DAP、DFU、GSUSB、HID、UAC 设备类文档按设备类分页说明。
  • Debug调试链路支持 SWD 与 JTAG包括用 GPIO 时序实现的 SWD 与 JTAG,以及 CMSIS-DAP v1/v2 设备类。
COMMUNITY

上手与参与

ONBOARDING

新手任务引导

按平台给出起步路径,逐步介绍 XRobot 与 LibXR 的设计思想和基本写法。

AGENT

Agent 快速部署

一页启动上下文:编程助手先判断仓库属于 XRobot BSP、平台工程还是驱动工程,再进入对应的文档和代码。

XRobot is all you need