揭毅
(德赛工业研究院,惠州 516000)
在MCU系统程序设计中,常常遇到测试工程师反映我们的按键反应不灵敏,或是系统对外部的信号响应慢,实时性差。如果不是程序模块设计问题,那我们就要考虑系统程序设计上的实时性问题了。但是如果仅仅在系统程序设计上片面地考虑实时性问题,而忽略了任务均衡性问题,那么系统又可能出现有的模块程序响应快、有的模块程序反应慢的问题。为了解决这些问题,下面就我在车载娱乐系统程序设计工作中的经验与大家聊聊。
实时性很容易被多数人误认为就是“快”的意思。其实,“快”只是实时性的一个特征,而且是相对的——是相对于任务需求而言的。
无论你的个人电脑是采用了何种“奔X”CPU,也无论该CPU的主频是几个G,只要你安装的是XP操作系统,那么它就是一个非实时系统。相反,一个8位的MCU,哪怕主频只有4MHz,也可以构成一个实时系统。
实时或是非实时,与CPU的速度并无直接关系,而完全取决于操作系统或程序架构。众所周知,操作系统(OS)主要包括三大组成部分:进程调度、内存管理和文件系统。其中,进程调度决定了系统的实时性。
实时系统的本质特征在于:所有任务的响应时间和执行时间都是可以根据各任务的需求进行设计,并且事先就能被预知。在一个实时系统上,我们可以根据需求分析的结果,对各个任务进行合理的、满足要求的“实时性”设计,使得最终完成的程序能够按照预定规则运行,并达到各种实时性指标的要求。……