更简单的软件设计工具

将硬件和软件集成到嵌入式系统中是很复杂的。在选择和使用软件设计工具时保持简单,以缩短设计、开发、测试、实现和升级。正确的工具可以加速开发并提高质量,在设计周期的早期解决问题。

通过詹姆斯·史密斯,布雷特·伯格 2013年7月25日

在各行各业中,嵌入式系统正变得越来越复杂,不幸的是,传统软件工具正在适应复杂性的增长。在设计过程中,系统开发人员面临着各种各样的挑战:为复杂系统中必须一起工作的不同类型的处理技术编程,平衡特性请求与上市时间,平衡验证测试与健壮性,并确保团队成员具有适合项目的专业知识水平。系统开发人员需要的是更少、更高效的工具,这些工具将帮助他们花更多的时间在工程算法上,而在硬件和软件集成上花更少的时间。

系统设计软件环境

系统设计软件环境用于设计和测试各种控制和测量系统。它们与现有软件、知识产权(IP)和硬件进行了前所未有的集成,同时利用了最新的计算技术。系统设计软件环境具有解决当今系统设计问题的工具和未来创新的能力。这些软件工具与特定的硬件体系结构和模块化平台集成,以最大限度地提高从早期原型到最终部署的生产力和软件重用。经过验证的硬件和软件集成消除了为所有形式的I/O和外围设备开发专用驱动程序和中间件的需要,允许嵌入式设计人员快速开始开发特定的应用程序。

系统设计软件环境需要提供以下关键功能和能力:

1.支持广泛的处理元素,如微处理器,fpga和gpu

2.提供一整套完整的计算模型。系统设计软件不能将嵌入式设计人员限制在一种计算语言或软件模型上。系统设计人员需要能够在一个环境中为其应用程序的各个方面使用适当的语言,无论是图形编程、文本数学、C/ c++ / c#还是HDL(参见图1)。

3.模拟功能

4.用户界面开发工具

5.系统部署和维护管理。

使用一个系统设计环境来设计、原型化和部署嵌入式系统的历史挑战之一是在同一设计中通常使用现场可编程门阵列(fpga)和微处理器(mpu)。虽然这种架构已被证明是许多先进控制和监控系统的理想选择,但在历史上,FPGA和MPU需要不同的语言和专业技能来编程。系统设计软件允许在一个环境中为两个处理元素进行系统开发。

架构师构建模型的原因

整个设计过程就是一场快速和正确的拉锯战。在存在多种想法的早期阶段,这两方似乎分歧最大。从零开始需要时间,第一步可能是最重要的,因为它决定了整个设计的方向。这就是为什么建筑师在他们的建筑图纸上创建建筑模型。建筑模型可以以相对较低的成本提供最终设计的完整视图,允许所有利益相关者为创意过程提供输入,并允许建筑师看到他们的概念实现并进行任何必要的修改。对于大型建筑项目来说,直接从草图到破土动工风险太大。创建建筑模型是在时间和功能之间取得平衡的有效工具。嵌入式控制系统相当于架构模型是功能原型。

功能原型与硬件I/O(输入-输出)点、传感器连接,并运行所设计算法的当前迭代。有了一个正常运行的原型,工程师们可以进行更真实的测试,从而更早地发现更多的问题,这最终将缩短设计周期。航空航天和汽车行业有不止一个软件模拟没有发现关键设计缺陷的例子。这只是为什么控制系统的功能原型如此重要的原因之一,尽管发现算法问题仍然必须与上市时间相平衡。

传统程序员的设计过程可以追溯到高中计算机科学课程:从流程图到伪代码。从架构示例来看,这更接近于草图而不是模型。C语言的低级特性需要在开始真正的算法开发之前进行大量的内部管理,而且这种级别的优化是以时间为代价的,因为必须花费精力管理内存、生成线程和与I/O元素通信。

系统级设计工具提供的抽象从三个方面帮助工程师开发新想法的概念。首先,开发人员花更多的时间在算法构建上,而花更少的时间建立一个最终可能被废弃的软件框架。其次,系统设计软件通常包含行业标准功能的预构建IP,因此程序员可以专注于解决新问题,而不是市场已经覆盖的问题。这两个好处都缩短了上市时间。系统级设计软件还允许设计人员选择不同于原型平台的最终部署目标,只需进行最小的软件更改。

