嵌入式相关论文(通用8篇)
嵌入式系统相关开发个人简历范文 姓 名: 个人简历 年 龄: 21 户口所在: 广东省 国 籍: 中国 民 族: 汉族 求职意向 人才类型: 普通求职 应聘职位: 嵌入式软硬件开发:嵌入式系统相关开发 工作年限: 0 职 称: 无职称 求职类型: 实习 可到职日期: 随时 月薪要求: ~2499元 希望工作地区: 广州,深圳,珠海 毕业院校: 华南理工大学广州学院 最高学历: 本科 获得学位: 毕业日期: -07 专 业 一: 自动化 起始年月 终止年月 学校(机构) 所学专业 获得证书 证书编号 语言能力 外语: 英语 一般 粤语水平: 一般 其它外语能力: 国语水平: 精通 工作能力及其他专长 国家专利(已受理) 竞赛奖项 个人荣誉奖项 全国软件和信息技术专业人才大赛广东省二等奖 20 广东省优秀共青团员 广州市花都区青少年创新大赛三等奖 校级优秀共青团干部 广东省大学生电子设计竞赛三等奖 20 国家励志奖学金 中国大学生物联网创新大赛广东省一等奖 学校二等奖学金 大学生创新创业训练计划项目--通过 学校优秀学生干部 个人自传 乐观开朗,严以律己,以诚待人,能吃苦耐劳,工作积极主动,用行动来证明自己。在校期间担 任学生干部,获得多项个人荣誉奖项,学习成绩专业排名第二。参加多项科技学术项目和竞赛并获得 奖项,有团队合作精神,能自学并解决技术上一般性问题,对自己专业有浓厚的兴趣。职业目标是坚 持从事电子/互联网产品类的工作,用自己的行动来实现所学的价值。
Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。因为Qt刚开始是在Linux中随着K桌面环境(Kool Desktop Environment,KDE)慢慢被大家熟知的,所以大家所说的Qt一般都是指用于Linux或者Unix的Qt/X11。Qt支持的操作系统有:Unix(几乎所有的)、Linux,还有Windows95、Win NT、Win2k、Windows8等平台。Qt的优点如下所述:
(1)良好的跨平台特性。Qt支持如下操作系统:包含有Framebuffer的Linux平台[1]、Windows系列(Microsoft Windows 95/98、Microsoft Windows NT)、Solaris、Sun OS、HP-UX、Irix等。
(2)面向对象。对于用户开发来说是十分便利的是Qt的模块化程度。其模块化程度特别高以及可重用性也较为好,Qt特别高的模块化得益于其良好的封装机制。Qt提供了一种称为信号/槽(signals/slots)的安全类型[2]。用这种安全类型来代替callback。这样元件与元件之间的协同工作较之前比变得更简单。
(3)丰富的API。Qt包含超过250多个的C++类,还包括正则表达式的处理功能,而且提供了collections、serialization、file、I/O device等这些类。上述这些类是基于模板的。
(4)支持2D/3D图形渲染,支持Open GL(Open Graphics Library)。
(5)大量的开发文档。
(6)XML支持。
Qt/Embedded是著名的Qt库开发商Troll Tech公司开发的基于Frame Buffer、面向嵌入式系统的Qt版本。Qt/Embedded是去掉了X Lib的依赖,直接在Frame Buffer上工作的,因此它的效率比较高。但Qt/Embedded是Qt的超集,而并非是它的子集,Qt/Embedded的一些机制是不能用在Qt/X11中的。Qt/Embedded有如下一些特征[3]:
(1)和硬件平台无关:Qt/Embedded能运行在所有流行的平台和CPU上。
对全部主流的Embedded Linux都比较支持。Frame Buffer设备和C++编译器是Qt/Embedded的最基本要求。
(2)有和Qt一样API:对开发者而言,仅仅只要了解Qt的API就足够了,对程序需要用到的系统、平台,则不需要过分关注,这些特点使其表现出良好的可移植性。
(3)有自己的图形引擎:Qt/Embedded不需要其他的图形库,它直接运行底层的图形驱动frame Buffer。
(4)拥有开发工具强大,如:Kdevelop和Qt Designer。
(5)支持Unicode,能够使程序支持不同的语言,有助于产品的国际化。
(6)提供压缩字体格式:虽然在比较小的内存里,但它能够供给一等的字体支持。
(7)运行时所需资源比较少功能强大。
(8)功能可裁剪。
Qt/E直接对帧缓冲进行读和写的操作,相对于Qt在X11环境下,运行的体系结构对程序的运行效率有所提升。
2 信号和插槽机制
2.1 消息映射和回调函数的缺点
很多GUI工具包中(如VB)中,首先将需要响应的代码封装为函数,再将其地址指针传递给被点击的按钮,来关联一个按钮和相关的事件,但该回调函数的机制的弊端也很明显。
2.2 信号和插槽实现原理
Qt的核心机制是信号与插槽机制,如果需要实现本电子词典的功能就需要对信号以及插槽机制有一定的了解,因为在实现电子词典过程中会涉及到对象间通信,信号与插槽是一种高级接口。其在对象与对象之间的通信起得作用很大。信号与插槽是Qt的主要特性,更是它与其他工具包主要区别之处。信号与插槽是一种通信机制。它是由Qt自行定义的,它与标准的C语言和C++语言之间是相互独立的。所以,要正确地处理信号和插槽,必须借助一个称为MOC(Meta Object Compiler)的Qt工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码。
因为信号(signal)与插槽(slot)机制能够全部代替原始的回调机制以及消息映射机制,所以说其是一种强大的对象与对象之间的通信机制。在Qt中,信号(signal)与插槽(slot)代替了上面所说的那一堆混乱的函数指针,使工作人员编写通信程序更加简单了。信号(signal)与插槽(slot)所带的参数不受数目和类型的限制,其参数类型十分安全,所以不会如回调函数一般出现core dumps。
不仅QObject类包含信号(signal)与插槽(slot)而且QObject的子类派生出来的类也会包含信号(signal)与插槽(slot)。如果对象变化它的状态的话,这个对象将信号(signal)发射到外面,对象需要做的所有的工作就是这些,而谁在对头接收这个信号(signal)它是无从得知的,
信号(signal)与插槽(slot)之间的连接可以分为:一对一,一对多。还可以是信号之间一对一,这时不管何时第一个信号(signal)被发射,第二个信号都将被系统马上发射出来。这个强劲的部件编程机制是由信号(signal)与插槽(slot)构造出来的。
信号(signal)和插槽(slot)机制的代码是完全由C++语言实现的。Embedded的高的可信性以及稳定性、清晰简单、安全的类型要求是由运用信号与插槽机制编写出的运用程序满足的。Qt的运用程序也能够利用标准的工具在工作人员熟识的环境下实现可视化的开发。利用Qt实现的应用程序可以在不同种的Embedded设备上使用,大部分是在Embedded Linux系统上运行,为Embedded提供图形化界面,给Embedded System提供优越的人机交互的环境。在Linux窗口平台上实现软件的开发时实现选用的图形用户接口是QT/Embedded。
3 Qt帧缓存机制简介
帧缓冲(frame buffer)是Linux为显示设备提供的一个接口。它允许上层应用程序在图形模式下直接对显示缓冲区进行读操作或者写操作,这种操作是抽象的、统一的[4]。由于换页机制、物理显存的位置等这一系列详细的过程是由Frame buffer设备驱动最终来完成的,开发人员是没必要去关注的。帧缓冲驱动有广泛的应用。例如:在Linux的桌面系统中,X Window服务器实现窗口的绘制运用了frame buffer。成为Linux汉化的唯一可行方案是其利用frame buffer显示中国字点阵。
4 SQLite数据库
SQLite数据库是开源的、内嵌式的关系型数据库。它刚开始发布是在2000年,其主要优点是方便携带和使用,比较紧凑、可靠,还有其的有效性。
当前为内嵌式应用所设计的关系型数据库产品有Pervasive PSQL、Sybase Intersystem Cache及微软公司的Jet Engine等。数据库My SQL和Firebird这两个数据库同SQLite一样都是开源的,它们有内嵌式的版本。然而仅仅只是Firebird与SQLite这两个数据库是完完全全不收任何费用并且开放源代码的。在这两个数据库中,仅仅只有SQLite是为内嵌式应用设计的。SQLite代码完全开放,可以免费用于任何用途,包括商业目的。
SQLite体系结构构成部分有接口、编译器、虚拟机、后端:
(1)接口由SQLite CAPI组成,换句话说无论Program、Library file、script language,最后全部是通过CAPI与SQLite进行交互。
(2)整个编译过程是始于分词器与分析器的。分词器和分析器协作处理文本形式的SQL(Structured Query Language,SQL,结构化查询语言)语句阐明SQL语法的有效性,将SQL语句转化为语法树,进而传送给代码生成器(code generator)由其处理。分词器代码由人工动手进行编写,SQLite自制的parser(分析器)生成器Lemon自己生成parser的代码。假如结构化查询语句被分解成为串值后并被安排到语法树中,该树将被parser下传给code generator进行处理。然而,code generator根据它生成一种SQLite特有的汇编code,最终由Virtual Machine执行。
(3)架构中最为重要的部分是Virtual Machine,也可以称为VDBE,即虚拟数据库引擎。128个Operate code组成了VDBE的字节代码(称为虚拟机语言),对数据库进行操作是它的重要工作。无论那些SQL命令的请求多么复杂最终都能被VDBE的指令集满足。
(4)后端由B-tree、page cache及Operate System接口组成。数据由B-tree和page cache共同管理。B-tree和page cache操作的是数据库页,这些页的大小是一致的。表示information的大量bit是页里面的“货物”,记录、字段以及index入口等全部被包括在“货物”information中。information的具体内容B-tree和pager都不清楚,B-tree和pager仅仅是负责“运输”这些page,这些“集装箱”里具体是怎样的页它们也是没必要去关注的。
参考文献
[1]王田苗.嵌入式系统设计与应用实力开发[M].北京:清华大学出版社,2003:1-195.
[2]陈伦燕.基于ARM-Linux平台下嵌入式图形用户界面的设计与实现.大连理工大学硕士学位论文,2006.
[3]吕京建,肖海桥.面向二十一世纪的嵌入式系统综述[J].电子质量,2001,(08):10-13.
国际电信联盟将互联网的发展分为四个阶段:20世纪70年代为第一阶段,主要是实现大型机之间的互联;20世纪80年代属于第二阶段,主要是实现了PC和服务器之间的互联互通;20世纪90年代,互联网发展进入了第三阶段,包括手机等移动终端开始接入互联网:目前,互联网的发展正迈向第四阶段,目标是实现嵌入式设备接入互联网。
在即将到来的第四阶段,会有越来越多的设备加入到互联网,比如车载娱乐系统,远程医疗,数字标牌和网络摄像头等,嵌入式设备及其应用将真正让互联网无处不在,人们不论是在工作、娱乐、学习甚至休息的时候,都能随时与互联网保持连接。嵌入式系统是家庭信息网络、IT融合的重要技术基础。
嵌入式设备虽然不能够非常绝对地做一个界定,但可以简单理解为功能相对固定的应用设备,或者说,嵌入式设备就是一个不想成为电脑的“电脑”。例如超市中的POS机,马路边新设立的视频大幅广告牌,娱乐场所里的游戏机,机场里的电子信息牌等等。与个人电脑的不同是,嵌入式设备需要把有限的计算能力用在一个主要应用中,应用功能方面被限制在特定领域,但它的硬件很可能用的就是英特尔奔腾或者酷睿处理器。
微处理器引入到嵌入式领域是一个革新式的事件,并且提供了灵活性和可迁移性。这样,微处理器和计算平台将会与通讯能力进一步整合,人们就可以创造出更多的使用模式和设备。谈到嵌入式处理器产品的创新和应用,大家可能会立刻想到凌动(Atom)处理器。这款英特尔史上体积最小、功率虽低的处理器能为最终产品带来性能、功耗、外形尺寸和成本等各方面的优势,一进入市场就非常受欢迎。经过持续的技术更新和市场推广,迄今它已融入到2000多款嵌入式产品设计中。通过“凌动”这样为多种应用而生的嵌入式处理器平台,原本基于个人电脑的众多应用就可以便捷地迁移到各类消费电子平台上,让未来人们生活中的电子设备变得更加智能。
据估计,到2015年将有超过150亿个设备接入互联网。这些相互连接的智能设备将激发无限的创新,例如让智能机器人、人性化车载娱乐信息系统、移动医疗诊断设备以及智能购物体验等变为现实,而它们将彻底改变人们的工作及生活方式。
随着下一代网络的研发成功和投入使用,必然会有更多的嵌入式网络设备和产品面世。嵌入式系统也在向无线网络发展,它有望部署到住宅及商用建筑自动化、工业设备监测以及其他无线传感和控制应用中。此外,汽车智能驾驶设备、汽车模拟驾驶器、轮船智能驾驶设备等都面临更新换代,而这类新型设备都离不开嵌入式系统。
嵌入式设备正日益渗透到人们的日常生活中,默默地为我们提供连接和服务,改变我们与周围世界发生联系的方式。未来的互联网将是无处不在的,消费电子产品、嵌入式设备、移动互联网设备等都将进入互联互通的大网,将全球各地的人、信息、事件联系在一起,并重新界定我们的工作和生活。 (文章代码:100712)
课程设计报告书
专 业: 电子信息科学与技术 班 级: 0312412 学 号: 031241217 学生姓名: 肖文洲 指导教师: 刘三军
计算机专业嵌入式系统课程的研究与实践
【摘 要】随着电子技术的发展,嵌入式技术成为当今信息技术发展的主流技术。嵌入式技术作为高校计算机专业的一个新方向已被许多学校采用。本文通过对嵌入式技术的分析,提出了嵌入式系统课程体系建设的基本方法,包括专业培养计划、嵌入式系统教学实践平台建设以及嵌入式系统教学模式与教学方法创新等。【关键词】嵌入式技术;研究与实践;计算机专业
随着电子技术和信息技术的快速发展及嵌入式硬件技术与软件技术的不断成熟,嵌入式系统的应用越来越广泛,如智能家电、手机、汽车电子、网络通信及电子娱乐产品等,随之而来的是社会对嵌入式产品开发人才的需求也越来越多。因此,许多高校都开设了嵌入式系统开发方面的系列课程。由于嵌入式系统课程涉及的知识面宽、实践性强,对实验教学的要求较高,包括实验教师、硬件配置、实验项目的设置等。因此,作为对新技术研究和探索最活跃的群体,高等院校如何接受嵌入式技术带来的挑战,尽快开设嵌入式系统的相关理论与实验课程,并逐渐形成较规范的教学体系已成为一个重要的研究课题。
一、嵌入式系统教学的特点
设置嵌入式系统课程的目的是让未来的软硬件开发人员了解和掌握必要的嵌入式系统设计方法的概念、方法和工具。同时由于嵌入式系统对其他学科领域的渗透,其他相关专业的学生也有学习该课程的需求与必要。如其他电子、自动化专业都可开设相应的选修课程,在某种程度上可以提升毕业学生的竞争力、就业率。嵌入式系统课程的教学内容应包括嵌入式系统体系结构、硬件构架、软件编程及外围设备接口和驱动等,注重培养学生的设计能力和软件开发能力;尽量反映该领域近年来最新的理论与技术,使学生了解学科的最新发展。嵌入式系统课程的特点是涉及知识面广、综合性强、实践性强,并且学科发展快,因而学习难度大,难以形成一个简单明确的知识体系。同时该课程讲授难度很大,它要求教师不仅具备一般的计算机系统的软硬件知识,而且需要真正从事过嵌入式系统的开发实践,才能对嵌入式系统中的实时性等抽象概念和系统调试过程有感性认识。嵌入式系统教学主要有以下三个特点:(1)基础性。嵌入式系统技术涉及多个专业,如计算机工程、软件工程、工业自动控制、机电工程、精密仪器和电子工程等,嵌入式技术与各个专业相互渗透融合,将逐渐形成新的学科研究方向,因此,嵌入式系统可作为上述各专业的基础平台课,以强化专业基础知识。(2)综合性。嵌入式系统是软件和硬件设计的完美结合。它涉及电子信息、计算机、自动控制等诸多专业相关课程的内容,如语言、微机原理、单片机设计和操作系统等课程,有很强的综合性,因此,可以有效地对学生进行综合能力的培养。(3)实践性。嵌入式系统是理论与实践结合密切的课程。实验是嵌入式系统课程的重要组成部分,缺乏实验的嵌入式系统课程学习是纸上谈兵,因此,学生必须通过大量的实验和实践环节,来加深对嵌入式系统理论知识的理解。
二、适合计算机专业的嵌入式系统课程体系
嵌入式系统涉及电子、计算机、自动控制等诸多专业知识,专业性强,包括了操作系统、微机原理、编程语言程序设计、计算机网络和接口设计等内容,是软件、硬件的完美结合。因此,嵌入式系统的设计原理与技术不是一门课程所能讲授的,需要建立一个课程体系。
嵌入式系统本身就是计算机系统。从广义上讲,目前计算机科学与技术专业的课程体系中所设置的许多专业基础课,比如数字逻辑、C/C++程序设计、计算机网络等,对嵌入式系统设计的学习者来说同样重要。在此,只从狭义的角度探讨嵌入式系统的课程体系设置。
由于嵌入式系统涉及的知识面广、应用层面广,所以应针对嵌入式系统设计与应用的不同层面的需求,设置不同层面的课程体系。从狭义上划分,嵌入式系统课程体系可以有以下三个不同的层面: 第一层面:针对将来只是应用嵌入式系统硬件、软件平台来进行二次开发的学生而言,应侧重培养其基于某个嵌入式系统平台上(包括硬件平台和软件平台)进行应用系统设计和开发的能力。因此,针对这一层面的学生应开设以下几门主要课程: 《嵌入式实时操作系统》:选取一个具体的操作系统比如uCLinux为例,讲授嵌入式操作系统的原理及应用,重点介绍如何进行任务划分、如何编写I/ O驱动程序等。《嵌入式系统设计》:重点介绍嵌入式系统设计步骤、方法,重点介绍嵌入式应用软件的开发技术,以及嵌入式系统的测试技术及软件优化技术。《嵌入式网络技术》:重点介绍基于嵌入式环境下的网络通信技术及应用,比如I2C总线技术、USB接口技术、嵌入式Web技术等,掌握相关的通信技术及接口编程。
第二层面:针对将来从事嵌入式系统平台设计及合作开发的学生而言,除需要学习上述三门课程外,还必须开设《嵌入式系统结构》课程。该课程重点介绍某个具有代表性的嵌入式CPU(如ARM系列)的系统结构、汇编指令系统、中断管理机制、常用外围接口,使学生掌握嵌入式平台设计的基础知识。前提是学生具备数字逻辑方面的相关基础知识。对于与第一个层面相同的课程,其授课中重点也不完全一样。比如,《嵌入式操作系统》课程可以嵌入式Linux为主,重点介绍进程调度、进程间通信、内存管理和I/O驱动机制等,使学生具备进行操作系统的裁剪、移植的基本能力。
第三层面:针对将来从事SOC(systemonChip)系统设计及开发的学生而言。主要课程有数字逻辑设计与应用、电子电路原理与PCB技术、EDA技术(FPGA设计及应用)、嵌入式系统结构、嵌入式操作系统等,偏重于底层的设计。
通过以上分析可以看出,第一层至第三层分别是嵌入式系统中由软到硬、由高层至底层的三个不同应用层次,对应不同的知识结构需求。第一层偏软,对底层的系统结构及接口等要求较低,是在当前比较容易实现的一个培养方向。在计算机本科专业中,软件方向比较适合开展第一个层面的嵌入式系统教学,应用方向比较适合开展第二个层面的嵌入式系统的教学。根据以上分析,可以提出在计算机本科专业开设嵌入式系统方向需要参照的课程体 系:(1)专业基础课:嵌入式系统概论、嵌入式系统原理与接口技术。(2)专业必修课:嵌入式操作系统、嵌入式系统应用设计。
(3)专业选修课:嵌入式网络技术、嵌入式系统测试技术、嵌入式工程应用(即行业领域,如移动通信技术与应用、数字家庭网关技术等)、分布式嵌入式系统原理与设计等。
作为课程体系的一部分,实践教学是嵌入式系统教学的关键。实践教学设置的总体指导思想是:以培养创新动手能力为核心,建立“系统的多级课程实践”的实验体系,包含课程基础实验、课程设计、综合项目设计;同时,以“项目为中心”设计多层次的集中实践题目,各层次的题目难度不等,以适合不同层次的学生[4]。
(1)每门课保证至少30%以上的上机或实验学时,完成基础实验项目。(2)至少有两门课的课程设计(约两周),如ARM汇编程序设计、操作系统移植实验、LCD/触摸屏等接口实验等等。(3)至少完成一个综合课程设计(课余时间+综合实训时间共约40学时),类似于一个简单的工程项目,有设计、编程调试、性能测试等完整的步骤如手机游戏、校园导航、电子词典、嵌入式WEB服务器等。
(4)校企合作,建立实习基地,联合完成项目设计。
三、嵌入式系统课程体系在计算机专业的实践
我们在分析了企业对嵌入式人才需求的基础上,提出了“在计算机本科专业培养嵌入式系统人才”的具体实施方案,并在2007级、2008级本科生中进行了实践。
该课程定位为实验研究型。目标是通过嵌入式实验平台学习构建一个嵌入式系统的一般方法,熟悉一些常用的微处理器、存储器、外设接口并学习软硬件设计方法。掌握嵌入式操作系统,定制内核,编译下载调试,编写驱动程序和应用程序等,最后要求实现或部分实现一个具体嵌入式应用的解决方案,并在硬件平台上实现出来。
课程的主要内容包括:(1)典型嵌入式系统的基本配置、硬/软件综合设计方法和流程、应用范例。(2)硬件环境微处理器、存储器、I/O 口、外设接口和驱动、电源转换和管理、总线、硬件调试。(3)嵌入式操作系统、操作系统内核、Linux 和uCLinux、任务和任务调度、实时 OS、 GUI、API、文件系统等。(4)嵌入式网络通过和计算机网络结合, 开发基于网络接的应用。(5)软件开发过程、交叉编译、链接调试、下载、板级支持包。(6)驱动程序、设备驱动机制、按键和触摸屏驱动、网口驱动、红外、USB 驱动。
实验是嵌入式系统教学的一个比较重要的环节,实验大纲的制定是保证课程教学大纲目标实现的一个重要环节,制定出符合学生实际的实验大纲对计算机科学与技术专业培养目标的实现至关重要。按难易程度的不同,实验内容分为两个层次:基本实验与综合应用实验。基本实验目的是让学生了解嵌入式软件和硬件的一般开发环境与流程,进行基本的嵌入式程序开发。综合应用实验目的是让学生综合运用前面所学到的知识,按照指定的题目,自行设计开发嵌入式应用程序。基本实验包括嵌入式软件开发基础实验、人机接口实验、通信与音频接口实验、简单驱动程序实验和嵌入式操作系统移植实验等。对于综合应用实验,给出多个题目,选择其一,学生也可以自选题目。设备选 择 了 北 京 博 创 公 司 所 开 发 的PXA270教学实验平台,由于 PXA270 性能好,实验开发板的外围设备又很丰富,使得实验选题更加灵活。
课程设计及毕业设计中对所学知识的运用与提高在理论学习结束后,学生对嵌入式系统开发的各个环节有了较深入的理解与掌握。我们的方法是在课程设计和毕业设计中深化学习。课程设计中,结合实验用开发平台,选择了如MP3模拟控制系统等在实际中真正是嵌入式大行其道的应用领域。在毕业设计中,我们布置了诸如“嵌入式智能控制器”,“嵌入式音频控制器”,“内核裁减”设计等工作,这些设计要求学生从软硬件协同设计到软硬件的测试方法等有深刻的掌握。还有组织学生参加大学生嵌入式设计竞赛等教学活动。
四、结束语
随着嵌入式应用的迅猛发展,企业对嵌入式人才需求的缺口越来越大,越来越多的高校开始加强嵌入式系统的教学和科研,培养更多的适应社会需求嵌入式系统人才。本文所设置的针对计算机本科专业的嵌入式系统课程体系,融合了企业的需求和计算机专业的特点,符合实际应用。针对两年实践中存在的问题,在以后的教学中将不断完善。
参考文献:
[1]田泽.嵌入式系统开发与应用教程[M].北京:北京航空航天大学出版社,2005.[2]符意德.嵌入式系统教学及实验内容的探讨[J].军工高
要求:
1.画出实现此功能的硬件流程图和软件流程图
2.程序会用到数据结构和数据传输流程
3.在多任务情况下,进程和线程的区别与联系。以及如何保持同步
4.影响实时性的主要参数,以及如何改善。
解:
12数据结构会用到乒乓双缓冲
3进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.联系:线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
区别:进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
多任务下的同步:在多任务操作系统下,要保持线程和进程的同步利用:1临界区2互斥锁3信号量4事件机制
4.所谓的实时性,也就是从系统发生到系统响应的时间。或者,更广泛一点,也就是从用户输入一个信息到系统处理完以后,返回给用户的这个反应时间。影响实时性一般有一下几个方面:
1>中断响应时间
2>RTOS进程调度响应时间
3>任务切换时间
4>应用程序响应时间
改善:
中断的响应时间是有处理器决定的,可以有系统设置来改善。或者寻找更好的处理器。
对于进程调度本身,有很多经典的算法,可参考操作系统的理论部分,有些算法的实时性稍高,但整体性就稍差,有些则相反,可以选择高效的进程调度策略,来提高进程响应速度。另外,尽量减少系统的进程数,进程越少,处理器的负担越小,响应就越快。进程中屏蔽中断的地方就越少,则整体响应时间就越快。
采用抢占式内核处理形式
就在昨天3月9日,学校规定实习时间已经到期了。从上个月的13日到现在已经近一个月,虽然与公司的实习时间还没有结束,但是为了完成学校交待的任务,在此对这段时间的实习做一个总结。首先,我先来简单介绍下实习单位。我实习的单位全称——上海宝信软件股份有限公司厦门分公司。其作为上海宝信软件中的重要一员,是宝信软件在全国多网点支持服务的延伸,具备与宝信软件上海总部相同的技术服务能力,并可无限制调用总部专家资源,秉承宝信软件“IT服务,提升信息价值”的经营理念,致力于IT服务,主营业务包括网络安全产品销售、系统集成、运维服务、软件工程等。其次,向大家介绍是我的实习内容。这里要先介绍我的实习岗位——嵌入式软件开发工程师。实习内容大致分为两块,一是软件测试,二是编码。在我们刚来的前两周,我的实习内容就是软件测试。软件测试的主要内容是UnitTest也就是单元测试。但是,在实习刚开始的阶段,我并没有就马上做测试。而是有前辈给我发了一份我们要做的产品的功能书给我看。功能书文档是日文版的,我要把它看懂,才知道我们这里到底是做什么。后面的测试工作就是做单元测试了。我们在做测试是有测试环境的,整个单元测试过程是有前人经验的。所以只要按照规则来就没有问题,也相对比较简单。就这样单元测试做了近8天左右,测试了51个c++函数。其实,单元测试比较简单,但是碰到函数的输入输出的值及路径多的时候,特别的烦,会影响测试效率。实习的另一个内容就是编码,其实说的确切一点,是看代码。一个刚来不到3周的新员工,以前又没有经验,公司怎么会放心让你写代码。有前辈给我安装了秀丸和Source Insight软件,然后给了我一代码,让我按上面看,有问题可以问组里的前辈。C++代码是看的懂,但是太多的函数,被调用的关系也不清楚,也不了解决函数的意义,所以感到很无趣。也许是在考验我的耐心或者是让我熟悉代码编写的规范。不管是什么目的,至少自己可以巩固下c++的基础。不过真的要感谢前辈的细心指导,使我大概了解程序的调用关系。
再次,向大学介绍下我的实习阶段的工作过程。每的8小时的上班时间,但是一般会比这个时间长的。早上8点45分到9点15分不等上班,晚上5点30分到6点不等下班,中午11点可以去吃饭、1点之前上班。这个时间还是比较人性化的。当然也有时候也要加班,如有时候日本客户来这里的时候,发现我们的人都很早下班的时候,他就会和我们的上级说,然后我们就得加班。这也是一种非常情况,但是加班是可以调休的。每天的上班时间基本上是跟电脑打交道。前期实习阶段都是打开电子表格看日语版功能说明书,后面做测试的时间就是各种软件一起用了。每天做单元测试的时候,其实感觉特别烦。有时候一天做7到8个,有时候一天2个做不到。但是整个过程自己还是坚持下来了,虽然很累,自己还是很好强的。后期基本上是学习编程了。由于后面项目已经交互,所以每天都不没有加班了。每天的工作主要就是学习代码规范,如那里怎么缩进、命名之类的事。至于逻辑什么的,还是很不清楚,还需要努力多问多想。
再次,与大家分享下我的实习收获。虽然与原计划5个月的实习还差很远,但自己还是很有收获。其一,对于歌乐Audio项目有一定的了解。具体的表现在,分了几层。我个人是分配到app层,也就是业务应用层。虽然对业务的熟悉不够深,但大概知道,每一天前辈们都在做什么事。其二,日语方面的加强。因为客户方面基本上是日本人,所以加强日语学习是必须的。有了这样的一种压力,自动会转化为一种动力,促使我去学习。我想这样多少可以提高下我的日语能力。还有就是,常常有很多日本客户就做在我的旁边。感情还是很紧张,因为不知道怎么跟他交流。结果每一天他来的时候,我只能和他说声早上好。希望自己在今后的时间里要多多加强日语学习,争取与日本客户交流,才能提升自己的能力。其三,交流沟通能力的提高。其实自习也一直觉得沟通能力对成功贡献是最大,要把一件做成肯定不是一个人的事情,我们需要与别人沟通。在沟通中互相了解相联系的部分,这样才能够避免摩擦带来不必要时间与精力的浪费。而我自己的沟通能力提高表现在自我意识的提高。当遇到问题的时候,会主动的想想,是哪个具体的点不懂,然后列出问题,再向前辈请教。这样大脑里就会有一个逻辑过程。通过这样就可以把自己的意思清楚的传达给别人。在别人向自己传达信息的时候,我会边思考边听,遇到不了解的地方,讲明白自己的不解之处。这样这个沟通过程就会比较流畅。其四,职场意识的提高。可以说来实习就意味我们提前
毕业了,提前进入社会。所以,由学生到社会职业人的过渡期就被实习给填充了。经过一个月实习,我发现自己已经很习惯在公司工作。对于自己能做什么,未来能做什么也有了一定的思考。不管毕业,我还是留在这个公司还是去其他的公司,我想我心中已经有了这份意识,这对我将来的职业生涯都是有帮助的。其五,时间管理。很多人工作的时候就忘记了生活的存在,我们的生活是多彩的,并不是只有工作。其中,有一项转变的比较大,就是很多人不喜欢运动了。对于这些,我都是不太认可的。我还是会抽出时间出去运动一下。我觉得运动可以带给我健康,同时会让我的精神更好,工作更有效率。其实,运动并不会浪费我们时间,而是会给生活带更美好。
最后,与大家分享一下我这个月实习的心得与体会。通过这段时间的学习,从无知到认知,到深入了解,渐渐的我喜欢上这份工作,让我深刻的体会到学习的过程是最美的。在整个实习过程中,我每天都有很多的新的体会,新的想法,想说的很多,我总结下来主要有以下几点:
1、持之以恒
既然选择了自己的这份工作,不管工作本身怎么样,我们都要坚持往下走。因为我相信每一家公司的工作原理都是差不多的。如果你在这家公司做不住的话,我想你在另外一家公司也是做不住的。只有我们改变自己的态度,才可能战胜心中的浮躁。我们新人一来到公司我,一开始都不会立刻给工作我们做,-一般也都是先让我们看看文档或代码,时间短的要几天,时间长的要几周,在这段时间里很多人会觉得很无聊,没事可做,便觉没有发展空间,于是产生想走的念头。恰恰在这个关键的时候更需要我们的坚持,轻易放弃只会让自己后悔。
2、不怕做小事,那是一种考验
我们一来到公司实习的时候,很多组里的前辈多数还是把我们当学生看待。他们不会也不敢让我们直接参考到一个真正的项目中去。在这个其间一般会给我们看一些过去做过项目的文档和代码,其实不可小看这些小事,也许是为了考验我们,也许是让我们先了解业务。作为一人新人,一定要积极面对这些,勇于担当做小事,喜欢做小事。这样公司同事才会更快的接受你,慢慢地才会让你做一些重要的工作。
3、态度端正,一定要多主动
我们到公司工作以后,要知道自己能否胜任这份工作,关键是看你自己对待工作的态度,态度对了,即使自己以前没学过的知识也可以在工作中逐渐的掌握。态度不好,就算自己有知识基础也不会把工作做好,四多一少就是我的态度,我刚到这个岗位工作,根本不清楚该做些什么,并且这和我在学校读的专业与这里做的东西还是不太一样的,刚开始我觉得很头痛,可经过工作过程中多看别人怎样做,多听别人怎样说,多想自己应该怎样做,然后自己亲自动手去多做,终于在这一个月里对工作有了一个较系统的认识,慢慢的自己也可以完成相关的工作了,光用嘴巴去说是不行的,所以,我们今后不管干什么都要端正自己的态度,这样才能把事情做好。4.不要报怨
其实在做单元测试的那个时候,有时候觉的特别的烦。有时候做了半天连一个函数都没有把弄出来,那种感觉真的是非常的难受,心中也有委屈。可是这是我的工作,我报怨也没有用。只能一步一个脚印走过来。直到后面把函数测完,心中还是很有成就感的。其实有的人会觉得公司这里不好那里不好,同事也不好相处工作也不如愿,经常埋怨。我觉这样只会影响自己的工作情绪,不但做不好工作,还增加了自己的压力。所以,我们应该少埋怨,要看到公司好的一面,对存在的问题应该想办法去解决而不是去报怨,这样才能保持工作的激情。
5、虚心学习
由于我们是新手,而且又还没有从学校里完全走出来。所以在工作过程中,我们会碰到很多问题,有的问题我们可以有我们所学的解决,有的有很大业务性的问题,我们就无法解决。这个时候不要不懂装懂,应该虚心地向前辈们请教。请不要害怕,因为前辈肯教我们肯定是我们的福气,对我们以后在工作中都有帮助的。同时请教的时候也是一个锻炼沟通的过程。在前辈给我们解惑的时候,我们也应该虚心的接受,不要装着一副不屑的样子。
6、知错能改
做为一名新人,不管在学校有多么的优秀,来到公司,我们顶多就只有点基础,其他什么的都得重新开始。在学习的过程当中,犯错是不可避免的。知错能改是我们唯一的选择。明知自己有错,还理直气壮那是不应该的。我认为这种行为是可耻的。在犯错的时候来铭记于心,不要第二次在犯同样的错了。当前辈或
其他人指出我们的错误时,我们要虚心听教,坦诚改错。这样我们才会进步,才会在组里与同事相处融洽。
7、团队合作
重要的不是我,是我们。在一个项目组里,我并不是一个人。我只能说我是组里的一个部分。我们每一人都不是神,我们不可能一个来完成所有的工作,因此,必须分工。但是,分工并不是都很明确的。每个人分到的工作,多多少少都会和别人的工作的有交集。这是因为,作为一个项目的每个部分,最终还是整合形成整体。我们还是需要这些部分与部分交集作为连接点组合起来。因此,每个虽是分工,但更多是合作。我们中的我必须明白这些,要有团队观,做好自己的同时,更重要也要做好与别人的沟通。这样才会避免工作的重复,意见的不同等负能量。
8、沟通能力
在上一点的体会团队合作中,其实我已经说了,团队合作的基础就是沟通。一个有效率的团队,我认为它的成功就在于成员之间良好的沟通能力。因为,人与人的沟通是信息传递的媒介。没有良好的沟通基础,信息在传递的时候就会被曲解。在软件开发的整个过程,团队合作是至关重要。每一环节,都离不开沟通。需求变更带来的问题,尤其需要在沟通中解决问题。所以,让自己把信息传递的正确和有效,提高沟通能力是必不可少的。9.做人做事讲究原则
其实在公司上下班是一个很大的学问。同事都已经来上班了,你才来。或者是同事还没下班,你人就都先走了。其实要把这些看成一种常态。在公司上班不是比谁先来,也不是比谁晚走的,比得是自己的工作的效率。有时候,我们工作做完,是可以先走。你想想,你走了之后,估计别人也敢走了。从这一点上,可以说你是帮助了大家。当然这只是开玩笑,做人做事要有点原则。工作没完成当然不能跑回去,这是没有责任的表现,以后主管怎么能把事情交给你。工作做完,想先走就走了,不必当担心这担心那的。我相信一个好的主管,不会以一些无所谓的因素来衡量一个人的。只要自己身体正,就不怕别人说。10.做好职业生涯规划
每个人在来实习之前,肯定会想我来这家公司是做什么。当你想好,并决定
来的时候,你已经做了第一步职业生涯规划了。实习也是成了我们检验计划的时候,如果你发现这个工作不适合你,毕业前你还有机会可以做换。如果感觉这个工作适合你,那么你就可以做下一步的规划了。我当初选择这个工作,是因为嵌入式软件开发在近几年会发展会比较快,而且本人对c++和c比较感兴趣。同时,目前做的工作是对日外包,对于我日语的提高也是很有帮助的。现在实习给我感觉是,不出现什么其他状况,应该毕业后会留在这个公司。至少今后的职业规划以日语和编程提高为主,以管理为辅。
在这里,我要感谢上海宝信软件股份分司给我这次宝贵的实习机会。同时,也要感谢组员对我有直接帮助的前辈。当然还要感谢学校和毕业指导王老师的关心与指导。
关键词:安全相关,软件故障,控制措施,算法
0引言
随着技术和材料工艺的发展,目前,越来越多的安全系统使用了嵌入式可编程电子装置,如MCU、PLC等等。他们减小了安全系统的物理尺寸,极大地提高了安全保护的主动性、可靠性和效率。与此同时,由于集成电路的复杂性,特别是软件的不可视特性,由他们带来的安全隐患的排查变得非常困难,特别是对高复杂性系统,如轨道信号系统、石化控制系统、核反应堆安全系统,这些安全隐患的爆发将是致命的。因此对于安全相关系统的软件的故障进行控制就是非常必要的[1]。
随着标准IEC-61508的普及,功能安全与软件故障防护的理念越来越被人重视。本文根据IEC-60335附录R中针对微控制器需测试的部件及要分析的故障,进一步描述了CPU、可变和不可变存储器、中断、时钟及I/O接口等测试技术的应用和实现[2]。
1 E / E / PE系统电路结构及故障
影响系统安全 的因素包 括硬件故 障和软件 偏差两方面[3,4,5,6]。硬件可靠性可通过现有的安全标准对产品进行结构检查和非正常试验来检测; 软件安全则需要安全相关软件具备故障/偏差控制措施,这是标准IEC-60335中的一项安全要求。如图1所示。
由于避免错误的措施通常在产品或设备的设计过程就已经基本考虑,因此,笔者开发E/E/PE安全相关系统软件故障防护的措施着重于控制故障 /错误的措施的研究,而这个方面也是现在功能安全领域研究的重点和难点。
2常见控制故障 / 错误的措施
基于IEC-60335的安全相关系统的软件防护措施及各种算法已经成为研究热点[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]。表1列出了MCU控制系统常见的故障( 详见IEC - 61508附录R) 。
在此基础上按照表1的顺序,本文介绍了B类软件部份故障/差错控制措施的算法,这些措施适用于当有周期自检的单信道,以最广泛的8位机举例。
1组件: 中央处理单元1. 1寄存器
■故障: 滞位( stuck-at) 在“0”或“1”
■措施: H. 2. 16. 5功能检测/ H. 2. 19. 6. 1方格贮存器检测
■算法: 对于8位寄存器,顺序写、读、检查0x55和0x AA
■说明:
检测时应禁止中断;
破坏性检测,为了避免寄存器中的数据被破坏,应将数据先存入堆栈;
应先检查最先使用的寄存器,如堆栈指针寄存器→通用寄存器→状态寄存器,无论哪个寄存器存在故障,都会返回错误标志;
C语言不能直接读取寄存器,寄存器检测需要用汇编语言;
应在main函数展开之前进行寄存器检测,即利用头档预处理;
H. 2. 19. 8. 2带有一位冗余的字保护,此措施需要额外的硬件监测CPU,也需要额外的内存保存每个存储单元的奇偶数。
2组件: 1. 3程序计数器PC
■故障: 滞位( stuck-at) 在“0”或“1”
■措施: H. 2. 18. 10. 2程序顺序的逻辑监测
■算法: ROM中一般存放有多个函数,设定每个函数的特征值,如该函数的首地址,将这个数据存放在ROM的指定地址中;当PC启动这个函数时,读取特征值并与存放在ROM中的特征值比较。
■说明:
■检测时应禁止中断;
■PC检测依赖于MCU的结构和应用,有许多方法;
■看门狗只能处理PC滞位在一个不变的值时发生溢出; 如果是一位发生滞位,PC仍然可能计数,看门狗可能不发生溢出置位,因此看门狗必须与其它实时应用功能( 如实时中断) 联用。
3组件: 2. 中断处理与执行
■故障: 无中断或太频繁中断
■措施: H. 2. 18. 10. 4时隙监测
■算法: 在指定的时间间隔内,检查发生的中断。对于中断过多,在中断服务程序( ISR) 中使用一个计数器存放一个数字,每发生一个中断,计数器减1,如果中断过多,计数器将置0; 对于中断过少,在中断服务程序( ISR) 中使用一个计数器存放中断数目,每发生一个中断,计数器减1,如果中断过少,计数器将达不到某个数值。
■说明:
■需要事先计算中断数量的误差范围;
■如果没有使用中断,需要一个专用的函数来检测中断服务程序是否正常;
■中断检测依赖于MCU的结构和应用,可以用多种方法。
4组件: 3. 时钟
■故障: 错误频率
■措施: H. 2. 18. 10. 1频率监测
■算法: 双时钟比较,需要一个独立时钟做参考,与CPU的主频时钟比较。在独立时钟的一个或几个周期内,记录主频时钟周期数。
■说明:
■除了由晶振构成的时钟外,还可以用RC电路构成一个参考时钟;
■时钟检测依赖于MCU的结构和应用,有许多方法;
■需要设置误差范围;
■50 /60 Hz供电线频率可以用作参考时钟。
5组件: 4. 内存4. 1不可变内存
■故障: 所有一位故障
■措施: H. 2. 19. 3. 1周期修改的检查和
■算法: 故障涵盖率应高于99. 6% 。对不可变内存的存储数据逐位求和,使用循环冗余检查CRC计算标识字( 余数) ,与存放在ROM指定位置的标识字比较。
■说明:
检测时应禁止中断;
CRC的和是所检查的内存数据值和,需要列出地址表;
CRC除数( divisor) 的宽度决定了探测错误的能力,从8位到32位,通用的除数CRC-8 = 0x D5,CRC-16 = 0x8005,CRC-16-CCITT = 0x1021,CRC-32 = 0x04C11DB7
CRC的余数( remainder) 可以存放在ROM的最后区域。在CRC计算和时,不包括存放余数和其它专用数的地址,如果计算出来的余数与ROM中保存的参考数不一致,说明ROM存在故障。
6组件: 4. 2可变内存
■故障: DC故障
■措施: H. 2. 19. 6. 2进程贮存器检测
■算法: 可以选用March C/B/X[2]等算法中的一种,例如March B的算法:
{ Down( w0) ; /* 从最后一位到第一位,每位写“0”;
Up( r0,w1,r1,w0,r0,w1 ) ; / * 从第一位到最后一位,读“0”,写“1”,读“1”,写“0”,读“0”,写“1”,然后到下一位;
Up( r1,w0,w1) ; / * 从第一位到最后一位,读“1”,写“0”,写“1”,然后到下一位;
Down( r1,w0,w1,w0) ; / * 从最后一位到第一位,读“1”,写“0”,写“1”,写“0”,然后到下一位;
Down( r0,w1,w0 ) } / * 从最后一位到第一位,读“0”,写“1”,写“0”,然后到下一位。
■说明:
检测时应禁止中断;
启动时应检测完寄存器后就检测RAM;
破坏性检测。在周期检测时,为避免数据被破坏,可以分区检测,将数据暂存于一个分区,检测完后再写后来;
对于大容量RAM,分区检测能够提高效率。
如果RAM不能分区,可选用C类措施H. 2. 19. 7走块式贮存器测试检测,顺序写、读、检查0x55和0x AA,耗时但节约RAM空间。
7组件: 4. 3寻址( 与可变和不可变内存相关) 5. 内部数据路径5. 2寻址
故障: 滞位
■措施: H. 2. 19. 8. 2带有一位冗余的字保护
■算法: 在发送端,产生一位奇偶数; 在接收端,用同样的算法,产生一位奇偶数,与接收到的比较。
■说明:
需要在发送端和接收端具有计算奇偶数的硬件;
需要一位地址线用于传输奇偶数;
对于单芯片结构,内部存储器,4. 1和4. 2的检测涵盖了此项检测。
8组件: 6外部通信
■故障: 汉明距离3
■措施: H. 2. 18. 2. 2传输冗余
■算法: 传输冗余最经济,通过两次或多次数据传输,将数据进行比较。
模拟量需要设置数据误差;
H. 2. 19. 4. 1CR-单字可用检测数字传输,单字的产生需要传输端和接收端硬件支持
检测依赖于实际应用,根据情况选择不同的方式。
9组件: 6. 3计时
■故障: 错误的时间指针或错误顺序
■措施: H. 2. 18. 10. 4时隙监测
■算法: 利用实时时钟,如CPU时钟,记录外部输入数据的数目,如电磁灶的PWM信号,与存储的预期值比较。
■说明:
需要设置数据误差;
检测依赖于实际应用,根据情况选择不同的方式。
10组件: 7. 输入 / 输出外围7. 2模拟I / O 7. 2. 1 A / D和DA转换器
■故障: GB4706. 1 19. 11. 2条规定的故障条件
■措施: H. 2. 18. 13似真检查
■算法: 利用参考电平,检测A/D转换数据是否在预期范围内; 利用脉冲信号,如PWM,检测D/A模拟量是否在预期范围内。
■说明:
参考电平应能涵盖使用范围,如0 ~ 5 V,
需要对应的硬件支持;
需要设置边界条件,如误差;
检测依赖于实际应用,根据情况选择不同的方式。
11组件: 7. 2. 2仿真多重通道
■故障: 错误寻址
■措施: H. 2. 18. 13似真检查
■算法: 需要在每一道施加不同的电压,检测multiplexer是否正常; 或者使用同一个输入信号,如温度传感器信号,选择每一道进行测量,将数据进行平行比较。
■说明:
需要对应的硬件支持;
需要设置边界条件,如误差;
检测依赖于实际应用,根据情况选择不同的方式。
以不可变内存的措施算法为例,周期性利用CRC算法产生一个检查数,比对检测。Rom起始地址: E000h,结束地址FFFEh。除数: 1021,余数: 7BD6,地址: FFFFh。程序运行时间需: 9056个时钟周期( 8 MHz)
故障处理Power_offpanbie( ) : 27个时钟周期( 8 MHz) 。当余数不为7BD6时,调用关机程序来保护系统:
调用关机程序后系统停止工作,进入周期性自检,可以相对保证系统的安全。
3软件检测顺序
CPU寄存器、程序计数器、可变内存和不可变内存应在工作前进行系统检测POST( Pre-Operation System Test) ,所有组件需要进行周期检测,即嵌入自检BIST( Built-In Self-Test ) 。一个基本的例子,没有外部内存、外部通信及定制集成片,检测顺序如下:
堆栈指针寄存器→通用寄存器→ 状态寄存器→程序计数器→ 可变寄存器→不可变寄存器→ 时钟频率→中断功能→ 模拟多道开关→A/D、D/A转换器
同时需要注意的是,进行寄存器、内存检测时,必须先屏蔽中断功能,避免中断影响检测结果。
4实例
为了更加详细的展示上述控制故障 /错误的措施,现以GIC-CS28B电磁灶举例说明。
4. 1风险分析
系统有如下工作特征:
1) 当电压升高或降低时,功率能稳定在一定的范围内,当超压、欠压时,系统停止加热,并显示故障代码。
2) 热敏电阻如果存在开路、短路或者失效,系统停止加热,并显示故障代码。
3) 锅底温度超过安全值( 如烧油) ,系统停止加热,并显示故障代码。
4. 2安全功能解决方案
程序上电进行初始化,进入主程序中轮番调用各个功能子程序。
流程如下: 上电后,程序首先检查寄存器、RAM单元、ROM单元、时钟等,以保证CPU运行是正确的,然后检查电压、电流和热敏电阻各个参数数值,当以上任何一出现故障或不正常,系统就进入关机程序,不会加热,以保障安全。
掉电后,系统检测到进行低电压复位处理。程序运行中始终对RAM,ROM,PC等CPU内部系统以及电压电流,温度进行循环检测,一旦错误,系统进入关机状态。看门狗实时监测以保证程序的正常运行。
系统依靠电流、电压、温度等参数,以确保系统能安全稳定运行,而为了保证AD采样的精确度,程序采取了以下措施来降低风险:
1) 定时中断方式采样,以固定的间隔( 2毫秒) 周期进行采样。以保证得到的数据及时刷新。
2) 多次采样,累加后求取平均值作为目标值,以保证采样的稳定和真实性。程序中以2毫秒为间隔,连续采集50次,然后求得平均值作为参考值。
3) 为保证单片机运行,开启了看门狗实时监控。以便在程序被干扰的情况下及时复位。
主流程图如图2所示。
4. 3控制原理
本系统中采用的单片机为意法半导体公司生产的ST7系列单片机,型号: ST72F324K2B6。采用外部 晶振源,晶振频率4 MHz,经过内部PLL锁相环倍频后,CPU运行在8MHz频率下。所用到的综合开发环境为: ST7 Visual Develop。版本: Version: 3. 4. 0,此开发环境整合了编辑、编译、连接、DEBUG功能。
4. 4安全相关程序
4. 4. 1软件描述
本软件用C语言编写,使用的综合开发环境ST7 Visual Develop Version: 3. 4. 0整合了编辑、编译、连接、DEBUG功能。
软件采用主程序中按序周期调用子程序方式,各种功能在子程序中实现。程序运行后,在主程序函数main( ) 中循环调用各个功能子程序。
4. 4. 2相关安全措施子程序描叙
1) reg_chk( ) : 寄存器检查。功能描叙: 检查单片机内部寄存器,内部寄存器是,A、X、Y、CC、PC、SP。子程序中对A、X、Y分别写入0xaa/0x55,并读出后再与0xaa/0x55做比较,若有错误,进入关机程序。程序运行需183个时钟周期。
针对CC状态寄存器,运行3个算数运算:
1 0x08 + 0xf8运算结果影响半进位标志H = 1,借位 /进位标志C = 1,零标志Z = 1,符号位标志N = 0;
2 0x07 + 0x01运算结果影响半进位标志H = 0,借位 /进位标志C = 0,零标志Z = 0,符号位标志N = 0;
3 0x01 - 0x02运算结果主要影响符号位标志N = 1。
分别在三个运算结束时,对影响的每个位进行0 /1测试,若有错误,进入关机程序。
针对堆栈指针SP的检测方法是: 把数据0xaa,0x55,0xa5,0x5a分4次压入堆栈,然后在每次出堆栈时检测数据是否相同。若数据正确,意味着栈指标SP正确,否则栈指标SP错误则进入关机程序。
2) pc_chk( ) : 程序计数器检查。功能描述: 检查单片机程序计数器PC。此程序中,引入了10段子程序,占用了10段不同的程序空间,且每段子程序返回一个固定的值( 分别是1,2,3,…,10) 检查返回的值是否正确。若返回值正确,表示程序计数器PC正确,否则,进入关机程序。程序运行需267个时钟周期。
3) ram_chk( ) : RAM记忆体检查。功能描叙: 检查单片机内部RAM内存。RAM起始地址0080h结束地址00ffh。程序对待测RAM单元分别写入0xaa/0x55,并读出后与0xaa/0x55做比较,若相同,表示单元正确,否则进入关机程序。程序运行需21 632个时钟周期。
4) rom_chk( ) : ROM记忆体检查。功能描述: 检查单片机内部ROM内存。程序对单片的内部ROM空间( E000h-FFFEh)做CRC算法处理得到一检查数( 0x7BD6,地址FFFFh) ,对比此检查数与存储的数值,若相同表示ROM正确,否则进入关机程序。程序运行需9056个时钟周期。
5) clock_chk( ) : 时钟检查。功能描述: 检查单片机时钟频率。程序通过在固定的时间( 200 ms) 内读取工频( 50 Hz) 脉冲数,作为比较,若脉冲个数在7 ~ 13范围内,则认为时钟是正确的,此范围误差为: + / - 30% 。程序运行需48个时钟周期。
6) port_io_chk( ) : 输出I / O口检查。功能描述: 检查单片机关键输出口的逻辑正确性。程序针对关键输出控制口PC3( Denable) 在非加热状态下进行电平测试。非加热状态下,此口应该是电平0,若非0,则程序关闭加热板的电源后进入关机程序,以保障系统的安全。程序运行需36个时钟周期。
7) ad_chk( ) : AD转换器检查。功能描述: 在AD 13信道上输入一固定电压( 2. 5 V,最大采样电压为5 V) ,程序周期的对此电压进行采样,并比较采样值,若此值在120 ~ 134范围内,则认为AD转换器正确。误差范围: + / - 2. 7% 。程序运行需46个时钟周期。
8) ad_process( ) : 电流、电压、功率数据的处理子程序。功能描述: 程序周期性对采样的电压、电流、温度AD值进行比较,若超出规定范围,则设立一错误标志,主程序中检测到错误标志给予关闭加热或关机处理。电压范围: 180 ~ 260 V。电流下限( ad值) ≥90,温度值( ad值) ≤224。程序运行需1689个时钟周期。
9) temp_judge( ) : 热敏电阻故障及温度判别。功能描叙:程序周期的对热敏电阻的AD值进行采样比较,若AD值超过规定的范围则设置温度错误标志,主程序中检测到此错误标志,给予停止加热或关机处理,以保障系统安全。AD值范围:
1热敏电阻短路: ad≤5
2热敏电阻开路: ad≥240
3温度超标: ad≥224
程序运行需83个时钟周期。
10) power_offpanbie( ) : 故障类型辨别程序。功能描述: 程序对上述子程序ad_process( ) 及temp_judge( ) 所产生的故障标志进行检测,针对不同的标志,给予停止加热或停机的处理。程序运行需27个时钟周期。
上述具体程序省略。
5测试
由第三方认证机构测试,当试验对不同组件设置故障后,主程序中检测到错误标志,程序运行到故障组件检测段立刻停止加热并停机,同时程序段显示故障段,能立刻确定故障组件。充分保障功能安全的正确实施。
6结语
说道嵌入式音箱系统就不得不提到另外一个词“定制安装”,嵌入式音箱系统是定制安装中家庭影院常用的一种音箱系统。安装美观及节省空间是嵌入式音箱系统区别于外摆式音箱系统的最突出优点。那么嵌入式音箱是从什么时候出现的呢?这还要从1982年的美国说起,那时美国的富人、好莱坞明星和体育明星已经不能单单满足外摆式音箱放在他们的别墅中,他们想要一种既有好的声音又能够与他们的家居环境完全融合的音箱产品。俗话说哪里有需求,那里就有服务。聪明的音箱厂家Sonance看到了这个潜在市场开发出满足客户需求的嵌入式音箱。其他音箱厂商稍后也发现了这里面的商机纷纷投入嵌入式音箱领域,但是嵌入式音箱不是简简单单的把音箱放入墙里就大功告成,它涉及到管路布线、声学处理等方方面面的问题。市场初期鱼龙混杂面对这种局面厂商、系统服务商都希望有一个组织能够规范这个新兴的市场,这时CEDIA(美国电子系统设计与定制安装协会)成立了,CEDIA成立的目的就是为了规范这个新兴的市场。
让我们来看一下美国权威机构CEPro 2010年统计的定制安装领域的知名嵌入式音箱品牌。我们将着重介绍一下前五个音响品牌。
SpeakerCraft
SpeakerCraft 的历史开始于1976年,从最初的零售店面到后来为Motorhome(家庭旅居车)生产扬声器。随着Speakercraft退出零售基础,公司成为了一家为众多知名音频公司代工生产的厂家。
SpeakerCraft在1994年发布了一系列自有品牌的定制安装扬声器。Speakercraft成功的关键在选拔了一位狂热的年轻人,Jeremy Burkhardt。从销售,安装到产品的开发, Jeremy Burkhardt惊人的活力与决心,奠定了Speakercraft在行业中的标准。
Jeremy Burkhardt与他的行业专家团队,以及归功于他们的引人注目的成长,行业贡献和出众的技术赞誉都是Speakercraft传奇的全部。
今天,在Burkhardt的领导下,公司已成为定制安装扬声器与电子产品的领导者,通过全美国及遍布世界80多个国家的代理商,提供宽广精选的定制安装音响产品和附件。
Paradigm
二十多年来,加拿大百里登(Paradigm)涉足了多个产品领域的设计与制造,并为市面上各个同级别的产品树立了杰出的音质标准。在致力于开发最佳性能/价格比产品的同时,我们也在不断的推动着扬声器设计理念的发展。
令人惊讶的音准、空间感极强的音场、针点般的定位能力,清晰、有力的低频以及惊人的动态范围,都是百里登(Paradigm)先进扬声器设计的性能标志。
二十多年来,位于加拿大渥太华的国家研究委员会(NRC),一直在研究扬声器音质与它们测量结果之间的关系本质。
为此,NRC组织了数百次科学的双盲听测试,其间选取了各种不同类型的音乐,并邀请了包括普通人和经验老道的发烧友在内的听众,来对扬声器的音质进行评级。根据听众的喜好,扬声器被分组进行了测试。
NRC的研究员们在分析结果后得出了这样的结论:在好的音质与好的测量结果之间的确存在3个直接联系。而且他们还按重要性排出了顺序,所有听众都明显倾向于:
平坦的中频
得分最高的扬声器没有夸张任何一个中音频率,有害的谐振被很好的控制住了。
平顺的整体能量响应
得分最高的扬声器能够均匀地扩散声波能量--轴线与偏轴频响曲线都很平顺。
低失真得分最高的扬声器还表现出极低的失真。
这些里程碑式的发现便是所有百里登(Paradigm)扬声器设计的基础。
百里登是一个在加拿大市场占有率很高的品牌,但是在国内还没有建立正规的销售渠道。
Bowers & Wilkins
1966年,John Bowers 与挚友 Peter Hayward 在英国南部海岸 Worthing 创办了一家后来称为 B&W Electronics 的制造企业。他们坚持务实低调的作风,将所有利润投入到企业研发中,以求创造出完美的扬声器。
尽管 Bowers & Wilkins 现已成为一家大公司,其分销链和客户遍及世界各地,但 John Bowers 最初却在与朋友 Ray Wilkins 合伙经营的音响店中为西萨塞克斯 Worthing 的当地客户亲自组装扬声器系统。CI和CT系列嵌入式音箱只是Bowers & Wilkins所有音箱产品中的很小的一个组成部分。
Sonance
说起Sonance这个品牌,或许国人对它的认识甚少。不过,它在海外确实是一个赫赫有名的影音品牌。它诞生于1982年,由Geoff Spencer和Scott Struthers两人联合创立,并设计出世界首款家庭定制安装用的入墙式音箱。在创立初期,Sonance仅仅只有一个型号的产品,但经过20多年的发展,Sonance的产品开发并不单单局限在入墙音箱方面,产品十分丰富多样,而且已经成为综合性家居音响系统产品的生产厂家。
Sonance公司的两位创始人Geoff Spencer和Scott Struthers,由于Sonance 发明了入墙音箱和取得了公认的成就以S c o t t Struthers对定制安装行业的贡献,CEDIA在2002年授予Scott Struthers“终生成就奖”。
Triad
Triad 是一家总部坐落于美国俄勒冈州波特兰的公司,自1982 年起便一直设计并建构高端居室用扬声器,已成为美国定制安装业的行业领导者。
Triad 提供最全面的应用型定制扬声器解决方案,具特定用途,面面俱到。我们相信扬声器定制应该与最好的高保真音响一样拥有同样高端的品质,但它们也应该能毫无阻碍地融入居室的环境当中。
Triad 扬声器均是在俄勒冈州波特兰的现代化厂房中设计、生产。我们并不仅仅是组装产品,我们还设计、构建产品。由于使用了精炼有效的原则,所以我们就能在美国进行高效的生产,并提供杰出的品质,堪与世界各大品牌竞争。
嵌入式音箱在国内的发展
在美国嵌入式音箱已经普及后,大洋彼岸的中国还没对嵌入式音箱有一个系统的了解。在2004年的某天,丹麦尊宝音响的中国总代理找到北京的一家系统集成商共同研究嵌入式音箱在家庭影院系统中的应用。这两家公司都敏锐的发现中国市场将迎来一个私人家庭影院高速发展的时期而嵌入式音响系统搭建的影院将是其中最符合未来需求的系统。所以经过他们的反复实验论证中国第一个嵌入式影院音响系统终于在北京落成了。这虽然是一个简单的五声道系统,但是这却是一场革命,关乎未来家庭影院走向的革命。
时光荏苒,在北京奥运会召开前的一段时间,中国的家庭影院市场也酝酿着一种变革,这种变革就是嵌入式音箱系统,这种音箱系统的优点广泛的被中国的业主、设计师、系统集成定制商所认可。国内外定制音箱品牌如雨后春笋般在神州大地生根发芽。前进的脚步是没有终点的,随着不断的学习、研究中国的系统集成商们对嵌入式影院系统又有了长足的认识和了解,根据不同的房型不同的声学和居室美观要求搭建多种不同方案。
随着中国市场的蓬勃发展,国外知名音箱纷纷进入国内。这时国内已看到专门用于影院的嵌入式音响,比如Triad、Sonance、KEF、SpeakerCraft、Klipsch等。嵌入式影院也可以根据不同的客户需求搭建多种应用方案。
在国内定制安装行业做的不错的北京天海北方系统集成科技有限公司也提供的几个使用嵌入式 / 隐藏式音箱设计,达到完美效果的私家影院案例。
方家胡同46号展示厅
设备清单:
主箱:Triad InWall Gold/6 LCR *3只
环绕:Triad InWall Gold/4 Surround *6只
低音及功放:Triad InRoom Gold PowerSub w/Rack AMP 500 *4套
前级:ARCAM FMJ AV888 *1台
后级:ARCAM FMJ P777 *1台
ARCAM FMJ A18 *1台
投影幕:ORAY Mask Screen 152寸3D透声幕*1块
投影机:RUNCO D-73d 3D投影机*1套
播放机:OPPO BDP-95 *1台
SONY PlayStation 3*1台
方家胡同46号影院演示厅,总面积45平米
在设计家住结构及内装时用EASE做了详细的声场预分析。扩声系统采用9.4声道,屏幕采用151寸电动变遮幅透声幕。投影机用RUNCO D73 ,亮度1400流明,音箱用美国Triad Gold系列。功放用ARCAM777,888前后级AV功放。在设计室内建声结构上采用美国最新理论成果,在四面墙壁,天花板均应用了相关建声结构及声学材料,外表用透声布覆盖达到美学与声学光学的完美统一。
在影院完成后我们用SCNCORE(OTC1000+VP410)专业测试设备,对投影机进行光学校正,SMART6.1及专业声场测试话筒对声场进行最终调校,以求达到最完美的效果。
设备清单:
主箱:KEF Ci 9000ACE *3只
环绕:KEF Ci 130ds *3对
低音:KEF PSW3500 *2只
前级:CARY Cinema 11a * 1台
后级:CARY Cinema 11P *1台
投影幕:OS PA-150H WS102 150寸框架透声幕*1块
投影机:RUNCO LS-HB *1台
播放机:Pioneer BDP-4100 蓝光机 *1台
蓝光HTPC媒体中心 *1台
古典的奢华与现代科技相结合,该影院有25平米左右,采用了KEF Ci系列嵌入式音箱,把纯正的英国音带给客户。该方案获得2012年CEDIA 七万五千澳元级别最佳私人影院提名。
北京万城华府某影院项目
配置清单:
主箱:Sonance Cinema Select THX LCR *3只
环绕:Sonance Cinema Select THX SUR *4只
低音:Sonance Cinema SUB 12-500(含腔体) *2套
低音功放:Sonance Cinema SUB 12-500D AMPLIFIER *1台
功放:Integra DTR-50.2 *1台
投影幕:ELITE PVR150WH1 A1080 150寸框架透声幕 *1块
投影机:EPSON EH-TW5500
播放机:先锋BDP-4100 蓝光机1台
中控:bitwise 1套
卡拉ok:乐富豪3190音箱及功放1套
无线话筒:舒尔PGS24/SM58 2套
点歌系统:雷客 惊艳单机版无线点歌系统 *1套
【嵌入式相关论文】推荐阅读:
嵌入式毕业论文:嵌入式系统的应用06-19
嵌入式营销是一种基于顾客价值链的产业营销新思维的论文03-11
嵌入式培训总结06-17
实习总结嵌入式11-11
嵌入式考研须知03-14
嵌入式系统开发试题07-19
嵌入式开发学习心得11-16
嵌入式应用实践总结12-17
嵌入式软件简历下载01-10
嵌入式系统试题库09-20