浅谈单片机嵌入式系统设计袁浩兵

(整期优先)网络出版时间:2017-12-22
/ 2

浅谈单片机嵌入式系统设计袁浩兵

袁浩兵

深圳市中波新能源科技有限公司

摘要:无论是嵌入式系统还是单片机都是长时间以来科技领域大家关注的焦点,也是推动科技发展、提高生活水平的科技产品。嵌入式单片机即指以微控制器为核心的嵌入式系统。本文将浅谈在单片机嵌入式系统设计中的设计要点。

关键词:单片机;嵌入式;设计

1基本概述

嵌入式系统是一种基于计算机技术基础上的专用系统,其构成部分具体包括了嵌入式处理器、外部硬件与操作系统三部分所共同构成,可进行设备操控与管理。单片机嵌入式此系统最为核心的构成部件即为嵌入式处理器,其可将外围功能完全集中到单块芯片之上,并以此来完成系统的集成操作。相较于传统的计算机系统而言嵌入式系统最为显著的特点具体包括以下几点。

(1)体积小。嵌入式系统的部分控制部件被安装到了系统内,在实现缩小系统体积的同时还可大幅度降低其生产成本;

(2)高性能。嵌入式系统有着更加优秀的稳定性,且运算效率更高,因而具备有较高的性价比;

(3)实时性。嵌入式系统对时间有着严格的标准限定,一旦超出预定时间,便无法达到预期效果,因此这一系统有着极强的实时性特点。

2单片机嵌入式系统设计要点

2.1分析需求,确定设计改进方向

需求分析是进行嵌入式系统设计的指导,是确定设计与改进方向的依据。在进行设计与开发时,首要的就是要确定改进方向,也即依据使用者的实际需求和目前存在的问题出发,对用户方提出的有关于系统功能、性能、系统内部环境以及安全性、可靠性进行分析,对于用户关于界面以及资源等的要求要考虑借鉴,而在系统开发的成本、可行性和进展成效等的预测也是需要加以考虑的。

2.2基于系统构成,优化设计

嵌入式系统由软硬件共同组成,因此,在进行设计时一定要综合考虑系统的不同组成部分在系统中的作用,在实际设计运用中,要注意进行任务的支配与划分,即根据系统功能等的需求,将设计工作划分为若干模块,在不同的任务模块与单元选择相应的编程代码,合理利用CAD软件以及PCD软件。

在进行程序编码的时候,一定要注意相关软件的合理选择,在进行嵌入式系统开发时,可以对程序编辑器、编码运行模拟器以及一定的调试仪器等加以利用,提升虚拟开发的技术水平,使得系统开发不再囿于单片机的使用环境,可以进行独立开发,这可以大大提高开发的效率,也可以减少调试的时间,是增强其时效性的重要途径。

2.3注重合理性与经济性

在嵌入式系统的设计中,应该注意接口设计,这是系统硬件层的重要组成.基于单片机嵌入式系统设计,可将应用和驱动接口设置为完全相同的样式,促使嵌入式系统的应用软件能够达到标准化,并且也可更好的在多项单片机间进行循环利用。

在就硬件构成与驱动程序展开设计工作之时,可采用EDA工具实行模拟调节,将所设计出的基于单片机的嵌入式系统能够在EDA工具上进行模拟,并通过模拟过程来及时发现系统设计所存在的缺陷问题,并及时作出改进处理,最终便可有效的确保嵌入式系统程序设计更加趋向于合理化,并促使系统的开发时间大大加快,使得开发人员的工作难度降低,也降低了系统后期的调试以及测试障碍。

2.4要注意将操作系统微内核作为重点

嵌入式系统中的所有软件都是独立的微观实时操作系统,操作系统是嵌入式系统中最重要的部分。单片机嵌入式系统的开发利用,其最主要的目的就是为了增强信息传输与处理的时效性,就在于提高系统的功能以及性能,解决资源遭受限制的问题,作为嵌入式系统的核心结构,单片机是保证系统稳定运行的关键。

