历史上的今天
返回首页

历史上的今天

今天是:2024年11月18日(星期一)

正在发生

2019年11月18日 | 使用图形化的开发环境――LabView开发嵌入式系统

2019-11-18 来源:eepw

传统设计模式所应对的挑战


嵌入式系统正在渗入现代社会的各个方面,广泛地应用于航空航天、通信设备、消费电子、工业控制、汽车、船舶等领域,据统计,在美国平均每个中产阶级家庭要使用40~50个嵌入式系统。巨大的市场需求推动了嵌入式系统向更高的技术水平发展。设计师们一方面采用性能更强大的嵌入式处理器如32位、64位RISC芯片取代传统的8位、16位微处理器;另一方面嵌入式系统也由单处理器单操作系统的传统结构向混合型Multi-core系统发展,通过采用多个处理器和OS提高系统并行度来提高系统运行效能,并且设计师们往往同时采用MPU、DSP和FPGA等多种可编程器件来增强处理能力,满足应用功能的升级。


嵌入式系统复杂性的不断增加给设计师们带来了很大的挑战,代码长度呈指数级增加,根据十年前的估计,嵌入式系统的平均代码量为10万行,到2001年实际已经超过了100万,而现在估计为500万。第三方独立市场预测机构EMF在对900多名嵌入式系统开发人员进行调研后指出,超过50%的嵌入式设计比预期时间晚上市,而平均延迟高达4个月;在已发布的产品中,有近30%的设计未达到预期的功能和指标。由此可见,随着嵌入式系统复杂性的不断增加,软件工程的重要性毋庸置疑,而大部分的嵌入式系统开发人员都缺乏这方面的专业训练。与此同时,随着嵌入式系统的广泛应用,越来越多领域的专家比如机器人设计师、控制工程师、测试工程师需要使用嵌入式技术来构建他们的系统,他们既缺乏嵌入式系统的专业知识,也不一定经过软件工程的专业训练。因此,无论是嵌入式系统本身的发展,还是开发人员的专业限制,都需要一种新的设计模式和解决问题的途径来应对目前的挑战。


嵌入式系统开发工具的发展趋势

随着嵌入式系统的快速发展和复杂性的不断增加,基于文本的编程方式所面临的挑战愈发严峻,这种编程模式在将来不可能彻底解决问题。加州大学伯克利分校嵌入式研究专家EdwardLee博士指出,现有的嵌入式系统的开发手段如基于文本编程和面向对象的工具都难以用来构建嵌入式实时系统,因为面向对象很难直观地表达时间和平行性(parallelism),而时间和平行性或并行(concurrency)在现在的嵌入式系统中是必不可少的。面向角色(actor-oriented)的图形化方法是更适合嵌入式软件设计的工具。


应对嵌入式系统所面临的挑战,工程师们已经有了一些解决的方向,比如采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性、简化应用程序设计、保障软件质量和缩短开发周期。但是现有的嵌入式系统开发工具非常多,全世界嵌入式处理器的品种总量已经超过1000种,流行体系结构有30多个系列,在其上运行的操作系统环境也非常多样化,包括VxWorks、QNX、Linux、Nuclears、WinCE等等。不仅各种操作系统有各自的开发工具,在同一系统下开发的不同阶段也有不同的开发工具。如在用户的目标板开发初期,需要硬件仿真器来调试硬件系统和基本的驱动程序,在调试应用程序阶段可以使用交互式的开发环境进行软件调试,在测试阶段需要一些专门的测试工具软件进行功能和性能的测试等等。最合理的解决方案是向基于平台的工具转移,它能够更好地表达整个系统,减少与特定硬件以及操作系统的相关性,使更多的软件设计和算法容易理解并被重复使用;而从基于文本的工具向图形化工具的转移则可以直观地表达系统,图形化系统设计(GraphicalSystemDesign)的理念就是源于这两大趋势。通过简化嵌入式编程的复杂性,降低了对工程师在嵌入式设计流程中各个步骤的要求;同时提供了从设计、原型到部署,从软件调试、功能测试到生产检测的统一环境,使得工程师们可以更快速地进行重复设计。


在嵌入式系统中实现图形化已经成为大势所趋,现在市场上的工具都在向图形化的方向转变,但往往仅限于基于嵌入式操作系统的图形界面开发;而且由于它们是针对特定硬件或操作系统的工具,与硬件和操作系统平台有很大的相关性,这不足以彻底解决行业将要面临的挑战的。现在市场需要的是一种完全的图形化编程语言,提供足够的灵活性和功能,以满足更广泛应用的需求。因此,图形化系统设计的关键因素是图形化编程。


