当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]本文介绍了KRS Unleashed的新分离的3个工作区是如何一起工作的,并解释了如何在KRS Unleashed中生成交叉编译的工件和设计新的应用程序。上一篇文章已经介绍了谁可以获得用于交叉编译的系统根,但它独立于KRS。

这个项目是KRS Unleashed系列的一部分,KRS是原始KRS的修订版。本文将介绍KRS工作空间。

本文介绍了KRS Unleashed的新分离的3个工作区是如何一起工作的,并解释了如何在KRS Unleashed中生成交叉编译的工件和设计新的应用程序。上一篇文章已经介绍了谁可以获得用于交叉编译的系统根,但它独立于KRS。

在这里,我们将首先讨论文件夹结构,以及在KRS Unleashed中交叉编译应用程序实际上需要哪些包。此外,还将解释配置所选系统根或后续HLS内核的所有相关位置。

最后,将显示为示例应用程序的Kria KR260生成二进制文件的命令。

文件夹结构

由于将工作作为论文的一部分发布,存储库包含一个示例应用程序,其中包括用于重现结果的配置文件。实际的KRS Unleashed隐藏在内部,但由于应用于原始KRS的更改,KRS Unleashed的核心更加可见,也更小。

整个存储库分为3个目录:

•基米-雷克南;包含与ROS 2相关的工作空间

•os_workspace;包含创建系统根和准备SD卡的模块

•vitis;包含下一篇文章中要创建的Vitis工作区。Xclbin文件与合成的内核

ROS 2工作空间通常将所有包都包含在“src”文件夹中。在这里,KRS Unleashed Core软件包被放在一个名为“base”的特殊目录中。‘ adaptive_component ’是可选的,包含一些很好的实用程序。剩余的包确保使用Vitis支持的标志编译主机代码/是旧合成流(‘ ament_acceleration ‘, ‘ ament_vitis ’和’ Vitis common ‘)的回忆,配置工具链以针对sysroot (’ krs_firmware ’)进行交叉编译或引入基于ros2-tracing (' tracetools_kernels ')的进一步跟踪功能。

‘ Apriltag_* ’, ‘ minimal_image_pub ’和‘ ros2_tracing ’只是可选的,特定于应用程序的包为Apriltag算法提供硬件加速、软件版本和ros2消息定义,一个用于测试和ros2跟踪的简单消息虚拟节点(必须添加到repo以进行交叉编译)。

上一篇文章已经介绍了os_workspace,但是总结一下它的结构。我们目前支持KR260板的两个流程,一个是位于“firmware_kr260_ubuntu”中的基于ubuntu的流程,它包含一个脚本,用于获取包含sysroot的tar存档文件,另一个是补丁脚本,用于修改tar archive/bin目录下的customize.sh shell脚本,以安装sysroot中的依赖项。firmware_kr260_petalinux流程稍微复杂一些,但同样通过petalinux.sh脚本自动执行,该脚本首先检查artifacts文件夹中的一些文件,如XSA文件或BSP(需要下载),然后继续在“build_petalinux/images”下创建petalinux项目。然后调用生成的sdk.sh脚本生成包含sysroot文件的固件文件夹。可选地提供了用于生成设备树的进一步脚本,并且可以对‘ petalinx_config文件夹’中的配置应用配置。

vitis工作区将在下一章中详细介绍,但一般结构不需要将其放在ROS2工作区旁边,因为它只依赖于所使用的操作系统。内核组织在源代码中的文件夹中,脚本从其中准备工作空间并生成所有组件。成功执行后,结果存储在exports文件夹中,以便复制到电路板上。

本地/本地构建

正如在论文和第一篇文章中所解释的那样,修订的主要动机之一是在更改系统时涉及的复杂性,例如使用不同版本的Vitis或集成另一个操作系统。

与最初的KRS流程相比,KRS Unleashed将这两个步骤提取到单独的工作区中,以使链接更加有形和可调整。对于交叉编译,之前隐式的Ubuntu系统根准备被移到OS工作区中,而mixin生成则保留在ROS 2中的新krs_firmware repo中。Krs_firmware在' base/ Krs_firmware /cmake/firmware_setup中定义了一些常量。,但目前只有这一行是真正相关的:

在这里,需要指定包含要使用的‘ sysroots ’文件夹的文件夹。遗憾的是,Petalinux支持ROS 2(2022.1-2024.1)的版本是基于一个非lts的Yocto版本(Langdale),其中ROS 2层从未真正工作过,因为在该版本期间维护者发生了变化,现在需要将Kirkstone的错误修复后移植到Langdale。

因此,我们使用兼容abi的Ubuntu系统根作为Petalinux交叉编译应用程序的临时解决方案。这在简单的例子中工作得很好,但当库版本不同时(如OpenCV的情况)会导致问题。我们目前的计划是将整个工具链升级到Jazzy/2025.1作为下一步。

在调整了变量firmware_dir之后,您只需要执行原始KRS框架的命令+额外的环境准备:

1. 添加遗漏的libpython库以便交叉编译,一旦Ubuntu遗漏(使用绝对路径!!)

2. 源ROS 2, Vitis和定义一些变量

Unset RMW Implementation只有在您为ROS 2安装了多个DDS时才需要,这只是防止错误消息的预防步骤-如果您遇到一些关于DDS的依赖关系,请将此简单地忽略,导出PATH只是为了防止意外使用Vitis Cmake,…版本

如果你在本地安装了多个OpenCV版本来测试Petalinux,你需要为本地构建设置一些进一步的变量:

3. 构建应用程序

这将生成一个构建和安装文件夹,其中包含应用程序的本机构建,您可以使用它来测试应用程序的软件版本。此外,已经通过krs_firmware在系统上安装了colcon mixin,它允许您对应用程序进行交叉编译

只需通过正常的ROS 2命令运行SW应用程序:

交叉编译配置和如何集成内核

之后,我们需要找到生成的安装脚本并运行交叉编译命令。打开一个新的终端并运行:

这将创建一个build-kr260和一个install-kr260文件夹。要在板上部署应用程序,只需通过scp复制install-kr260文件夹:

这里需要注意的是,这个安装文件夹只包含交叉编译的二进制文件、启动文件……最后合成的内核丢失了,需要在下一篇文章中通过vitis工作空间流在主板上单独生成和设置。

到内核文件的实际链接只发生在主机代码上,其中xclbin的名称、顶级函数和方法签名需要与内核匹配。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