什么是关键在嵌入式软件的挑战?

G

Guest

Guest
据李教授埃德在他的前Kluwer学术出版社编辑
(http://www.hwswworld.com/uploaddownload/frontier11.php),我列出了一些
主要挑战在嵌入式软件,他有没有包括所有的事情,或者只是学术观点?别的东西失踪

欢迎任何投入

埃德

 
你能列入名单
, 以便他在这里的任何机构可以帮助你完成这个名单的主要挑战?

 
当然,我复制/粘贴在这里整份文件
http://www.hwswworld.com/uploaddownload/frontier11.php

最好的,
埃德边境日报

独家边境覆盖系统的设计上卷。2号2005年1月1日住客社论有哪些主要的嵌入式软件的挑战?爱德华李

教授,IEEE院士

电气工程和计算机科学

加州大学伯克利分校首页

mbedded软件传统上一直认为是小的电脑软件。在这种传统的观点,主要问题是资源的限制(小内存,小数据字的大小,以及相对缓慢时钟)。方案强调效率;软件是在一个非常低的水平(汇编代码或C编写的),与丰富的服务套件
, 操作系统避免和专门的计算机体系结构的开发提供硬件
, 共同支持
, 如可编程DSP和网络处理器行动。这些解决方案已确定在过去25年左右的嵌入式软件设计和开发的实践。

当然,对半导体产业的能力
, 遵循摩尔定律下,25年前的资源有限
, 应该有今天几乎完全消失。那么
, 为何嵌入式软件的设计和发展
, 改变这么少?这可能是极端的竞争压力
, 在产品基于嵌入式软件
, 如消费电子,奖励只有最有效的解决方案。这种说法是有问题的,但是,由于有在功能已经证明比效率重要的例子很多。我们将辩称
, 由于资源的限制
, 不只是界定为嵌入式软件的因素,甚至可能不是主要因素。

资源限制是一个问题
, 在一定程度上几乎所有的软件。因此
, 在软件工程一般需要改进的,在理论上,还帮助嵌入式软件。有几个提示,但是,嵌入式软件
, 是从根本上的不同。一,面向对象的技术
, 如继承,动态绑定和多态在实践中很少使用的嵌入式软件开发。另一个例子是,在嵌入式系统中通常避免内存层次结构
, 在通用处理器用于运载大规模虚拟内存空间和更快的执行使用缓存技术的处理器。在第三个例子,自动化的内存管理,分配,释放和垃圾收集,在很大程度上避免了在嵌入式软件。公平地说,也有在嵌入式软件,有些技术如Java在使用手机的成功应用,但其应用仍然有限
, 主要是提供服务
, 实际上更类似于通用软件应用程序(如在手机数据库服务)。

嵌入式系统是软件和硬件集成在软件反应的传感器数据和命令的执行器的问题。物理系统是一个整体
, 不可分割的一部分
, 该软件必须在音乐会概念化运作的物理系统。体育系统在本质上是并行和时间。行动和反应同时发生
, 并随着时间的推移和时间的度量属性是对系统行为的重要组成部分。当时的软件方法抽象出来的时间,订货取代它。在诸如C语言,C 必要的语言和Java,行动的顺序是由程序定义的,但不是他们的时间。这是目前覆盖抽象必须与另一个线程或进程,通常提供的操作系统,但偶尔的语言(如Java中)。

在时间安排在核心抽象的缺乏是一个缺陷,从嵌入式软件的角度来看,作为一个并发的线程模型是一个贫穷比赛嵌入式系统。他们主要集中于从根本上提供连续模型的并发幻觉,他们只对并发温和的水平
, 或高度分离的系统
, 共享资源,在尽最大努力安排好足够的政策。事实上,最近有几项创新的嵌入式软件的框架,如Simulink的(从Mathworks),TinyOS的(由Berkeley)和级联(从爱斯特尔技术公司)没有线程或进程。

嵌入式软件系统一般认为比通用软件可靠性标准要高得多。通常,在软件故障可危及生命(如航空电子设备和军事系统)。普遍的并发线程模型为基础的
, 并不能达到足够的可靠性。在这一普遍的模式,线程之间的相互作用是十分困难的人理解。控制信号使用这种相互作用和相互排斥的锁,方法的基本技术
, 可追溯到20世纪60年代。这些技术往往导致死锁或活锁的条件,其中所有或部分程序不能继续执行。在通用计算,这是不方便,而且通常的力量是该计划的重新启动(甚至是机器重新启动)。然而,在嵌入式软件,这些错误可能远远超过不便。此外,软件通常是书面没有这些联锁机制的充分利用,在比赛条件下产生的收益不确定的程序的行为。

在实践中,使用不当引起的误差(或没有信号灯和相互排斥的锁使用)是非常困难的检测试验。守则可以行使几年前
, 存在设计缺陷出现。静态分析技术可以帮助(如太阳微系统LockLint),但这些方法往往是保守的近似和/或误报挫败,他们在实践中没有得到广泛使用。

可以认为
, 不可靠的多线程程序
, 至少部分是由于缺乏足够的软件工程过程。举例来说,更好的代码审查,更好的规范,更好的符合性测试,更好地对发展进程的计划可以帮助解决问题。诚然
, 这些技术可以提供帮助。然而,程序
, 使用线程可以为程序员很难理解。如果一个程序是不可理解的,则没有数量的过程改进将使可靠。形式化方法可以帮助检测线程程序中的缺陷,并在这一过程能够提高认识
, 一个设计师在一个复杂的程序行为已。但是
, 如果基本的机制
, 从根本上导致程序难于理解,那么这些改进将低于提供可靠的软件。

在嵌入式软件的关键挑战是发明(或申请)抽象产量更容易理解的程序都是并发和定时。这些抽象将有很大的不同
, 从广泛用于设计和总体发展用途使用的软件。

 
高mm这篇文章是非常好的
, 但在嵌入式软件的观点仅集中点,虽然在硬件也面临一些挑战
, 但没有提及的文章在这里。

 

Welcome to EDABoard.com

Sponsor

Back
Top