对于时间和平行性的支持

20年来,科学家和工程师一直在使用LabVIEW为他们的设计实验室、验证实验室和生产现场构建自动化数据采集和仪器控制解决方案,并在这些应用领域成为业界的事实标准。其核心在于,LabVIEW图形化编程语言使没有太多软件背景的技术专家能够快速搭建高级自动化测量和控制系统。和传统的文本编程相比,LabVIEW天生是一种并行结构的编程语言,而时间和并行性在现在的嵌入式系统中是必不可少的。比如,LabVIEW在已有的定时循环结构上新加了硬件定时功能,它是一种表示时间和并行的语义,可以设置操作系统优先级、延时、循环速率等等,如图1所示。如果我们将图1所示的两个并行任务的执行目标扩展到嵌入式对象,比如FPGA或微处理器,就可以发现通过编程环境的一致性和可升级性,LabVIEW能够容易地实现和管理嵌入式系统的并行性。回想在文章前面所提到的向多处理器转移的趋势,现在我们可以憧憬使用可扩展的直观图形化编程来开发应用,并将处理过程分配到不同的处理器上。

图1LabView对两个并行任务的编程


支持多种算法设计

谈到嵌入式系统设计,人们所指的其实包括两部分工作:算法设计和固件设计。对于嵌入式系统设计来说,另一个关键要求是软件平台必须能够兼顾实时嵌入式设计中常见的多种算法设计,即计算模型。这些计算模型符合系统设计师们筹划系统时的方式,从而降低从“系统要求”转换到“软件设计”的复杂性。近年来LabVIEW已经包含了多种计算模型以更好地满足不同专业背景的嵌入式系统开发者的需求。LabVIEW现在可以通过连续时间仿真、状态图、图形化数据流模型和基于文本的数学语言mathscript等多种方式来表达各种算法,同时它提供了很多交互式的工具用来帮助数字滤波器、控制模型、通信系统的设计以及数字信号处理算法的开发,从而在这些顶层应用中进一步简化设计师的工作。


快速构建原型—沟通虚拟世界与物理世界的桥梁

如前所述,很多设计比预期时间晚上市,并且有一些在投入市场以后发现未达到预定的功能和指标,因此必须采取一定的措施来加快设计流程、提高设计质量。一种解决方案就是更早地将真实世界的信号和硬件引入到设计流程之中,进行更好的系统原型化,从而在早期就发现并修正潜在的问题。


但是在任何设计和开发流程中,基于软件设计和仿真工具的虚拟世界与电子或机械测量的物理世界之间有一个很大的鸿沟,而LabVIEW平台最明显的价值就是在虚拟和物理世界的鸿沟上建一座桥梁。物理测量是与设计和仿真完全不同的挑战,要求与广泛的测量和控制硬件紧密集成,并以优化的性能处理大量的通道数或超高速吞吐量。LabVIEW平台经过不断演进,在物理测量领域具有很高的性能和灵活性。更重要的是,LabVIEW平台是开放的,设计人员可以将测量数据与仿真结果相映射,甚至互换仿真和物理数据,以用于设计中的行为建模或者以仿真激励驱动物理测试,从而更有效快速地进行系统原型构建。


嵌入式系统开发人员如果要定制硬件用于最终的发布,很难同时并行地开发软件和硬件。而如果直到系统集成测试的时候才引入I/O用真实世界的信号检验设计,一旦发现存在问题,那就意味着很难在预期时间完成设计任务了。大多数设计师当前用评估板来进行系统的原型化,但是,原型板往往只具备少量的模拟和数字I/O通道,也很少支持视觉、运动或同步的功能。此外,设计师经常因为需要传感器或特殊I/O的支持而花费大量时间来开发定制的原型板,而这些仅仅是为了设计概念的验证。使用灵活的、商业化的原型平台可以大大简化这个过程,消除其中硬件验证和板级设计的大量工作。对于大多数系统,原型化平台必须包括最终发布系统的同样部件,比如用于执行算法的实时处理器、用于高速处理的可编程逻辑器件,或者将实时处理器接口到其他部件。因此,如果这个商业化的系统不能满足所有的要求,那么这个平台必须是可扩展的,并且支持自定义。NI提供了各种硬件平台与LabVIEW集成,完成从设计、原型到部署的全过程。例如使用LabVIEW和NI可重复配置I/O(RIO)设备或NICompactRIO平台,可以快速而便捷地创建嵌入式系统的原型。


