78tide 发表于 2005-3-29 14:51:02

单片机软件编程框架略谈

单片机软件编程框架略谈

整理:78tide

时间:2005-03-28

前言:经过一段时间编写单片机程序,对整个软件系统有些概括性的认识。这些观点仅是主观认识,不一定都有其正确性,并且只是对整个框架作一个粗略的勾勒,也作为5年单片机开发人员的小学(也是5年)毕业作文。

一、        结构层次

从程序结构分设备驱动、操作系统、应用软件三层,也可以分两层,中间的操作系统省略。如果是三层结构的话,和计算机的结构就类似,计算机通常分为裸机、操作系统和应用软件三个层次。如图

























1。设备驱动

指对部件初始化和操作的代码,通常一个部件的初始化由一个单独子程序可以完成,而对部件的操作则有可能需要多个子程序,但是对应用程序有可能就是一个或二个子程序。一个部件的操作代码尽可能放在同一个源文件中,以便修改和调试。

设备驱动由于和底层硬件关系密切,所以驱动是个基础,它决定整个系统的正确和可靠性。对驱动程序要求是:1功能性 控制正确;2灵活性 对同一类设备可以很快兼容。

设备的分类,根据设备是否集中在单片机内可以内部设备和外部设备。内部设备称为部件,外部设备称为外设。部件通常有定时/计数器,串口,PWM等,外部有RAM,EE,FLASH,液晶,键盘等,当然这种分类对某个型号是不变,如果是同系列或不同厂家的单片机这个分类会不同。例如A/D,EE等,在8031都是外部设备,但对于现在流行的多数单片机,它已经被集中在一片中了。单片化这是总趋势,计算机的主板上芯片也是如此。

2。操作系统

指对各个设备的操作进行管理,以便应用软件的简明和实时。单片机上RTOS现在比较流行的首推UC/OSII。它占用系统资源极小而且功能很强。大部分的软件中没有这个层次,而是应用程序直接和设备驱动接口。



3。应用程序

指满足产口功能要求而进行数据传输、设备控制等操作的代码。本部分代码主要数据结构和算法(其实所有程序都是如此,不过这部分代码的这些特性更加明显),通过算法将数据处理达到应用要求。前两个层次通常在不同系统间可以共享,而这个层次的代码却是很少能共享的。

二、        执行流程

从程序执行流程看也分为三步,采集输入,数据处理和结果输出。









采集输入指通过输入设备获得数据,这些数据包括通讯命令,计数,A/D等等。数据处理就是数据格式转换,或者是查表等操作来输出。结果输出指将处理的数据输出到设备,比较常见有显示、通讯响应,储存等操作。

实际运行过程中有可能出现以下几种情况:

(1)        1个输入,1个处理,1个输出







(2)        1个输入,多个处理,多个输出



















(3)        多个输入,多个处理,1个输出























(4)        多个输入,多个处理,多个输出





















情况(4)可以看成(1)的简单组合,也可以是(1)、(2)、(3)的交错组合,这种情况有可能是一个函数的过程,也有可能就是一个应用系统的过程。在所有情况下中的处理(处理1,处理2……处理n)有时会是不同的处理,而在有的过程中是相同的数据处理。

三、        开发流程

开发过程是一个软件的出现,其中要考虑维护、升级、测试等方面。大致步骤分:

1,        编写需求。也可以说是应用方案书,用自然语言详尽描述出应用的所有过程,其中有必要可要插入示意图。在这一步要完成功能的模块化,如果不能确定的过程可以在下一步确定。

2,        画流程图。根据方案中自然语言描写转化为流程图,这一步要完成流程的详细图外,还要规定函数的划分和所用算法,如果程序数据处理比较复杂,还有编写资源分配表,资源分配表指的是RAM中全局变量(包括数组、结构)的含义和所占空间大小,以及其它用储存数据的开始名称和地址等信息的列表。

3,        CODING。由上步写出流程进行编写代码,代码编写原则是从下到上,即从底层驱动到应用层编写,在每完成一个函数要先进行编译和调试,不要一气写出N多后才编译,或者说再去调试,这样会浪费时间和精力。编写代码过程如果对数据结构或算法有大的修改,一定要对流程图或资源表相应改动。

4,        整体调测。各个函数编写(测试)完毕后,要按照流程的层次进行联合调试,最后组合为完整应用进行功能调试,如果调试成功,可以用些边界值对系统进行测试。系统对实时性或精度等有要求的话,还要进行参数测试。

上述各步骤只是粗分,不能含概所有软件的开发过程,另外由于单片机的软件和硬件息息相关,在开发或升级中都会影响甚至决定软件的算法结构,并且在开发过程出现问题后先要区分出是硬件问题还是软件问题。所以上述步骤只是从软件方面略语一二。

综上所述,软件编程是一个艰苦而又细心的过程,每一步都可以作为专题来论述。本文只是从不同方面来大概描绘出单片机应用软件编写的框架,从而为更加深入研究或学习编程技术打下基础,也在阅读或调试源程序时提供思路。

==========================THE   END==============================

78tide 发表于 2005-3-29 14:52:57

发现:WORD中的图贴不上来。

哪位高手指点一二

lurker_soo 发表于 2005-3-29 16:36:16

直接把WORD文件貼上來

lei_yong 发表于 2005-3-30 11:50:17

zhouheeng 发表于 2005-3-30 18:23:32

把把WORD文件传上来吧

craigtao 发表于 2014-8-14 16:57:42

怎么没有图片呢?本人还在吗?
页: [1]
查看完整版本: 单片机软件编程框架略谈