1 / 29
文档名称:

嵌入式软件C语言编码规范.doc

格式:doc   大小:1,497KB   页数:29页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

嵌入式软件C语言编码规范.doc

上传人:63229029 2017/9/2 文件大小:1.46 MB

下载得到文件列表

嵌入式软件C语言编码规范.doc

文档介绍

文档介绍:
L74
中华人民共和国国家标准
GB/T XXXXX—XXXX
嵌入式软件 C语言编码规范
Embedded Software C Language Coding Specification
“在提交反馈意见时,请将您知道的相关专利连同支持性文件一并附上”
(本稿完成日期:2009-12-23)
XXXX - XX - XX发布
XXXX - XX - XX实施
前言
本标准由全国信息技术标准化技术委员会(SAC/TC28)提出并归口。
本标准起草单位:中国电子技术标准化研究所、珠海南方软件产品检测中心、炬力集成电路设计有限公司
本标准主要起草人:
引言
嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗严格要求的专门计算机系统。嵌入式技术并不是一个独立的学科,它是伴随着微电子技术和计算机技术的发展,微控制芯片功能越来越强大,而嵌入微控制芯片的设备和系统越来越多而发展起来的。嵌入式系统几乎包括了生活中所有的电器设备,如:mp3、手机、数字电视、汽车、微波炉、数码相机、电梯、空调、自动售货机、工业自动化仪表与医疗仪器等。
尽管C语言是嵌入式软件开发的主要工具,然而C语言并非是专门为嵌入式系统设计的,一是因为标准C语言编写的软件缺乏安全性;二是因为“标准C语言”太庞大了,很难操作。因此,需要制订针对嵌入式系统软件的编码格式要求。
本标准是在理解标准C语言的基础上,结合嵌入式软件的开发实践以及嵌入式软件开发中常见的危险编码方式制订的,着重于软件的安全性、可读性。既可作为嵌入式软件开发中的编码要求,也可作为软件交付时验收方的验证要求。
在要求条款中,“应”标示的要求是必须符合的,“宜”标示的要求是可选择符合的。
嵌入式软件 C语言编码规范
范围
本标准规定了使用C语言编写嵌入式软件的编码格式要求。本标准也提及了软件设计人员应该注意的与编码相关的事项。
本标准适用于嵌入式软件生存周期的编码阶段,主要供具有C语言编程能力的软件编码人员使用。
规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 15272 程序设计语言 C
术语和定义
GB/T 15272中界定的以及下列术语和定义适用于本文件。
单边作用 side effect
指在表达式执行后对程序运行环境可能会造成影响。赋值语句、自增等操作都是典型的具有单边作用的操作。
编码格式要求
总体要求
编程前应阅读硬件电路和芯片资料――熟悉芯片的各种内存、寄存器地址、中断服务、定时器、通讯接口等功能,必要时将相关信息加入程序注释中。
编程中应注意程序的存储空间――如指令空间大小、数据空间大小、堆栈空间大小等是否超出系统有关限制。
使用联合体时,应明确该编译器联合体存储的细节――如联合体的末尾有多少个填充单位、联合体的各个成员如何对齐、多字节的数据类型高低字节如何排放顺序等。
宜注意硬件系统复位和软件复位的方法和区别――在程序中宜使用芯片提供的看门狗功能实现硬件系统复位。
宜注意CPU对各种存储器的访问速度――在程序中宜利用各种硬件设备自身的特点来提高程序效率。
应注意所使用的编译器的位数,支持的C语言标准,调试程序所占用的内存,兼容性等特点。
应注意编译器处理不同数据类型的原则及有关细节――如static局部变量将在内存数据区中生成,而非static局部变量将在堆栈中生成。
应注意程序开发调试环境和实际应用环境的区别。
应用程序宜使用操作系统驱动程序来调用硬件端口。
内存空间管理类
在使用malloc等其它函数获取内存时,应判断申请内存是否成功。
动态内存的申请与释放应配对,防止内存泄漏。
应用场景主要包括:
过程/函数中分配的内存,在过程/函数退出之前要释放;
过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出之前要关闭。
错误用法示例:
int example_fun( BYTE gt_len, BYTE *gt_code )
{
   BYTE *gt_buf;
   gt_buf = (BYTE *) malloc (MAX_GT_LENGTH);
   ...
   /* global title length error */
   if (gt_len > MAX_GT_LENGTH)
   {
       return GT_LENGTH_ERROR; //退出之前没有释放gt_buf
   }
   
   ...  // other

最近更新

离散数学代数系统引入公开课一等奖课件赛课获.. 15页

生物无机导论公开课一等奖课件赛课获奖课件 16页

环境生物技术(2)公开课一等奖课件赛课获奖课件.. 61页

湿地公园优秀案例分析:杭州西溪湿地 49页

世界上最伟大的销售话术 5页

《好心眼儿巨人》读后感 2页

党支部组织生活制度及各类会议流程图 14页

二零二四年度科技孵化器租赁合同示范文本 14页

二零二四年度网络安全风险评估与整改协议 17页

期末总动员公开课一等奖课件赛课获奖课件 15页

退休返聘管理办法 3页

二零二四年度闭口采购租赁合同 13页

二零二四年度餐厅经理劳动合同范本(餐饮酒店.. 15页

二零二四年度高品质餐具批量采购服务合同 15页

《童年》阅读题及答案 2页

二零二四年新型制造业财务会计岗位劳动合同书.. 15页

二零二四年服装出口销售与品牌授权运营协议 16页

泰州亮点 2页

建筑工地突发公共卫生事件应急预案 6页

中考化学精选100题及答案 15页

嵌入式传输线的物理基础公开课一等奖课件赛课.. 71页

星级少年评定细则 2页

书是我们的朋友 2页

如何合理安排中考数学总复习公开课一等奖课件.. 28页

建筑工程施工职业健康管理制度及措施 8页

《安徒生童话》语文阅读指导课教学一公开课一.. 20页

庄子《秋水》墨子《非攻》 6页

2018-2019苏锡常镇一模物理试卷 6页

电动三轮车噪音大怎么回事 2页

性命双修养生延寿法-牛金宝著 4页