例如BostonEngineering公司要开发一种牵力控制机用于数码照片打印系统。其中,彩色墨盒通过驱动马达馈送到打印头,由卷带电机和推进电机来控制牵力。切割机底盘的振动、每次打印的照片数目和每个电机的速度变化都会影响到底层的牵力。控制系统通过两个电机的位置来保证卷带和推进的牵力处于设定范围之内,否则就会有色差。设计的牵力控制硬件需要两个脉宽调制输出来控制电机,两个编码器将转速反馈给电机,两个模拟输入通道连接霍尔传感器用来测量位置,两根数字线用于信令。传统的原型板无法满足这些要求,需要使用可以自定义I/O的原型平台,因此他们使用CompactRIO平台来进行原型化工作。他们在嵌入式控制器中运行管理程序,在FPGA中运行电机控制算法,这种资源配置使得原型化构建和最终系统发布在编程模式上是非常相似的。为了在FPGA中运行控制算法,他们将ZPK(zero-pole-gain)模型转化为LabVIEW数字滤波器设计工具包中提供的一种滤波器,由于这个工具包支持LabVIEWFPGA代码的自动生成和优化,所以原先的ZPK模型就可以直接转化成能够在FPGA上运行的代码。另外,他们还使用这个工具包对原先的浮点算法进行了定点转换,以节约FPGA资源,并对量化后的模型进行测试、验证、修正从而得到预期的结果。通过这种原型化方式,他们节约了大量的开发时间。


发布到任何32位处理器

LabVIEW包括一个广泛的工具集,该工具集构成了一个用于设计、控制和测试的图形化开发平台。新的NILabVIEW嵌入式开发模块是LabVIEW图形化编程环境的一款全新附加模块,是一个开放的框架,它可以集成任意的第三方工具链,将生成的C代码与LabVIEW运行库函数和板卡支持程序包,编译成为针对某一目标并能在之上运行的二进制代码。通过LabVIEW嵌入式开发模块和工具链,可以发布到运行任何操作系统的任何的32位处理器。该模块包含了近千个内建的库函数,涵盖了高等算法、文件I/O、逻辑和信号处理各个方面。原先无法利用到嵌入式编程的工程师们都可以进入32位微处理器的领域之中,通过LabVIEW中附加的状态图、控制图表、信号处理库函数等这一完整的工具来设计他们的应用,解决各种问题。此外,通过LabVIEW嵌入式方式,工程师和科学家可以使用一种叫做内联C节点(InlineCNode)的新特性,整合现有的嵌入式代码,来保持LabVIEW的开放架构。另外,在LabVIEW嵌入式项目环境中,还可以直接添加用C或者汇编开发的源代码,或者库文件,帮助开发人员充分利用以前的工作成果。

图2内联C节点

LabVIEW嵌入式环境的调试功能非常强大。除了用于快速调试的图形化用户接口显示件、探针、断点和函数单点调试之外,LabVIEW嵌入式开发模块为代码调试提供了另外两种无缝的接口。在嵌入式目标平台上,工程师可以使用“仪器调试”通过TCP/IP、RS232或CAN进行调试。使用内建的片上调试接口,工程师可在不影响程序性能基础上通过工业标准协议如JTAG、BDI和Nexus等进行调试。


减少与特定硬件以及操作系统的相关性

基于平台的工具,需要能够表达整个系统,而减少与特定硬件以及操作系统的相关性。在传统的开发模式中,嵌入式目标本身要求程序员在编写代码之前对目标有深入的了解。程序需要知道板卡上各种关于内存映射和寄存器的信息,才能在板卡上执行他们的代码。另外,大部分代码是专为某一特定目标编写的。这样,在一块板卡上使用不同的微处理器或是不同的外围设备,可能就需要重新编写大部分已有的代码,或是完全从头开始。这意味着最终产品的扩展性方面是有缺陷的。使用LabVIEW嵌入式开发模块,工程师和科学家们不需要了解最终的目标就可以进行代码开发,因为软件生成的是LabVIEW应用的ANSIC代码,而不是针对某个特定目标的二进制代码。如图3所示,灰色区域的部分对于开发员来说是透明的,他们在开发过程中不需要了解目标硬件上内存映射和寄存器的情况。同时,LabVIEW嵌入式方式是一个开放的框架,它可以整合任意的第三方工具链,将生成的C代码、LabVIEW运行库函数和板卡支持程序包(BSP)编译成为针对某一目标并能在这个目标上运行的二进制代码。BSP是一种作为C代码与板上外围硬件接口的底层代码。因此,如果板卡需要升级,工程师可以简单地将不同的BSP链接到LabVIEW中,在现有的图形化代码上作一小部分改动就可以完成。

