KRS Unleashed: 1——开始
扫描二维码
随时随地手机看文章
Kria机器人堆栈(KRS)是由硬件加速工作组(HAWG)开发的机器人操作系统(ROS 2)的超集。它最初是由Xilinx/AMD为他们的Kria SoM系列开发的,通过将他们的Vitis统一工具链集成到ROS 2中,将硬件加速引入机器人生态系统。关于如何使用KRS和FPGA机器人实现第一个项目的文章已经发表,如Whitney Knitter的系列。
然而,最近KRS的发展还远远不够,更复杂的场景还不存在。KRS Unleashed是对原始Kria Robotics Stack (KRS)的架构修订,专注于放松内部组件之间的依赖关系,并提供更精简、更易于扩展的环境。添加了更多的组件来强调这些改进。
我是KRS Unleashed框架的作者,希望使用本系列来记录预期的工作流程。
KRS释放-概述
KRS Unleashed将最初的单一工作空间(很容易上手)分离为3个独立的空间,以方便并行开发:
1. OS(操作系统)工作区
2. KRS/ROS 2工作区
3. Vitis工作区
一般来说,在设计FPGA机器人应用程序时,必须开发和集成许多不同的组件,以形成整个硬件/软件协同设计系统。
操作系统工作空间
由于ROS 2是一个相当广泛的框架,因此需要在主板上支持包括完整网络堆栈在内的操作系统。必须安装ROS 2、FPGA支持和用户应用程序的依赖关系,并针对sysroot创建交叉编译工具链。
Kria SoM的操作系统需要一个可扩展平台设计(XSA)来描述未来硬件加速器、时钟信号等的潜在接口。最初的KRS流依赖于已经基于不可更改的XSA的Ubuntu操作系统。
Ubuntu 22.04和24.04是开发ROS 2的绝佳选择,因为它们也是ROS 2附带的主要发行版,将依赖问题减少到最低限度,并为开发人员提供了一个熟悉的环境。
然而,商业用例可能对基于嵌入式Linux/Petalinux的更复杂的系统感兴趣,以加强系统并减少抖动。类似地,对自定义板和自定义XSA的支持在最初的流程中是有限的。
新的OS工作区包含创建SD卡映像所需的设置,并为交叉编译准备一个系统根环境。原始的Ubuntu流程被提取到一个简单的可调用脚本中。此外,还添加了一个用于Petalinux流的脚本,它需要一个XSA和一个bsp文件。
关于如何使用此流的详细信息将在下一篇文章中提供。
基米-雷克南/ ROS2工作区
该模块主要通过跟踪功能进行了简化和扩展。当前的核心工作区只包含5个包,它们对其他工作区的依赖非常轻。用于构建项目的命令与KRS中的相同,但是它的可配置性更强,以支持更多的固件。删除固件创建和HLS也大大加快了编译时间。
关于KRS工作空间的详细信息将在第3条中提供。
Vitis工作区
Vitis工作区是一个全新的流程,取代了旧的隐式HLS。虽然在ROS 2中直接合成内核乍一看很不错,但开发这样的内核是很棘手的。几乎没有错误反馈,没有有用的测试,语法高亮,…这意味着该流程仅用于在开发后合成已知工作的内核。
相反,我们开发了一个脚本化的Vitis工作区流,它基于新的Vitis Python API在GUI中自动点击来创建平台、HLS、软件和系统组件,配置、构建和连接它们,并将最终的工件捆绑在一个export_folder中。由于流程完全基于Vitis工作区概念,用户可以在任何时间点在Vitis Unified中简单地打开工作区,调试、分析或手动与之交互。
关于这个过程的细节将在第4条中解释。
在开发板上集成和部署
最后的第5篇文章将解释如何从SW开始开发应用程序,向其添加内核,交叉编译,分析一些跟踪并将所有内容放到主板上。
本文编译自hackster.io





