Jacinto?7处理器软件概述 — 上
本文介绍了用途Jacinto?7处理器处理器SDK。主题包括软件系统结构概述、下载和安装指南,以及如何开始Jacinto 7 EVM开箱即用SDK。 Processor SDK允许您包含各种软件组件Jacinto 7 soc开发和部署家庭应用程序。 用于Jacinto 7的处理器SDK Automotive它是一个通用的软件开发工具包,跨越了Jacinto 7 soc家庭。你可以用这个。SDK开发各种应用、停车辅助、传感器图应用、停车辅助、传感器集成、前置摄像头、网关应用等,I/O hub,以及信息娱乐应用。 处理器SDK由两个安装程序包组成——一个用于开发linux另一端应用程序用于开发RTOS端应用程序。在典型的终端应用程序中,同时需要Linux和RTOS端包。 例如,大多数应用程序都在ARM Cortex-R5F,C66X或C7X DSP运行一些软件。RTOS SDK。RTOS SDK由Linux在armcortex-A72登陆补充。Linux是Linux SDK的一部分。 Linux和RTOS SDK一起提供访问Jacinto 7上各种硬件特性所需的所有基线软件。这允许你专注于你的特定应用程序而不知道SOC以及软件的所有低级细节。此外,在ARM Cortex-A你可以用第三方操作系统代替72Linux,比如UNX或Green Hills INTEGRITY操作系统。 现在让我们仔细看看Linux和RTOS SDK软件栈。Jacinto 7 SRC由多个异构cpu组成,如ARM和DSP。每个CPU目标是执行特定的优化功能。所有cpu实现最终最终应用。Linux SDK运行在ARM Cortex- A72上,RTOS SDK运行在ARM Cortex R5、C66 DSP、C7X DSP等cpu上。 SDK它本身可以表示为一个分层的软件系统结构。在底层,我们有指导加载程序。bootloader用于将各种cpu从reset引导并开始运行Linux操作系统或RTOS应用程序。 U-Boot是Linux操作系统的指导程序。U-Boot也用于早期的引导过程RTOS cpu。此外,TI还提供了裸机引导程序RTOS SDK部分。这可以是第三方OS在某些情况下,供应商也可以于快速引导Linux和RTOS cpu。 接下来,我们有操作系统本身。Linux内核和A管理程序(可选)由72组成。dsp和R5F上,我们称之为SYS-BIOS的TI RTOS。 与操作系统相关的是处理器间通信库,也称为IPC。IPC允许不同cpu各种软件应用程序相互同步和交换信息。这种信息交换使用公共共享内存和中断来帮助减少信息传输、费用和延迟。 接下来,我们为不同的CPU提供不同的设备驱动程序。在Linux上,你可以得到常见的Linux例如,核驱动程序UART、ethernet、PCI、USB,特定的硬件加速器驱动程序用于多媒体和图形。在RTOS方面,SDK作为平台开发工具包,包括各种外围驱动程序(以下简称PDK)的一部分。RTOS SDK它还包括计算机视觉、深度学习库和深度学习应用。在ARM R5F上也提供了AutoSAR MCAL来帮助开发AutoSAR应用程序。 加速异构SOC应用程序开发,SDK还提供中间件库,如用于中间件库ADAS应用的OpenVX、用于图形的OpenGL用于多媒体GStreamer。OpenVX运行在RTOS cpu上,允许从A72访问深度学习、摄像头和硬件加速器RTOS函数。抽象各种中间件SOC的异构性,为Linux A72应用程序提供了统一和简化的视图。 最后,SDK还提供演示应用程序,演示如何集成各种软件组件,并在汽车中构建特定的应用程序。具体来说,RTOS SDK以太网交换机和以太网交换机包括显示环绕视图和深度学习分析的演示CAN使用外设,集成MCU演示在ARM R5F安全性显示在上面,MCU,演示响应时间。 RTOS SDK还包含用于ARM R5F、C6X和C7X DSP编译器和代码生成器工具。GCC编译器用于Linux A72.所有这些组件都包装在两个包含的组件中Linux和RTOS SDK在安装过程中。 让我们看看如何下载和安装不同的内容Linux和RTOS SDK。要下载Linux SDK,请转到Processor SDK Linux Automotive产品下载页。此页面包含Linux SDK安装程序等工具及辅助材料。您需要下载安装程序二进制文件,如下所示。您还可以在线浏览用户指南,如下所示。 类似地,下载RTOS SDK,请转到Processor SDK RTOS Automotive产品下载页。包含此页面RTOS SDK安装程序等工具及辅助材料。您需要下载SDK安装程序tar文件,如下所示。要进行深度学习演示,还需要下载演示输入数据集tar文件,如下所示。您还可以浏览在线用户指南,如下所示。再一次,Linux和RTOSSDK相辅相成,下载安装Linux和RTOSSDK很重要。 接下来,我们将安装它Linux和RTOS SDK。请注意,您需要在Linux Ubuntu 这些步骤在64台机器上执行。建议使用100G磁盘空间的Ubuntu 18.04。像VirtualBox或VMware这样运行Ubuntu也可以使用虚拟机。 要安装Linux SDK,请创建一个文件夹来安装SDK。任何文件夹都可以。安装如下所示SDK。按照屏幕上的步骤,安装到新创建的文件夹中。首先,在web在浏览器中打开用户指南主页,如下所示。 接下来,让我们看看如何导航Linux SDK用户指南的重要组成部分。Linux可以从这个主页上获得SDK文档。要开始,请参考快速入门指南。关于不同的。Linux SDK组件的详细信息,如U-Boot内核,请参考基本组件。EVM请将详细信息转移到操作指南发人员说明的详细信息转移到操作指南。 接下来,我们安装它RTOS SDK。同样,请注意,您需要Linux Ubuntu 在64台机器上执行这些步骤。RTOS SDK,需要创建文件夹来安装SDK。任何文件夹都可以。SDK。首先,在web在浏览器中打开用户指南主页,如下所示。 现在让我们看看如何导航RTOS SDK用户指南的重要组成部分。所有的RTOS SDK文档可以从这个主页开始。请参见《开始》。关于不同RTOS SDK组件的详细信息,如SYS/BIOS、TIDL、OpenVX,请参见SDK组件。EVM请参考安装的详细信息EVM安装。其他有用的提示和开发人员说明,请访问开发人员说明部分。 首先,我们将简要介绍组成SDK详细介绍各种组件的安装SDK在哪里可以找到它们。然后,我们将学习如何建立一个环境,以便您可以根据需要修改和重建特定的组件或演示。最后,我们将介绍它Jacinto 7 EVM上操作演示步骤。 现在让我们仔细看看Processor SDK Linux包的内容。重申,处理器SDK Linux运行在Jacinto 7平台上的Cortex-A支持快速应用开发的基快速应用开发的基本构建块。Processor SDK Linux构建在分层架构上,主要围绕Linux和Linux软件授权兼容组件构建。对于大多数组件,源代码包含在/board-support文件夹下。 现在我们来看看SDK中包含的特定组件。在底层,我们有ATF,或ARM信任固件,这是ARM社区项目的一个端口。ATF为运行在ARM V8系统结构secure vault该软件提供了参考实现。 然后我们在这个例子中引导加载程序U-Boot。U-Boot支持两个阶段的引导过程——最小的第一阶段,然后是功能更丰富的第二阶段。U-Boot建立两个阶段的每个阶段,包括单独的配置。正常的开发工作流程将采用引导加载程序的两个阶段,而优化的生产工作流程可能会绕过一两个阶段。 处理器SDK Linux还包括一个Jailhouse静态分区的形式hypervisor。将系统划分为独立域,然后从独立的虚拟机实例映射和使用。Processor SDK它包含实例实际上包含了一个运行两个虚拟机实例的配置示例Linux作为操作系统运行。 然后我们进入下一层,操作系统-在这种情况下Linux。SDK中的Linux支持基于社区支持的LTS,或长期稳定的核心版本。在这种工作模式下,SDK发行版每年都会迁移到最新的版本LTS内核。Linux源代码可以放在单独的文件夹中,其中包含Jacinto 大多数外设的内核和驱动程序都得到了支持。 一些外围设备包括内核树、图形模块、视频编码/解码模块以外的驱动程序,由内核树外的驱动程序支持。在Linux内核下,使用RP消息和RemoteProc支持处理器间通信的模块。同样,连接模块的外设驱动程序,如PCI,以太网,I2C。并存储外围设备(如MMC、UFS)则作为Linux提供以下标准驱动程序。 SDK包括预构建的根文件系统和使用Yocto重建根文件系统所需的脚本和配置配方。SDK部分安装设置了交叉编译的主机环境,并将相应的依赖项绑定到/linux-devkit文件夹下。 最后,处理器SDK Linux依赖于GCC编译器需要根据我在那里SDK32位和64位工具链版本包含在下载页面中。 重要说明——PSDKLA同样,OpenVX组件也包含在内PSDKLA包中。 现在,让我们来看看如何建立一个环境,这样你就可以修改和重建它SDK组件。总结设置主机环境和组件级结构的步骤"Quick Start Guide" section on "SDK Documentation Landing Page."部分。 下载并安装SDK之后,按照用户指南设置主机环境一节描述的步骤进行操作。首先操作SDK安装脚本。这是提取和填充/的一次性步骤linux-devkit文件夹的内容。默认情况下,将安装64位工具链版本。如果同时需要32和64个工具链,请遵循SDK下载并安装安装以下链接。 然后运行setup.sh。这将验证主机端的依赖性,安装所需的主机端包,并为根文件系统,NFS TFTP导出和许多其他有用的实用程序设置环境。 现在让我们来看看如何重建特定的SDK组件。SDK包括基于makfile的构建系统,用于有选择地重新构建一个或多个SDK组件。当只修改一个特定的组件时,因此需要重新构建时,这就很方便了。 第一步,确保安装了基于makefile的构建系统所需的主机包。在此之后,确保将默认路径更新为指向安装交叉编译工具链的位置。通过这个步骤,我们现在可以使用基于makefile的构建系统重新构建组件了。 在SDK安装的顶级文件夹中,可以调用makefile来构建特定的SDK组件。大多数基本组件,如内核、U-Boot、管理程序,都支持作为makefile目标。您可以使用自动完成特性查看支持的目标列表。 SDK还包括完整SDK构建的Yocto配方,包括根文件系统。有关Yocto构建设置的具体说明,请参见用户数据中相应的章节。 典型的开发工作流将涉及到对特定组件的更新——例如,对内核配置或设备树配置的更新。对于这些,可以利用基于makefile的组件级构建。使用Yocto需要额外的专业知识,可以更好地利用文件系统构建或完整的SDK构建。 现在我们来看看准备和运行开箱即用的二进制文件的步骤。SDK包包括用于引导映像和根文件系统的预构建的二进制文件。您可以使用“mksdboot”脚本对SD卡进行分区,并使用预构建的文件系统和引导映像填充它。 一旦创建了卡,就可以使用它在Jacinto 7 EVM上使用SD卡引导模式启动Linux内核。这样,您应该能够引导到Linux提示符,并在EVM的显示端口上看到墙纸。 至此,我们将切换上下文,并将重点放在处理器SDK RTOS包上。现在让我们仔细看看处理器SDK RTOS包的内容。 RTOS SDK包采用了模块化的方法,大多数SDK组件都放在文件夹的各个组件级别上。首先,RTOS SDK构建在SYS-BIOS之上作为操作系统。它运行在R5F核心和C7X和C66X DPS上。 TI的裸机引导加载程序、系统固件二进制文件、处理器间通信库和各种外围驱动程序都包含在PDK组件中。然后,在管理Jacinto 7平台上集成的以太网交换机的R5F核心上运行以太网交换机固件。交换机固件负责交换机的配置,并使运行于各种其他CPU内核的客户端直接通过交换机发送和接收流量。 硬件加速的计算机视觉和深度学习库作为单独的组件包含在RTOSSDK中。OpenVX支持灵活的基于图形流水线的方法,用于实现视觉和计算应用程序,利用异构体系结构和Jacinto7平台上的加速器核心。TI对OpenVX标准的实现包含在TIOVX组件下。 在安全MCU孤岛上运行的软件——即对AUTOSAR的MCAL支持和CAN响应安全授权的演示——都包括在MCU软件组件中。 /vision_apps文件夹包含多个演示,这些演示集成了来自SDK的各种组件,以实现用于视觉处理的系统应用程序,如环绕视图应用程序和自动泊车辅助。在/vision_apps文件夹下还包括一些基本的演示,可以用于快速的硬件校验或作为其他应用程序开发的起点。/gateway-demos组件包括一个CAN以太网桥接应用程序的示例。 除了SDK包的内容之外,还需要单独下载其他工具,如GCC编译器。关于设置主机开发环境的详细信息,请参阅用户指南。 现在,让我们看看在Jacinto 7 EVM上设置构建环境、构建和运行开箱即用演示的步骤。构建和运行说明包括在Vision Apps用户指南的一部分。你可以从顶级的PSDK文档链接导航到这个。 作为第一步,需要设置生成环境。按照用户指南“构建环境设置”一节中描述的说明进行操作。构建环境设置好之后,就可以使用基于makefile的构建机制来构建SDK或特定组件。构建SDK的步骤,包括支持的构建配置和makefile选项,在用户指南的构建指令一节中有描述。最后,在用户指南的“运行说明”部分描述了用构建二进制文件准备SD卡和运行SDK演示的步骤。 在此基础上,我们成功地完成了针对Jacinto 7平台的process SDK Automotive培训课程。 具体来说,我们将以surround view park assist的一个用例作为案例研究。 在本课程中,您将学习如何将硬件框图映射到jac7 SOC。接下来您将学习如何设计软件来实现这样的用例。最后,您将学习如何使用处理器SDK在TI EVM上构建和运行具有代表性的环绕视图泊车辅助演示。请注意,环绕视野泊车辅助只是众多可在Jacinto7设备上实现的ADAS应用程序的一个示例。 首先让我们从硬件框图的角度来看看基于摄像头的环绕视野泊车辅助系统的外观。在输入端,我们以一辆车的四个侧面上放置的四个摄像头为例。摄像机通常以原始裸格式捕获数据,并通过FPD链路序列化器(如UB953)将数据传输到中央ECU。UB960在中央ECU,这是反序列化和转换为CSI2流,这是馈送到Jacinto 7 SOC。在输出端,我们可以将多个显示器连接到Jacinto 7,它可用于在显示设备上可视化环绕视图输出。 此外,以太网UART还可以用于传输额外的传感器或对象数据输入,如来自激光雷达、雷达和超声波传感器的数据。连接到Jacinto 7的其他设备包括用于运行时数据和代码存储的LPDDR4、用于文件系统和其他非易失性数据存储的eMMC、用于电源的PMIC。在一个典型的系统中,也有一个安全MCU,通过CAN或以太网与汽车网络的其他部分通信。对于Jacinto 7,该安全MCU集成在Jacinto 7中。OSPI通常被用作集成安全MCU的引导介质。 在定义了硬件框图之后,现在让我们看看如何使用jacinto7 cpu和硬件加速器实现环绕视野泊车辅助应用程序。如前所述,摄像头数据通过UB960反序列化器CCSI2端口输入到Jacinto 7。该数据在Jacinto 7 SOC中由CSI2RX硬件块捕获。 然后,数据被提供给ISP,即图像信号处理器,由它将数据从原始的裸格式转换为YUV格式。ISP的输出然后馈送给GPU的环绕视图可视化和显示。ISP数据也可以压缩、存储或传输到eMMC这样的非易失性内存中。这就形成了可视化管道。 同时,ISP数据也会被发送到泊车辅助的分析中。首先,我们使用VPAC和DMPAC硬件引擎做了一些预处理。这里的数据是使用VPAC的硬件缩放器缩小的。然后利用VPAC的长度失真采集硬件采集鱼眼长度失真数据。 然后将数据输入到DMPAC中的密集光流引擎中。密集光流引擎提供像素级的运动信息,这是用于分析算法,如深度使用结构的运动和运动分割。这些预处理后的数据然后被送入C7X MME和C66进行CNN处理和计算机视觉算法。 这些算法的输出通常是对象和语义信息,如行人、车辆、车道、交通标志和深度图的位置。这也被称为环境模型。然后将目标信息反馈给arm A72和arm R5F上的融合部件规划和控制算法学习。这些算法通过融合摄像头、激光雷达、超声波和雷达传感器生成的环境信息,自动导航并将汽车停在停车场。 正如我们在这个数据流中所看到的,Jacinto 7可以用于完成从环绕视图可视化、摄像头感知以及导航和控制的完整环绕视图泊车辅助应用程序。高百万像素的输入数据可以由各种硬件加速块有效地处理,而不需要大量的CPU负载。高百万像素的CNN处理还允许软件在自动驾驶和停车时识别诸如车道标志、物体、路缘等细节。 现在让我们看看数据流如何映射到来自SDK的各种软件组件。Jacinto 7 SOC由各种异构cpu组成。每个CPU都针对特定的优化功能。不同cpu上的软件协作以实现预期的用例或应用程序。 SOC通过MCU R5F上的引导加载程序开始执行,引导SOC上的不同cpu。我们有运行在arm R5F, C66和C7x dsp上的TI-RTOS或SYS-BIOS。注意,每个CPU运行一个唯一的TI-RTOS实例。A72运行Linux操作系统或第三方操作系统,如Unix。MCU R5还运行AutoSAR操作系统和AutoSAR软件堆栈。 在每个CPU上运行的处理器间通信(IPC)用于在所有CPU之间同步和交换消息。MCU 21R54专门控制VPAC、DMPAC、摄像机捕获、显示、视频编码、视频解码等各种硬件加速器。C7x MMA为基于cnn的算法运行TI深度学习库,而C66为传统的计算机视觉算法运行division库。
在Linux端,我们通过OpenGL运行图形。存储和网络驱动程序也由Linux控制。MCU 20R5F用于运行以太网交换机固件,MCU 10R5F用于运行AutoSAR堆栈。和MCU 3 R5s免费供客户使用。 使用OpenVX作为中间件,将R5和dsp的硬件加速器和深度学习功能导出到A72。OpenVX允许我们使用A72中简单统一的API构建跨SOC的硬件和软件块的数据流图。这让你可以专注于A72上的最终应用,而不是R5和DSP的底层硬件细节。最后,您可以自定义并在各种CPU上添加自己的软件和算法,最终集成的环绕视图和泊车辅助应用程序位于A72上。 现在让我们看看如何运行SDK中的一些演示,它有这样的硬件和软件数据流。首先,打开RTOS SDK用户指南主页,进入入门页面。在这个页面上,点击ADAS, Vision, DL, Vision apps链接打开Vision apps用户指南。Vision apps包含源代码和有关环绕视图的信息以及泊车辅助演示的分析。 导航到“应用程序演示环绕视图3d环绕视图”应用程序页面。此页面包含有关环绕视图演示的信息,包括演示的简要描述、数据流和性能信息。它还提供了如何运行演示的步骤。 同样,导航到应用程序演示DL,或深度学习演示,自动代车泊车应用程序2页。这个页面有关于停车演示分析的信息。我也鼓励你看看vision apps用户指南中的其他演示页面。有多种演示,从简单的CNN演示,到简单的摄像头演示,显示环回演示。了解这些演示将有助于您开始应用程序开发。 这里显示的是在SDK演示中实现的surround视图的数据流。这也可以在前面显示的演示页面中找到。类似地,这是在SDK演示中实现的自动代客泊车的数据流。最终的应用程序可能看起来有所不同,但总体而言,高级设计和软件架构与SDK演示类似。 然后您可以通过以下两种方法之一在EVM上进行这些演示。在第一个选项中,您可以将预构建的演示二进制文件和Linux文件系统闪存到SD卡上。请参见RTOSSDK用户指南主页上的开箱即用演示。在第二个选项中,您可以从源代码构建演示,然后创建一组新的二进制文件来闪存SD卡。有关从源代码生成和运行演示的信息,请参阅《vision apps用户指南》。 要运行预构建的二进制文件,需要从SDK下载页面下载一个单独的预构建的tar文件。下载预构建的tar文件后,按照本页上提到的步骤在TI EVM上创建和运行演示。要构建和运行源代码,请访问division apps用户指南。从这里开始,构建并运行page。按照本页上提到的步骤在TI EVM上构建和运行演示。 最后,让我向您展示如何在SDK中找到所有这些演示的源代码。在RTOS SDK中,进入vision apps文件夹。您将看到如图所示的环绕视图应用程序和如图所示的自动代客泊车应用程序。我还鼓励您看看简单的CNN和camera应用程序,以理解如何从较小的构建块构建更大的应用程序。