阻碍生产力的障碍

由于上述原因,许多嵌入式系统设计人员选择使用抽象的系统级设计工具进行原型设计,然后将结果“扔到墙外”,这样整个项目就可以在C语言中重新构建以进行最终部署。想象一下,如果工程师能够清理和部署原型代码,将节省多少时间。有些设计可能需要这种转换,但改变编程工具是以时间为代价的,而不仅仅是用一种新语言编写算法所需的时间。C语言的好处之一是它可以针对广泛的硬件,但这需要大量的工作来定制代码以适应所设计的硬件。此外,今天的许多设计结合了处理和逻辑设备,如fpga、复杂可编程逻辑设备(cpld)和数字信号处理器(dsp),这需要额外的软件编译器和组装包。

系统设计软件通常与硬件组件平台一起提供,以促进更快的开发,同时为设计优化提供一些灵活性。系统级设计软件支持大量的英特尔、飞思卡尔、ARM、TI和ADI技术以及特定的嵌入式控制硬件。软件/硬件平台的组合消除了对直接内存访问(DMA)传输、VHDL [VHSIC(超高速集成电路)硬件描述语言]编程和内存处理的低级管理的需要。这些结构需要时间来实现,但很少是市场上“新IP”的一部分。控制开发人员利用相同的系统级设计工具进行原型和部署,可以消除生产效率的障碍,并大大缩短推向市场的时间。

如何应对未来

在1.0版本发布之前,就开始编译2.0版本中要添加的特性列表。优秀的嵌入式系统开发人员会为系统升级和设计做好计划,以便将来更容易地添加或更改代码。面向未来的代码最常用的方法是软件抽象。遍布整个代码库的低级代码很难更改,这就是开发人员构造执行高级功能的代码模块的原因。系统级设计工具本质上是抽象的,因此如果使用得当,有助于将来的升级。

并不是对设计所做的所有更改都是计划好的特性。在设计的整个生命周期中,各个组件和技术都服从于生命周期规划,并且基于技术,组件更改可能触发软件升级的需求。来自一个供应商的系统设计软件将管理所有的软件组件。如果没有这种管理,传统的设计人员必须跟踪编译器、汇编器和其他低级软件工具的兼容性,这进一步增加了由于生命周期结束(EOL)问题而被迫重新设计的风险。

这都是关于投资回报率的

投资回报率(ROI)是项目最重要的计算之一。使用传统的C编程语言和内部硬件进行嵌入式系统开发可能会降低成本(以兆字节的随机访问存储器(RAM)、CPU负载或所需的硬件组件来衡量),但是设计团队将用总体开发成本和上市时间来支付这种优化。除了时间之外,由于需要不同的专家来进行VHDL编程、DSP汇编语言、实时操作系统(OS)集成和控制算法,团队的规模也在增加。图2显示了系统设计软件和低级的、特定于目标的编程工具之间的复杂性差异。

上市时间效益计算不仅仅包括简单的收入和长期利润。提早完成项目可能意味着率先进入市场和获得更大份额的区别;或者,虽然产品可能更好,但落后于市场,但为时已晚,无法被视为领导者,因此被降级为“我也是”。通过简化复杂性并将设计重点放在新的IP上,而不是优化常见的编程结构,系统设计软件帮助工程师第一个进入市场并拥有最好的产品。

James Smith是国家仪器公司的嵌入式系统总监,Brett Burger是嵌入式系统高级产品经理。由CFE Media内容经理马克·t·霍斯克编辑,控制工程、mhoske@cfemedia.com

在线

NI提供更多关于系统设计软件的信息www.ni.com/embeddedsystems

关键概念

  • 简化复杂性,将设计重点放在新的知识产权上。
  • 允许系统设计软件优化常见的编程结构。
  • 更好的嵌入式系统软件工具可以帮助工程师第一个进入市场并拥有最好的产品。

考虑一下这个

速度和质量,而不是速度和质量:你是想成为市场第一,获得更大的份额,还是想凭借可能更好的产品位居市场第二,但为时已晚,无法成为领导者