51嵌入式C标准报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2007中国嵌入式计算平台论坛研究报告嵌入式C标准研究报告(一)---MISRAC标准工程师笔记VER:1.01PAGE:40编辑:肖燕、张墨关键词:MISRAC可靠性安全编程规范嵌入式软件国际标准研究组建专家组中国单片机公共实验室2007年5月2007中国嵌入式计算平台论坛研究报告前言C语言是开发嵌入式应用的主要工具,然而C语言并非是专门为嵌入式系统设计,相当多的嵌入式系统较一般计算机系统而言对软件安全性(可靠性)有更苛刻的要求,所以因此会带来更多的安全隐患。丰田汽车已经表示要对2005年10、2003年8月至2004年11月生产的约16万辆混合动力汽车“普锐斯”进行无偿修理。据称,主要是发动机的ECU程序出了问题,行驶中发动机会突然停止。此外宝马公司2003年7月也因发动机ECU的软件问题而提出召回缺陷汽车。1999年7月22日,通用汽车公司(GeneralMotors)也因为其软件设计上的一个问题,被迫召回350万辆已经出厂的汽车。同样,在电梯和医疗器械产品上也出现过类似的严重问题。由此可以看出软件质量问题已经越来越深刻的影响到了产品的质量,甚至有些时候是致命的,在航空航天等领域更是如此。然而,很少有程序员知道什么样的程序是安全的程序。很多程序只是表面上可以干活,还存在着大量的隐患。当然,这其中也有C语言自身的原因。因为C语言是一门‘入门容易,得道难’的语言,其灵活的编程方式和语法规则对于一个新手来说很可能会成为机关重重的陷阱。同时,C语言的定义还并不完全,即使是国际通用的C语言标准,也还存在着很多未完全定义的地方。要求所有的嵌入式程序员都成为C语言专家,避开所有可能带来危险的编程方式,是不现实的。昀好的方法是有一个针对安全性的C语言编程规范,告诉程序员该如何做。MISRAC因此应运而生。1994年,在英国成立了一个叫做汽车工业软件可靠性联合会(TheMotorIndustrySoftwareReliabilityAssociation,简称MISRA)的组织。它是致力于协助汽车厂商开发安全可靠的软件的跨国协会,其成员包括:AB汽车电子、罗孚汽车、宾利汽车、福特汽车、捷豹汽车、路虎公司、Lotus公司、MIRA公司、Ricardo公司、TRW汽车电子、利兹大学和福特VISTEON汽车系统公司。经过了四年的研究和准备,MISRA于1998年发布了一个针对汽车工业软件安全性的C语言编程规范——《汽车专用软件的C语言编程指南》(GuidelinesfortheUseoftheCLanguageinVehicleBasedSoftware),共有127条规则,称为MISRAC:1998。目前MISRAC:2004版已有141条规则,21个类别,每一条规则对应一条编程准则。如今MISRAC已经被越来越多的企业接受,成为用于嵌入式系统的C语言标准,特别是对安全性要求极高的嵌入式系统,软件应符合MISRA标准。在未来,MISRAC也趋向于成为国际性的嵌入式C语言开发标准规范。未来全部的嵌入式产品可能必须符合MISRAC标准。所以要提高产品的竞争力,避免国际2007中国嵌入式计算平台论坛研究报告标准化推广使中国嵌入式系统开发企业处于被动,中国计算机学会嵌入式系统专业委员会建议联合中国汽车工程学会、中国系统工程学会和ISO国际标准化组织相关专家组在中国开展嵌入式系统安全规范开发研究工作并组织中国专家工作组。通过引进、消化、吸收、再创新为中国的嵌入式系统企业学习MISRAC标准提供支持,共同分享先进的国际标准化信息和技术文档以提升中国嵌入式系统工程师软件水平,与国际标准化组织的昀新成果保持同步。目前已有众多国内知名公司和权威机构加入到了嵌入式系统安全规范开发研究专家组,如:清华大学汽车系、北京英贝多公司、北京集成电路设计园等。共同致力于提升中国嵌入式研究能力。以下的文章是一些工程师的MISRAC的学习笔记,推荐给各位参考。笔记中的某些观点并不全面,表达上也不够准确与国际标准的昀新进展是有差距的,但对了解MISRAC有一定的参考价值。从中国发展嵌入式系统战略的角度看,我们需要组织国内专家进行更深入系统的对MISRAC和嵌入式系统C语言标准进行研究和持续跟踪,以有效提升中国嵌入式工程师的水平。在SOC开发方面和单片机应用方面,对嵌入式C语言标准化和规范化有着强烈的需求,这也是保证我国嵌入式系统工业发展的基础环节。希望有志之士能够加入我们的专家组。天下大事必作于细。(中国老子)魔鬼长存于细节之中。(西方谚语)如想了解更多MISRAC和专家组的信息请与中国单片机公共实验室联系。TEL:010-82357581Email:support@bol-system.comWeb:合作平台和技术资源:中国汽车工程学会汽车电子技术分会中国计算机学会嵌入式系统专业委员会中国系统工程学会信息系统工程专业委员会国际标准化组织嵌入式软件标准化专家组ISO/WG1/TF12007年5月25日2007中国嵌入式计算平台论坛研究报告学习MISRAC之一:“安全第一”的C语言编程规范C语言是开发嵌入式应用的主要工具,然而C语言并非是专门为嵌入式系统设计,相当多的嵌入式系统较一般计算机系统对软件安全性有更苛刻的要求。1998年,MISRA指出,一些在C看来可以接受,却存在安全隐患的地方有127处之多。2004年,MISRA对C的限制增加到141条。嵌入式系统应用工程师借用计算机专家创建的C语言,使嵌入式系统应用得以飞速发展,而MISRAC是嵌入式系统应用工程师对C语言嵌入式应用做出的贡献。如今MISRAC已经被越来越多的企业接受,成为用于嵌入式系统的C语言标准,特别是对安全性要求极高的嵌入式系统,软件应符合MISRA标准。第一讲:“‘安全第一’的C语言编程规范”,简述MISRAC的概况。C/C++语言无疑是当今嵌入式开发中昀为常见的语言。早期的嵌入式程序大都是用汇编语言开发的,但人们很快就意识到汇编语言所带来的问题——难移植、难复用、难维护和可读性极差。很多程序会因为当初开发人员的离开而必须重新编写,许多程序员甚至连他们自己几个月前写成的代码都看不懂。C/C++语言恰恰可以解决这些问题。作为一种相对“低级”的高级语言,C/C++语言能够让嵌入式程序员更自由地控制底层硬件,同时享受高级语言带来的便利。对于C语言和C++语言,很多的程序员会选择C语言,而避开庞大复杂的C++语言。这是很容易理解的——C语言写成的代码量比C++语言的更小些,执行效率也更高。对于程序员来说,能工作的代码并不等于“好”的代码。“好”代码的指标很多,包括易读、易维护、易移植和可靠等。其中,可靠性对嵌入式系统非常重要,尤其是在那些对安全性要求很高的系统中,如飞行器、汽车和工业控制中。这些系统的特点是:只要工作稍有偏差,就有可能造成重大损失或者人员伤亡。一个不容易出错的系统,除了要有很好的硬件设计(如电磁兼容性),还要有很健壮或者说“安全”的程序。然而,很少有程序员知道什么样的程序是安全的程序。很多程序只是表面上可以干活,还存在着大量的隐患。当然,这其中也有C语言自身的原因。因为C语言是一门难以掌握的语言,其灵活的编程方式和语法规则对于一个新手来说很可能会成为机关重重的陷阱。同时,C语言的定义还并不完全,即使是国际通用的C语言标准,也还存在着很多未完全定义的地方。要求所有的嵌入式程序员都成为C语言专家,避开所有可能带来危险的编程方式,是不现实的。昀好的方法是有一个针对安全性的C语言编程规范,告诉程序员该如何做。1MISRAC规范1994年,在英国成立了一个叫做汽车工业软件可靠性联合会(TheMotorIndustrySoftwareReliabilityAssociation,以下简称MISRA)的组织。它是致力于协助汽车厂商开发安全可靠的软件的跨国协会,其成员包括:AB汽车电子、罗孚汽车、宾利汽车、福特汽2007中国嵌入式计算平台论坛研究报告车、捷豹汽车、路虎公司、Lotus公司、MIRA公司、Ricardo公司、TRW汽车电子、利兹大学和福特VISTEON汽车系统公司。经过了四年的研究和准备,MISRA于1998年发布了一个针对汽车工业软件安全性的C语言编程规范——《汽车专用软件的C语言编程指南》(GuidelinesfortheUseoftheCLanguageinVehicleBasedSoftware),共有127条规则,称为MISRAC:1998。C语言并不乏国际标准。国际标准化组织(InternationalOrganizationofStandardization,简称ISO)的“标准C语言”经历了从C90、C96到C99的变动。但是,嵌入式程序员很难将ISO标准当作编写安全代码的规范。一是因为标准C语言并不是针对代码安全的,也并不是专门为嵌入式应用设计的;二是因为“标准C语言”太庞大了,很难操作。MISRAC:1998规范的产生恰恰弥补了这方面的空白。随着很多汽车厂商开始接受MISRAC编程规范,MISRAC:1998也成为汽车工业中昀为著名的有关安全性的C语言规范。2004年,MISRA出版了该规范的新版本——MISRAC:2004。在新版本中,还将面向的对象由汽车工业扩大到所有的高安全性要求(Critical)系统。在MISRAC:2004中,共有强制规则121条,推荐规则20条,并删除了15条旧规则。任何符合MISRAC:2004编程规范的代码都应该严格的遵循121条强制规则的要求,并应该在条件允许的情况下尽可能符合20条推荐规则。MISRAC:2004将其141条规则分为21个类别,每一条规则对应一条编程准则。详细情况如表1所列。表1MISRAC:2004规则分类昀初,MISRAC:1998编程规范的建立是为了增强汽车工业软件的安全性。可能造成汽车事故的原因有很多,如图1所示,设计和制造时埋下的隐患约占总数的15%,其中也包括软件的设计和制造。MISRAC:1998就是为了减小这部分隐患而制定的。MISRAC编程规范的推出迎合了很多汽车厂商的需要,因为一旦厂商在程序设计上出现了问题,用来补救的费用将相当可观。1999年7月22日,通用汽车公司(GeneralMotors)就曾经因为其软件设计上的一个问题,被迫召回350万辆已经出厂的汽车,损失之大可想而知。2007中国嵌入式计算平台论坛研究报告MISRAC规范不仅在汽车工业开始普及,也同时影响到了嵌入式开发的其他方向。嵌入式实时操作系统μC/OSII的2.52版本虽然已经于2000年通过了美国航空管理局(FAA)的安全认证,但2003年作者就根据MISRAC:1998规范又对源码做了相应的修改,如将if((pevent-OSEventTbl[y]&=~bitx)==0){/*…*/}的写法,改写成pevent-OSEventTbl[y]&=~bitx;if(pevent-OSEventTbl[y]==0){/*…*/}发布了2.62的新版本,并宣称其源代码99%符合MISRAC:1998规范。一个程序能够符合MISRAC编程规范,不仅需要程序员按照规范编程,编译器也需要对所编译的代码进行规则检查。现在,很多编译器开发商都对MISRAC规范有了支持,比如IAR的编译器就提供了对MISRAC:1998规范127条规则的检查功能。2MISRAC对安全性的理解MISRAC:2004的专家们大都来自于软件工业或者汽车工业的知名公司,规范的制定不仅仅像过去一样局限于汽车工业的C语言编程,同时还涵盖了其他高安全性系统。图1汽车事故原因分布图MISRAC:2004认为C程序设计中存在的风险可能由5个方面造成:程序员的失误、程序员对语言的误解、程序员对编译器的误解、编译器的错误和运行出错(runtimeerrors)。程序员的失误是司空见惯的。程序员是人,难免会犯错误。很多由程序员犯下的错误可以被编译器及时地纠正(如键入错误的变量名等),但也有很多会逃过编译器的检查。相信任何一个程

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功