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)。
本文关键字:软件开发 综合-其它,单片机-工控设备 - 综合-其它