图3LabView嵌入式模块的开发流程

与目标无关的代码开发意味着工程师和科学家不再需要等待硬件确定之后再开始设计算法。这样并行的工作和效率的提升,使开发周期和产品上市时间大大缩短。最后,所生成的LabVIEW代码不是针对某个特定平台的,所以您很容易升级到新的硬件。


结语

LabVIEW为嵌入式系统开发提供了一个跨越多种、多代产品的连贯性的平台,使设计人员能够多年重复并改进其设计,而不必替换其整个工具集或者重新学习不同的设计方法,从而使设计的速度和质量得到提高。同时,其图形化的编程模式使得更多的工程师和科学家可以使用他们的专业知识开发嵌入式应用,而不需要再依赖嵌入式方面的专家。使用统一的环境进行设计、原型到部署,LabVIEW为嵌入式系统开发提供了前所未有的革新方式。

推荐阅读

史海拾趣

Amphenol Piher公司的发展小趣事

Amphenol Piher 是 Amphenol 公司的一部分,专注于设计、制造和销售电子行业中的传感器和电位器等产品。以下是关于 Amphenol Piher 公司发展的五个相关故事:

  1. 创立与初期发展:Amphenol Piher 公司的历史可以追溯到20世纪60年代,在西班牙的Valencia成立。最初,公司主要致力于生产电位器和传感器等电子元器件,为不同行业的客户提供定制化的解决方案。随着市场需求的增长和公司技术实力的提升,Amphenol Piher 逐渐赢得了客户的信任和市场认可。

  2. 技术创新与产品多样化:Amphenol Piher 公司在技术研发方面持续投入,并不断推出新型的传感器和电位器产品。公司专注于提升产品性能、精度和可靠性,满足客户对高品质电子元器件的需求。除了传统的电位器和传感器,Amphenol Piher 还推出了一系列新型产品,如角位移传感器、线性位移传感器等,为不同应用领域提供多样化的解决方案。

  3. 客户合作与定制化解决方案:Amphenol Piher 公司与客户建立了紧密的合作关系,致力于开发定制化的传感器和电位器解决方案。公司的工程团队与客户密切合作,根据客户的需求和应用场景,设计和制造符合特定要求的产品。这种定制化解决方案能够满足客户个性化的需求,为客户提供更加专业和完善的服务。

  4. 质量控制与认证标准:Amphenol Piher 公司高度重视产品质量控制,并严格遵循国际质量管理体系标准。公司的生产工艺和质量管理体系符合ISO 9001质量管理体系认证标准,以确保产品质量的稳定性和可靠性。此外,Amphenol Piher 公司的产品还通过了各种行业和应用领域的认证标准,如汽车行业的TS16949认证等,确保产品符合行业标准和规定。

  5. 全球市场拓展与合作伙伴关系:除了在西班牙的生产基地外,Amphenol Piher 公司还在全球范围内设有多个销售办事处和代理商网络,拓展了国际市场份额。公司与全球各种行业领先企业建立了长期稳定的合作关系,共同推动产品的创新和市场拓展。通过全球市场拓展和合作伙伴关系,Amphenol Piher 公司不断扩大业务规模,增强了在电子行业中的市场竞争力。

这些故事展示了 Amphenol Piher 公司从成立初期到如今在技术创新、产品多样化、客户合作与定制化解决方案、质量控制与认证标准以及全球市场拓展与合作伙伴关系等方面取得的重要进展。

E-tec Interconnect Ltd公司的发展小趣事

随着技术的不断成熟和产品质量的不断提升,E-tec开始积极拓展市场。他们与多家国际知名的电子设备制造商建立了合作关系,产品逐渐进入全球供应链。为了进一步提升产品质量和竞争力,E-tec通过了ISO 9001质量管理体系认证,以及多项行业内的品质认证,如UL、CE等。这些认证不仅提升了公司的品牌形象,也增强了客户对公司的信任。

