DSP

多核软件开发套件

2019-07-13 15:47发布

介绍 多核数字信号处理器 (DSP) 现已开始在不同的细分市场逐渐推广, 包括测量测试、关键任务、工业自动化、医疗与高端影像设备,以及高性能计算等。随着这些应用的处理需求不断增长,德州仪器 (TI) 通过了新一代可扩展高性能 TMS320C66x 多核 DSP。C66x 器件建立在 TI KeyStone 架构基础之上,可为多核器件中的每个内核提供全面的处理功能,是实现真正多核创新的平台。TI C66x 高性能 DSP 包括采用单、双、四以及八内核配置提供的引脚兼容及可扩展器件。 德州仪器 (TI) 对多核 DSP 编程模型思路非常全面,已经开发出一系列能够在 TI 多核 DSP 平台上实现快速开发的可扩展工具与软件。本文主要介绍 TI 多核软件开发套件 (MCSDK),具体内容涵盖对各种可用软件套件以及实用程序及工具链的概述,可为编程人员开发 Linux 等高级操作系统以及实时操作系统SYS/BIOS 助一臂之力。 MCSDK 的优势 TI MCSDK 旨在提供一个软件开发环境,通过 TI 高性能多核 DSP 平台实现快速开发,加速产品上市进程。MCSDK 实现这一目标的方法包括: · 为客户提供经测试的良好集成型通用软件层,客户无须从头开发通用层。例如,TI MCSDK 为配置和控制各种片上外设及加速器集成并测试了各种驱动器。客户可使用驱动器接口加强片上输入输出 (I/O) 机制以及加速功能。由于该软件是专为器件优化的,因此使用 MCSDK 的客户可从理想的性能优势中获益; · 集成 SYS/BIOS 实时操作系统及 Linux 高级操作系统支持; · 为简化编程以及在 TI 可扩展多核 DSP 平台上实现未来可移植性提供定义完善的应用编程接口。例如,用于内部核心通信的 API 可在不进行任何代码修改的情况下,扩展支持 TI 多核 DSP 的双、四或八内核版本。此外,相同 API 还可用于使用 Serial RapidIO® 等行业标准 IO 实现器件间的通信; · 建立示例文档,可帮助编程人员开发其应用。这些示例将为在多核上运行 RTOS 和在多核上同时运行 RTOS 与 HLOS 提供有力帮助。此外,这些示例还将展示各种应用情况,不但可帮助客户开发新应用,而且还可提供一个从单内核系统到多核系统或从多核系统到单内核系统移植的路径; · 与 Code Composer StudioTM 等 TI 工具以及 TI 第三方工具生态系统集成。 下图(图 1)是上述 MCSDK 及各种组件的概览图。
图1 TI MCSDK 组件
▲图 1. TI MCSDK 组件 TI MCSDK 实际上由两个软件生态系统构成。第一个生态系统基于 Linux,第二个基于 SYS/BIOS。两个都包含可帮助客户便捷启动开发的所有功能性软件。每个生态系统都包含用于多核器件编程的各种机制(比如处理器间通信),在相同器件的不同内核上既可独立使用,也可组合使用。以下章节将总体介绍每个 MCSDK 组件。 Linux MCSDK Linux 多核软件开发套件 (MCSDK) 为支持运行在 TI C66x 系列高性能多核 DSP 上 的 Linux 生态系统奠定了坚实基础。该套件包含可随时投入使用的 Linux 内核、驱动器、样片应用以及经验证的工具,可充分满足客户的产品开发需求。 总体而言,支持 C66x 多核 DSP 的 Linux 是 C66x 多核客户、独立开发者以及厂商协作社区推动的结果,可帮助参与和强化总体开发生态系统。目前已有多个参与方参与内核与工具链的开发和上游对接。具体包括 GCC 工具链的 CodeSourcery(现在是 Mentor EmbeddedTM 的一部分)以及内核社区知名的 Linux 开发商等。 生态系统组件 对 Linux 生态系统的支持预计将是各种更丰富高性能应用的关键使能技术,可帮助客户轻松推出基于 TI C66x 多核 DSP 的平台。总的来说,该基础架构可通过增添市场导向型应用来帮助客户降低开发成本,集中精力提升价值定位。 Linux MCSDK 采用 uClinux 类内核,因其较小的占位面积非常适合多核 DSP 的开发。另外,Linux MCSDK 还包含支持访问 DSP 内部所有外设的器件驱动器,这些外设将随实际 DSP 的不同而不同。图 2 是支持 KeyStone 器件的外设与驱动器。
图2 Linux MCSDK 的软件生态系统组件
▲图 2. Linux MCSDK 的软件生态系统组件 进程间通信 多核架构的主要编程要求之一就是能够在各种内核之间进行高效通信。TI Linux MCSDK 支持在运行 SYS/BIOS 的核心之间,以及其它 Linux 内核之间的通信,从而可为满足各种潜在产品需求提供高度的灵活性。 内核间的 IPC TI Linux MCSDK 通过 SYS/Link 模块提供进程间通信 (IPC) 驱动器,以在运行 Linux 高级操作系统 (HLOS) 的两个内核以及运行 SYS/BIOS 实时操作系统 (RTOS) 的多个内核之间实现通信。在预期的使用情况下,应在信号处理应用在 BIOS 内核上执行的同时控制运行在 Linux 内核上的代码。该软件架构将帮助运行 Linux 的主机内核把信号处理分配给多个内核的同时,顺畅地继续执行其它任务。SYS/Link IPC 模块可为在多个内核中发送和接收不同字长消息提供 MessageQ 支持。 如图 3 所示,Linux MCSDK 还能使用一种支持 IO 虚拟的标准化 Linux 框架 virtIO 在单一 DSP 内实现在多个内核中运行的多个 Linux 实例。
图3 多个 Linux 实例情况下的 IPC 使用
▲图 3. 多个 Linux 实例情况下的 IPC 使用 软件 开发工具 Linux MCSDK 可为用户提供各种编译器工具及调试选项。在编译器方面, 开源社区普遍使用的 GCC 与二进制工具可通过 Mentor Embedded 提供给 C66x 多核 DSP。在信号处理代码等应用实例中,开发人员能够使用 TI 提供的编译器获得更高性能。另外,GCC 和 TI 编译器还具有互操作性, 因此开发人员可选择使用 TI 编译器或 GCC 满足不同部分的应用代码需求,而系统的其余部分则仍然使用 GCC 构建。这样用户就可高度灵活地进行与代码性能有关的利弊权衡。 在调试方面,用户模式下的应用可使用 Mentor Embedded 提供的 GDB。对内核调试或者无操作系统的程序运行,使用 Mentor Embedded 提供的 Debug Sprite 和 TI 基于 CCS 的调试器,就可实现基于 JTAG 的调试。 TI C66x EVM 上的创造性演示体验 Linux MCSDK 的最后一个组件是创造性 (OOB) 演示软件与示例应用。OOB 演示应用包含 Web 界面,可为用户提供通过以太网连接 PC 访问 EVM 的控制面板,以便在启动后提供各种功能。在初期版本中,控制面板可提供一种简便的方法为用户更新引导加载程序及内核。后续版本将支持可展示和演示多核相关功能的其它基本功能,比如运行 BIOS 和/或 Linux 的内核间 IPC 通信以及下载和引导多核应用等。 BIOS MCSDK BIOS 多核软件开发套件 (MCSDK) 以集成方式提供内核基本构建块,可为在 TI 高性能多核 DSP 上使用 SYS/BIOS 实时操作系统进行应用软件开发提供便利。BIOS MCSDK 在统一可下载套件中绑定全部主要嵌入式软件,并在 TI 网站上免费提供。BIOS MCSDK 配套提供的软件均为预构建库源代码,并按 BSD 许可证进行分销。除了基础软件元素外,BIOS MCSDK 还提供使用这些组件的演示应用,可展示客户使用 BIOS MCSDK 创建应用的方法。 BIOS MCSDK 采用这种结构进行设计的驱动因素之一,是为了简化各平台间的设计流程以及对客户在各个 TI 器件之间进行移植的考虑。TI 了解客户可能有采用通用软件支持不同器件的多种产品,因此移植策略应重点考虑利用客户在现有以及未来 TI 器件上的软件投资。例如,该流程可从在 TI 评估平台上运行内含 TI 演示软件开始,然后将该演示移植至客户平台,最后在客户平台上导出客户应用。另外一个步骤就是将该应用移植到新一代 TI 架构上(图 4)。
图4 将应用移植到 TI 新一代应用 SoC 平台上
▲图 4. 将应用移植到 TI 新一代应用 SoC 平台上 BIOS MCSDK 使用 TI Code Composer StudioTM(CCS) 作为集成开发环境 (IDE)。在软件更新方面,BIOS MCSDK 使用 Eclipse 的更新特性通过 CCS 自动发现并安装新软件。 软件概览 BIOS MCSDK 中的软件组件(图 5)可分为下列类型: l 器件专用软件驱动器 l 内核目标软件 l 平台专用软件 l 演示与工具
图5 BIOS MCSDK 的软件组件
▲图 5. BIOS MCSDK 的软件组件 器件专用软件驱动器:该软件套件包含芯片支持库、低级驱动器、平台库以及传输协议。该套件中的软件重在简化对诸如加速器等器件硬件的访问,并可作为应用开发的最低层 API。 平台专用软件:本软件提供与 TI 参考平台配套使用的平台专用功能的实施示例,其目的是用作客户平台开发活动示例。 平台库可使用通用 API 对平台进行抽象,简化各器件间的移植。它提供软件实用程序来控制硬件部件(比如 EEPROM、FLASH、UART)并完成平台/器件初始化。 平台库 API 由跨不同平台的通用工具使用。这些工具包括 EEPROM 写入器、NAND/NOR 写入器以及上电自检等。因此,要为新器件或新平台添加这些工具,应隔离工作,以便添加专门用于该硬件的平台库。与其它组件一样,该平台库具有单元测试应用,可在将模块移植到新平台时使用。 内核目标内容:该软件集提供更高级功能,包括实时嵌入式操作系统、跨内核以及跨器件通信的处理器间通信、基本网络协议栈及协议、经优化的专用算法库以及仪表工具等。 一项重要多核使能技术包含处理器间的通信,其不但可跨越使用共享存储器的内核及器件实现高效通信(内核间通信),而且还可跨越 SRIO 与 PCIe 等外设实现器件间的通信。处理器间的通信机制和 API 支持精细线程多核编程模型。此外,通用 IPC 接口还可简化跨内核和/或器件的应用处理节点工作, 满足多核应用设计与优化的需求。 第二项重要使能技术是仪表工具,其对用户掌控应用执行状况具有至关重要的意义,可分析并优化性能。BIOS MCSDK 包含系统分析器工具,其可定义一系列 API,而 API 则能够以可移植方法将仪器代码插入软件,以便在各种 TI 平台中重复使用。某项应用的图形化输出示例如下(图 6)
图6 BIOS MCSDK 的系统分析器工具
▲图 6. BIOS MCSDK 的系统分析器工具 演示与工具:该软件集覆盖多种器件,提供构建于上述软件的示例、演示以及工具。BIOS MCSDK 包含演示应用,旨在作为示例展示如何使用基础软件构建多核应用。当前版本中可供下载的演示包括用于展示 BIOS MCSDK 部分重要组件的创造性应用,以及用于显示多核信号处理的影像处理应用。 各种工具包括通用引导加载程序、FLASH 及 EEPROM 写入器、评估板上电自检、多核/多影像引导工具,以及从不同模式(比如 NAND/NOR、EMAC、SRIO)引导的简明示例等。 演示 创造性演示 BIOS MCSDK 的创造性演示是一种以 CCS 项目方式提供的高性能 DSP 实用程序应用 (HUA)。该演示可通过演示代码及 Web 页面向用户演示如何将自己的 DSP 应用连接至各种不同的 BIOS MCSDK 软件元素,其中包括 SYS/BIOS、网络开发套件 (NDK)、芯片支持库 (CSL) 以及平台库。 在执行时,HUA 可使用 Web 服务器让用户使用 PC 通过以太网连接至平台。用户使用 HUA 可执行各种功能,比如读/写闪存、诊断或者提供统计及信息。该演示可通过演示代码及 Web 页面向用户演示如何将自己的 DSP 应用连接至各种不同的 BIOS MCSDK 软件元素,其中包括 SYS/BIOS、网络开发套件 (NDK)、芯片支持库 (CSL) 以及平台库(图 7)。