嵌入式系统的微内核结构,可以降低单片机的整体运行负担,也可以使得内核集成性能得到提升,极大提高单片机系统的扩展性能和移植性能。但是,随着单片机的系统逐渐变得复杂,使得相对应的内核结构的体积也随之变大,对单片机的整体性能造成了影响,而微内核机构的体积变大,也在一定程度上影响了嵌入式系统对于单片机的通用性,其重复使用率大大降低,一方面平均成本的降低受到影响,另一方面也对信息传输处理的时效性产生一定的影响。因此,在进行嵌入式系统的设计时,应该将微内核结构性能的提升与改进作为重点,这是提高单片机运行效率的最直接的途径。

2.5嵌入式系统的功能测试与网络拓展

和其他软件类似,嵌入式系统的测试也分为很多种,也有不同的划分方式,如静态测试与动态测试;单元测试与集成测试、系统测试、确认测试;模拟测试、实机测试等。不同阶段与不同环境下,选择的测试方法也不同,应根据具体实际决定,综合不同测试的结果对嵌入式系统的运行状况与性能进行评估。

嵌入式系统实现单片机的远程调控,要通过一定的设各连接,这就要求一定的网络的支撑,要将设备连接在同一网络中,可以将CAN网络这样的主从结构的网络作为网络扩展的参考,分布不同的主从节点,通过主从节点之间的命令的下达与接收执行来实现整个系统的运作。还可对运行状态进行一定的检测,从而确保单片机系统的正常运作。

2.6单片机嵌入式系统编程注意事项

2.6.1延时

嵌入式编程经常会涉及到硬件的操作,如ADC,打开或者关闭一个电流源,这些都是需要时间的,因此当在发出这些指令的时候立即读取寄存器的值是得不到想要的结果的,而且还找不出原因,有时候需要的延时还比较长,达到ms级,一般情况下us级就够了,根据各芯片的时钟频率而定,不单指MCU的总线时钟频率。

2.6.2变量

一般来说如果非常明确某个变量的作用域和生命周期就应该定义相对的变量,如Const、Static等,这样不容易出错,不建议将所有变量都定义成全局变量,这样管理起来比较麻烦,程序一旦出错,破坏性也比较大。函数也是如此,全局变量和通用函数一定要申明,这样在调用的时候不容易出错,而且有些编译器对于未申明的函数是不会报错的,但在调用的时候又会发出类型隐含转换的警告,这点要特别小心。

2.6.3宏定义

在程序编写过程对于一些特定的数字应该尽量使用宏定义,这样做有个好处就是比较直观,便于日后维护。另外,宏定义并不会给程序带来任何负担,因为它在编译的时候就已经全部替代了,所以尽可以广而用之。值得一提的是宏定义并不局限于使用常量,它可以定义函数,因为它是直接替换,因此避免了入栈和出栈,提高了程序执行的效率,但是同时增加了代码量,因此一般用比较简单的函数。它有一个缺点是在替换的过程不检查参数类型是否正常,从而增加了安全隐患。因此可以使用一个称之为Inline的内联函数,它继承了宏定义的优点,又弥补了它的缺点,是个最佳的选择,但是这个属于C++的范畴,有一定的难度。

2.6.4浮点运算

大多数低档次的单片机都是不支持浮点运算的,因此在实际使用过程中也很少用到,因此为了降低成本,一般都去掉了浮点运算模块。但如果万一要用到浮点运算怎么办?而即使不具有浮点运算的单片机在仿真调试过程依然可以使用floatordouble的数据类型进行计算,而且结果也很准确,这是为什么?这是因为编译器自动调用了库函数来实现的,一般是通过迭代的方法,因此它的执行效率非常慢,不建议采用此方法,而通常采用的是“定点”的方法来解决这个问题,比如说一个32bit的数据,可以假定它的低8位是小数位,然后移位计算,类似于整数运算,这种方法比较复杂,但是可以非常精确,还有一种方法就是直接放大10的N次方倍进行整数的计算,可以得出近似值,因此为了不增加不必要的麻烦,应该总是尽量避免使用浮点运算,一般情况也都是可以避免的。

3结束语

单片机应用的日渐普及,嵌入式系统的开发工作也愈发关键,而对嵌入式系统的开发设计,并通过对其系统编码程序的实现,将嵌入式系统与单片机发展的实践相结合,对于提升系统性能,促进单片机的集成化发展具有重要意义。

参考文献:

[1]魏娟.基于单片机的嵌入式系统的开发研究[J].课程教育研究:学法教法研究,2016(22).

[2]王鹏.基于嵌入式单片机的电机控制系统设计[J].科技创新与应用,2013,(25):26.