- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MISAR C 嵌入式编程标准
及LDAR Testbed软件简单介绍
2010.04.16
一、MISAR C 嵌入式编程标准
MISAR C 概述
1994 年,在英国成立了一个叫做
汽车工业软件可靠性联合会(The Motor
Industry Software Reliability Association,简称MISRA)的组织。它是致
力于协助汽车厂商开发安全可靠的软件的跨
国协会,其成员包括:AB汽车电子、罗孚汽
车、宾利 汽车、福特汽车、捷豹汽车、路虎
公司、 Lotus 公司、 MIRA公司、 Ricardo
公司、TRW汽车电子、利兹大学和福特
VISTEON汽车系统公司。
MISAR C 概述
MISRA于 1998年发布了一个针对汽
车工业软件安全性的C语言编程规范——
《汽车专用软件的C语言编程指南》 (Guidelines for the Use of the C Language in Vehicle Based Software),共
有 127 条规则,称为MISRA C:1998。目前
MISRA C:2004 版已有 141 条规则,21 个类
别,每一条规则对应一条编程准则。通常认
为,如果能够完全遵守这些准则,则该段C代
码就是易读、可靠、可移植和易于维护的。
表1 MISRA C:2004规则分类
分类
强制
规则
推荐
规则
分类
强制
规则
推荐
规则
开发环境 4 1 表达式 9 4
语言外延 3 1 控制表达式 6 1
注释 5 1 控制流 10 0
字符集 2 0 Switch语句 5 0
标识符 4 3 函数 9 1
类型 4 1 指针与数组 5 1
常量 1 0 结构体和联合体 4 0
申明与定义 12 0 预处理命令 13 4
初始化 3 0 标准库 12 0
算术类型转换 6 0 运行失败 1 0
指针类型转换 3 2
MISAR C 部分编程规则
? 数据类型相关规则;
? 指针结构体联合体的安全规则;
? 表达式的相关规则;
? 程序流控制的相关规则;
? 构建安全的编译环境规则。
数据类型相关规则
一、 数据类型相关的编程风格
规则 6.3(推荐):必须用 typedef显式标识出各数据 类型的长度和符号特性,避免直接使用标准数据类型。
例如:一个 32 位的整数系统,可定义如下:
typedef char chat_t;
typedef signed char int8_t;
typedef signed short intl6_t;
typedef signed int int32_t;
typedef signed long int64_t;
typedef unsigned chat uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned 1ong uint64_t;
数据类型相关规则
二、 数据类型转换
有时侯由于程序员的疏忽,或者是过于相
信编译器的 “智慧”程度,导致表达式中有很多隐
式转换(即没有显式地强制转换),而这些隐式数据
类型转换很可能就构成致命的漏洞。
示例1:执行以下程序,result_8 的值是多少?
uint8_t port = 0x5a ;
uint8_t result_8 ;
result_8 = (~port) 4 ;
/*注:uint8_t 表示8 位无符号整型*/
数据类型相关规则
如果编译器为16位,~port=ffa5,
如果编译器为32位,~port=0xffffffa5。
最终结果都是result_8=0xfa.
规则 10.5:如果位操作符~和移位操作符(或)联合作
用于 unsigned char 或者unsigned short 类型的操作
数时,中间运算步骤的结果必须立刻显式强制转换为预
期的短整型数据类型。
将最后一行代码改成:
result _8=((uin8_t)(~port))4
则 result_8 可取得预期的值,及result _8=0x0a.
数据类型相关规则
示例2:执行以下程序,d的值是多少?
uint16_t a = 10 ;
uint16_t b = 65531 ;
uint32_t c = 0 ;
uint32_t d ;
d = a + b + c ;
/*注:uintl6_t 表示16 位无符号整型,uint32_t
表示 32 位无符号整型*/
数据类型相关规则
如果编译器为32位,最终结果为b=65541 ,
如果编译器为16位,最终结果为b=5(错误)。
规则 10.1:以下情况下,整型表达式中不允许出现隐
式数据类型转换。
①整型
您可能关注的文档
- mcc1图纸与技术要求.doc
- mcgs报表使用说明.doc
- mcgs高级技术培训教程v10.doc
- mcgs脚本驱动开发工具使用指导使用指南.doc
- mcgs系统内部函数.doc
- mcgs工控组态软件实例教程.doc
- mcs51单片机完整基础教程(适合初学者).doc
- mcs—51系列单片机习题.doc
- mcs725hd1bay系列操作使用说明书.doc
- mctchcbb使用指导(新平台)v700.doc
- 专题06 经济体制(我国的社会主义市场经济体制)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题11 世界多极化与经济全球化-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 专题03 经济发展与社会进步-5年(2020-2024)高考1年模拟政治真题分类汇编(浙江专用)(解析版).docx
- 专题09 文化传承与文化创新-5年(2020-2024)高考1年模拟政治真题分类汇编(北京专用)(原卷版).docx
- 5年(2020-2024)高考政治真题分类汇编专题08 社会进步(我国的个人收入分配与社会保障)(原卷版).docx
- 专题07 探索世界与把握规律-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 5年(2020-2024)高考政治真题分类汇编专题06 经济体制(我国的社会主义市场经济体制)(原卷版).docx
- 专题11 全面依法治国(治国理政的基本方式、法治中国建设、全面推进依法治国的基本要求)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题17 区域联系与区域协调发展-【好题汇编】十年(2015-2024)高考地理真题分类汇编(解析版).docx
- 专题01 中国特色社会主义-5年(2020-2024)高考1年模拟政治真题分类汇编(原卷版).docx
文档评论(0)