图7  高性能 DSP 实用程序应用 (HUA)
▲图 7. 高性能 DSP 实用程序应用 (HUA) 影像处理演示(图 8)则展示了如何在 BIOS MCSDK 多核信号处理过程中集成主要组件。其采用了处理器间通信功能、经优化的影像库、网络开发套件以及系统分析器。后者用于采集和分析基准信息。
图8  BIOS MCSDK 的影像处理应用软件框架、
▲图 8. BIOS MCSDK 的影像处理应用软件框架 本演示经配置可运行于器件所支持的任意数量的内核上。可将本演示划分为第一个内核上的单个主系统任务和分配给所有内核的多个从系统任务。主系统任务负责对输入数据进行分组,并将工作分配给从系统任务,然后自从系统任务采集结果,并发送输出数据。当前支持的算法有边缘检测,但经扩展后可支持更多种算法。 总结 TI MCSDK 可为客户提供一种适用于 Linux 和 SYS/BIOS 的高稳健集成型软件开发环境,其目标是使用基于 KeyStone 架构的高性能 DSP 实现快速开发, 进而加速上市进程。
图7  高性能 DSP 实用程序应用 (HUA)
▲图 7. 高性能 DSP 实用程序应用 (HUA) 影像处理演示(图 8)则展示了如何在 BIOS MCSDK 多核信号处理过程中集成主要组件。其采用了处理器间通信功能、经优化的影像库、网络开发套件以及系统分析器。后者用于采集和分析基准信息。
图8  BIOS MCSDK 的影像处理应用软件框架、
▲图 8. BIOS MCSDK 的影像处理应用软件框架 本演示经配置可运行于器件所支持的任意数量的内核上。可将本演示划分为第一个内核上的单个主系统任务和分配给所有内核的多个从系统任务。主系统任务负责对输入数据进行分组,并将工作分配给从系统任务,然后自从系统任务采集结果,并发送输出数据。当前支持的算法有边缘检测,但经扩展后可支持更多种算法。 总结 TI MCSDK 可为客户提供一种适用于 Linux 和 SYS/BIOS 的高稳健集成型软件开发环境,其目标是使用基于 KeyStone 架构的高性能 DSP 实现快速开发, 进而加速上市进程。