《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 解决方案 > 多核软件开发套件

多核软件开发套件

2012-11-01
作者:德州仪器(TI)

Sanjay Bhal 战略市场营销经理,多核与媒体基础架构业务部

Raj Sivarajan 软件工程设计经理,多核与媒体基础架构业务部

Raghu Nambiath 软件设计工程师,多核与媒体基础架构业务部

介绍

    多核数字信号处理器(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 组件

    TI MCSDK 实际上由两个软件生态系统构成。第一个生态系统基于Linux,第二个基于SYS/BIOS。两个都包含可帮助客户便捷启动开发的所有功能性软件。每个生态系统都包含用于多核器件编程的各种机制(比如处理器间通信),在相同器件的不同内核上既可独立使用,也可组合使用。以下章节将总体介绍每个MCSDK 组件。

Linux MCSDK

    Linux 多核软件开发套件(MCSDK) 为支持运行在TI C66x 系列高性能多核DSP 上的Linux 生态系统奠定了坚实基础。该套件包含可随时投入使用的Linux 内核、驱动器、样片应用以及经验证的工具,可充分满足客户的产品开发需求。Linux MCSDK 以开源发行版形式在www.linux-c6x.org上提供,包含预构建二进制程序,可随时通过在参考平台上运行来演示TI 高性能多核DSP 的功能。

    总体而言,支持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 的软件生态系统组件

进程间通信

   多核架构的主要编程要求之一就是能够在各种内核之间进行高效通信。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 使用

软件开发工具

    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 平台上

    BIOS MCSDK 使用TI Code Composer StudioTM(CCS) 作为集成开发环境(IDE)。在软件更新方面,BIOS MCSDK 使用Eclipse 的更新特性通过CCS 自动发现并安装新软件。

软件概览

BIOS MCSDK 中的软件组件(图5)可分为下列类型:

.器件专用软件驱动器

.内核目标软件

.平台专用软件

.演示与工具

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 的系统分析器工具

   演示与工具:该软件集覆盖多种器件,提供构建于上述软件的示例、演示以及工具。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)

 

    影像处理演示(图8)则展示了如何在BIOS MCSDK 多核信号处理过程中集成主要组件。其采用了处理器间通信功能、经优化的影像库、网络开发套件以及系统分析器。后者用于采集和分析基准信息。

8. BIOS MCSDK 的影像处理应用软件框架

    本演示经配置可运行于器件所支持的任意数量的内核上。可将本演示划分为第一个内核上的单个主系统任务和分配给所有内核的多个从系统任务。主系统任务负责对输入数据进行分组,并将工作分配给从系统任务,然后自从系统任务采集结果,并发送输出数据。当前支持的算法有边缘检测,但经扩展后可支持更多种算法。

总结

   TI MCSDK 可为客户提供一种适用于Linux 和SYS/BIOS 的高稳健集成型软件开发环境,其目标是使用基于KeyStone 架构的高性能DSP 实现快速开发,进而加速上市进程。

   如欲了解有关MCSDK 的更多详情,敬请访问www.ti.com/mcsdk;也可访问www.ti.com/c66multicore,查看有关KeyStone 架构以及C66x 系列高性能多核DSP 的详细介绍。

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。