ENPIRION公司的发展小趣事

在电源管理领域,ENPIRION公司不断面临各种技术挑战。例如,如何满足企业级、工业级、通信等市场对产品的高可靠性要求?如何提供最优的电源转换率以降低成本和散热?为了应对这些挑战,ENPIRION公司不断投入研发力量,推出了一系列创新的电源管理解决方案。这些解决方案不仅满足了市场的需求,还进一步巩固了ENPIRION公司在电源管理领域的领先地位。

Gamewell-FCI ( Honeywell )公司的发展小趣事

随着ENPIRION公司产品的不断推出和市场的逐步扩大,公司开始寻求与各大电子制造商的合作。通过与小米、OPPO、vivo等知名品牌建立合作关系,ENPIRION公司的电源管理解决方案得到了更广泛的应用,进一步提升了其市场影响力和竞争力。这些合作伙伴关系的建立不仅为ENPIRION公司带来了更多的商业机会,也为其技术创新和产品升级提供了更广阔的平台。

台湾晶豪(ESMT)公司的发展小趣事

晶豪科技(ESMT)于1998年由赵瑚博士创立,公司自初创时就立志成为客户各类型内存产品及技术的供应者。经过数年的努力,公司在DRAM产品研发上取得了显著成果,广泛应用于PC外围、信息家电、消费性电子产品及通讯系统等领域。2002年3月,晶豪科技在台湾证券交易所成功挂牌上市(代号3006),这一里程碑事件为公司后续的发展奠定了坚实基础。

Array Microsystems Inc公司的发展小趣事

为了支持公司的快速发展和技术创新,Array Microsystems Inc高度重视人才引进和团队建设。公司积极招聘业内优秀的技术人才和管理人才,为他们提供良好的工作环境和福利待遇。同时,公司还注重员工的培训和晋升机制,鼓励员工不断学习和成长。这些措施使得Array Microsystems Inc拥有了一支高素质、专业化的团队,为公司的发展提供了有力的人才保障。

问答坊 | AI 解惑

44B0X中文资料.大家支持下

44B0X中文资料.大家支持下…

查看全部问答>

PTT/POC手机对讲软件比较,常见PTT/POC手机对讲软件分析和评测

PTT/POC手机对讲软件比较,常见PTT/POC手机对讲软件分析和评测 PTT手机对讲软件是3G时代一个新的软件财富的传奇,到底什么是PTT手机对讲软件呢?按照百度百科对PTT的解释是这样的, PTT一键通(Push-to-Talk)功能是利用软件技术实现的一种全新的 ...…

查看全部问答>

PUCHAR类型字符串转换大小写

PUCHAR类型一个字符串,如何把它转换成小写 …

查看全部问答>

VC2005做的pocket pc程序怎么能让界面不在自动全屏?

用vs.net2005中的C++做的pocketpc程序运行后界面总是自动全屏化,该怎么解决?…

查看全部问答>

51单片机串口发送问题

为什么我这样不能发?那个TI不处理我至少应该收到一个啊?                              for(m=0;m…

查看全部问答>

四款充电器系列方案

四款充电器系列方案  充电器系列方案 方案一、1-4节AA/AAA NI-MH 四并充充电器功能如下:1、输入电源:AC90—260V;2、充电电池类型:AA(2500MAH)/AAA(900MAH)镍氢电池;3、充电控制方式:四节电池、并联分时充电方式、单独控制;4、指示 ...…

查看全部问答>

MDK全局变量初始化的问题

1,使用MICROLIB时,全局变量没有初始化;2,不使用MICROLIB时,如果不重定义_sys_exit()可以看到全局变量被正确初始化了,但在BKPT处停止 3,不使用MICROLIB时,重定义_sys_exit(),变量又没初始化 MDK咋这难用呢,问题出在哪?…

查看全部问答>

哪位大侠可以给我完整深入的说一下TMS320F2812,我的毕业设计要用到

哪位大侠可以给我完整深入的说一下TMS320F2812,我的毕业设计做的就是DSP,因为没学过,所以现在用就很吃力。 希望那个大哥大姐帮我一下,越详细越好,一些硬件结构,外部电路,寄存器设置等等,谢谢了。…

查看全部问答>