使用LabVIEW开发基于32位处理器的嵌入式系统
扫描二维码
随时随地手机看文章
随着32位多核处理器应用逐渐走热,设计者正面临着新的挑战, 业内专家指出面向角色(actor-oriented)的图形化方法是更适合嵌入式软件设计的工具。NI 的LabVIEW嵌入式开发模块是LabVIEW图形化编程环境的一款全新附加模块,通过这个软件和图形化系统设计的理念,原先无法利用到嵌入式编程的工程师们都可以进入32位微处理器的领域之中。通过LabVIEW中附加的状态图、控制图表、信号处理库函数等这一完整的工具来设计它们的应用,以解决各种问题。本文对该开发工具进行了介绍。
随着嵌入式系统变得越来越复杂,设计者正面临着新的挑战:随着基于32位微控制器(MCU)的嵌入式系统的成本向16位系统逐步接近,在许多高级应用中8位和16位微控制器正逐步让位给扩展性更佳,性能更好的32位片上系统(SoC)。此外,由于单纯通过CPU的性能提升来增加整个系统的性能已经不是一种持久的发展趋势了,所以主要的处理器制造商已经转向了多核心架构。从Dell在几个月前推出的多处理器核心的台式计算机,就可以看到这种趋势。从消费者和用户的观点上来看,处理性能的提升是一样的。但是,从一个嵌入式系统开发者的观点来看,设计将变得更加复杂,因为您必须了解如何在多处理器环境下开发和分割您的应用。根据十年前的估计,嵌入式系统的平均代码量为10万行。到2001年,这个数字实际已经超过了100万,而现在的数字估计为500万。
现在我们将视线转移到当前嵌入式系统的开发工具上来,随着复杂度的逐渐上升,现在传统工具很难降低编程工作的复杂度,嵌入式领域需要另一种方法来应对这些挑战。挑战不仅是工具方面的,还有解决问题的途径:基于文本编程的嵌入式应用开发在将来不可能解决这些问题。这已经是许多业内专家的共识;Edward Lee博士是加州大学伯克利分校嵌入式研究方面的领先者,他指出现在嵌入式系统的开发手段如基于文本编程和面向对象的工具都难以用来构建嵌入式实时系统,因为面向对象很难直观地表达时间和平行性(parallelism),而时间和平行性或并行(concurrency)在现在的嵌入式系统中是必不可少的。Lee博士提出面向角色(actor-oriented)的图形化方法是更适合嵌入式软件设计的工具。
虽然嵌入式系统的挑战越来越严峻,但是现在已经有了许多解决的方向。许多供应商采取了将底层工具的设计抽象出来的办法。这种方法每前进一步,都会吸引更多的用户。另一个方向是可以更彻底地解决面临的挑战,也就是向基于平台的工具转移,它能够更好地表达整个系统,而减少与特定硬件的相关性,这使得更多的软件设计容易理解并被重复使用,而从基于文本的工具向图形化工具的转移则可以直观地表达系统,并解决系统的挑战。图形化系统设计(Graphical System Design)的理念就是源于这些趋势。通过简化嵌入式编程的复杂性,它降低了对领域专家在嵌入式设计流程中各个步骤的要求;同时提供了从设计、原型到部署的一条捷径,使得工程师和科学家们可以更快速地进行重复设计。
尽管市场上的工具都在向图形化的方向转变,但由于它们是针对特定领域特定应用的工具,所以仍旧受到自身的限制,而这是不足以解决行业将要面临的挑战的。事实上,现在的嵌入式系统市场与八十年代早期的台式计算机市场有很多相似之处,其中的一个特点就是非常分散。现在市场所需的是一种完全的图形化编程语言,提供足够的灵活性和功能,以满足更广泛应用的需求。因此,图形化系统设计的关键因素是图形化编程。
将设计方法学直接应用于实现
自1986年诞生以来,LabVIEW图形化编程语言已经开始简化了系统的复杂性,并在同一个平台上提供采集、分析和显示等功能,在使用计算能力对处理过程自动化的同时,允许在研发原型,制造和测试过程中对软硬件的重用,弥补了原先因为原型、制造和测试三个步骤间因工具不同而造成的这一鸿沟。在所有涉及到数据采集和控制的领域里,LabVIEW图形化方式都已经成为标准的开发工具。从那时开始,我们就一直向这个编程环境添加功能上的改进,现在LabVIEW在已有的定时循环结构上新加了硬件定时功能,它是一种表示时间和并行的语义。现在,我们就可以通过点击来设置操作系统优先级,延时,循环速率等等;回想在文章前面所提到的向多处理器转移的趋势,现在我们可以憧憬使用可扩展的直观图形化编程,来开发应用,并将处理过程分配到不同的处理器上。
新的NI LabVIEW嵌入式开发模块(LabVIEW Embedded Development Module,)是LabVIEW图形化编程环境的一款全新附加模块,通过这个软件和图形化系统设计的理念,原先无法利用到嵌入式编程的工程师们都可以进入32位微处理器的领域之中。通过LabVIEW中附加的状态图、控制图表、信号处理库函数等这一完整的工具来设计它们的应用,以解决各种问题。
领域专家-在某个科学或工程领域的专家,但不一定是嵌入式的程序员-一般使用不同的模型或工具解决他们学术上或工程上的问题。例如,开发引擎控制单元(ECU)的工程师可能使用状态图来对引擎控制单元的功能进行图形化的描述。这位工程师可能是一个控制理论方面的专家,但是却可能没有任何嵌入式或C编程方面的经验。直到现在,嵌入式应用的实现仍然需要深入了解关于嵌入式编程工具,如C语言等方面的知识。因此,很多领域专家要实现他们的解决方案,甚至只是简单的验证一个概念仍然要依赖专门的嵌入式开发人员。这个存在于领域专家和嵌入式程序员之间的鸿沟,使得开发时间增加,而且容易在系统中引入错误。
LabVIEW嵌入式开发模块在设计和实现间的鸿沟之上架起了一座桥梁。领域的专家现在可以使用相同环境快速地设计算法,对定制的设计进行原型设计,将他们的解决方案在所选的目标上实现,并进行调试——所有这些过程都是通过图形化方式实现的。
开发与目标无关的代码
嵌入式目标本身要求程序员在编写代码之前对目标有深入的了解。程序需要知道板卡上各种关于内存映射和寄存器的信息,才能在板卡上执行他们的代码。另外,大部分代码是专为某一特定目标编写的。这样,在一块板卡上使用不同的微处理器或是不同的外围设备,可能就需要重新编写大部分已有的代码,或是完全从头开始。这意味着最终产品的扩展性方面是有缺陷的。
图1:LabVIEW 开发界面
但是,使用LabVIEW嵌入式开发模块,工程师和科学家们不需了解最终的目标,就可以进行代码开发,因为软件生成的是LabVIEW应用的ANSI C代码,而不是针对某个特定目标的二进制代码。LabVIEW嵌入式方式是一个开放的框架,它可以整合任意的第三方工具链,将生成的C代码、LabVIEW实时库函数和板卡支持程序包(BSP)编译成为针对某一目标并能在这个目标上运行的二进制代码。BSP是一种作为C代码与板上外围硬件接口的底层代码。因此,如果板卡需要升级,工程师可以简单地将不同的BSP链接到LabVIEW中,在现有的图形化代码上作一小部分改动就可以完成。
与目标无关的代码开发意味着工程师和科学家不再需要等待硬件确定之后再开始设计算法。这样并行的工作和效率的提升,使开发周期和产品上市时间大大缩短。最后,所生成的LabVIEW代码不是针对某个特定平台的,所以您很容易升级到新的硬件。
使用LabVIEW嵌入式特性缩短开发时间
LabVIEW嵌入式开发模块构建在自LabVIEW诞生以来近20年的创新精神之上,帮助工程师和科学家们利用数百个内建的库函数,涵盖高等算法、文件I/O、逻辑和信号处理各个方面。通过LabVIEW嵌入式方式 ,工程师和科学家可以使用一种叫做内联C节点(Inline C Node)的新特性,整合现有的嵌入式代码,来保持LabVIEW的开放架构。
除了用于快速调试的内建图形化用户接口显示件、探针、断点和函数步进之外,LabVIEW嵌入式开发模块为代码调试提供了另外两种无缝的接口。在嵌入式目标平台上,工程师可以使用“仪器调试”(instrumented debugging),以便于通过TCP/IP、RS232,或CAN进行调试。使用内建的片上调试接口,工程师可以通过工业标准协议,如JTAG、BDI和Nexus等,进行调试,同时不影响程序性能。
LabVIEW嵌入式开发模块使领域专家可以使用现有的技术进行更多的应用,使用同一环境进行算法设计、原型,实现他们的解决方案,极大地缩短开发时间和产品上市时间。
NI提供了各种硬件平台与LabVIEW集成,完成从设计、原型到部署的全过程。例如使用LabVIEW和NI 可重复配置I/O(RIO)设备或NI CompactRIO平台,他们可以快速而便捷地创建嵌入式系统的原型。NI现有的一个成功案例就是帮助汽车控制和数据采集解决方案的提供商--Drivven公司通过NI CompactRIO对基于FPGA的2004 Yamaha YZF-R6摩托车引擎控制系统设计原型,他们的目标是为基于FPGA传动控制器提供一条无缝的从原型设计到生产的路径。对于这个项目,Drivven在软件上使用LabVIEW;在硬件上选择了一个4插槽的NI CompactRIO嵌入式系统,因为它灵活性强、体积小巧而且波形因数稳定。利用这一系统,他们可以在轻松地添加传感器和激励器的同时快速且便捷地观察数据,除此之外,还可以在一个超级运动型摩托车上利用的极为有限的空间放置控制器。这个项目包含三个主要的阶段: 1,通过自定义I/O模块的开发。共有三个自定义I/O模块监视着所有摩托车的传感器并控制它的激励器,此外现在正在开发其他的CompactRIO的模块以用于传动控制应用,包括用于驱动电子节流阀的模块和与通用的废气氧气传感器连接的模块。2,映射工厂级ECU(Factory ECU)。把ECU数据记录在1MB的文件上(在每分钟一个文件的速率下高达20个文件)同时在许多种不同的节流阀位置和引擎速率(接近700个操作点)的组合下驾驶摩托车从而完整地映射了工厂级ECU(Factory ECU)的性能。驾驶员仔细地驾驶着摩托车,以尽可能的减少瞬时操作。在一辆跟随的汽车里的工程师则周期地以无线的方式从CompactRIO接收数据文件,传输至一台笔记本电脑并且立即分析这些数据以覆盖所有操作点。一个基于笔记本电脑的NI LabVIEW应用程序迅速地将数据分类至速度/负载操作表,与此同时滤除瞬时数据。对每一个操作点都从这些数据计算出平均和标准的偏差。在两个小时里,这个团队采集了90%摩托车的操作点的数据,这对于全面理解工厂级ECU的映射是一个足够充分的覆盖。后来,在实验室里,工程师又使用LabVIEW对这些数据进行处理,在图形化地修改原始数据以填充丢失的操作点的同时提供了3维和2维的可视化信息。3,引擎控制。在最后阶段,Drivven使用CompactRIO对一个研究性质的ECU进行原型设计,它的性能可以与工厂级ECU相媲美,但是却提供了可以实施未来控制算法研究和开发的功能(这对使用生产目的的电子是不可能的)。利用CompactRIO,Drivven实现了许多引擎管理FPGA核,它们都具有可配置的LabVIEW FPGA图表并放置在方框图里。使用LabVIEW实时模块,实现了速度-密度和alpha-N引擎控制策略(经常用于高性能的赛车场合)的结合。所以说,Compact RIO和LabVIEW提供了所需的可靠性和精确的定时资源,而且这个系统具有足够稳定性来承受工作环境的高温和高振动。如果读者想要阅读完整的解决方案,请访问ni.com/china,输入信息码(info code)cn5k8t。
另外使用LabVIEW嵌入式开发模块,还可以制造嵌入式板卡并部署到任意的32位微处理器。正如LabVIEW使工程师们可以开发定制的虚拟仪器,而不再依赖供应商定义的台式仪器,从而在测试和测量领域掀起一场革命一样,LabVIEW嵌入式开发模块使得业内专家可以使用他们的专业知识开发嵌入式应用,而不需要再依赖嵌入式方面的专家。
NI嵌入式开发模块示意图
随着嵌入式系统设计的复杂性日益增加,图形化方式是一个必然的趋势,它正在对嵌入式设计进行重新的定义,使更多的工程师可以以一种前所未有的方式使用嵌入式开发,从而使设计的速度和质量得到提高。将分散的市场整合、采用标准和现成可用的技术,并发布集成的、易用的软硬件平台——这就是NI多年来所持之以恒的运营模式。图形化系统设计,这是一个将嵌入式设计推向更广大受众的平台,我们通过一个统一的图形化工具提供这种功能,这种工具能将领域专家从越发复杂的嵌入式设计中解脱出来。从设计、原型到实现的整个过程中,使用统一的设计工具无疑将会大大提升整个设计过程的效率。