摘要:DSP在自动控制系统领域得到广泛的应用。它的性能远远强于单片机,在控制系统中所完成的功能也较为复杂。若基于简单的超循环结构来完成软件设计,则编写的程序繁琐而且困难,更为重要的是系统有的任务精确时限得不到满足;若使用简单嵌入式操作系统,则会占用非常多的资源(CPU与RAM),系统的实时性还有可能不满足要求。为了把一个复杂系统中的任务组织起来,并且尽量减少资源的损耗,本文提出了一种软件设计方法可满足上述要求。
一.DSP介绍
DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。它的内部采用程序和数据分开的哈佛结构,具有专门的乘法器,广泛采用流水线结构,提供特殊的DSP指令,在一个周期内完成一次乘法和一次加法。在国外,DSP芯片已经被广泛地应用于当今技术革命的各个领域;在我国,DSP技术也正以极快的速度被应用在通信、电子系统、信号处理系统、自动控制、雷达、军事、航空航天、医疗、家用电器、电力系统等许多领域中,而且新的应用领域在不断地被发掘。因此基于DSP技术的开发应用正成为数字时代的应用技术潮流。相对于单片机,它速度更快,外设集成度更高,程序存储器更大。在《时间触发嵌入式系统设计模式》一书中详细介绍了基于单片机的软件设计方法,而本文基于DSP对这种设计进行了扩展,使这种设计方法更为灵活,有效。
二.调度器介绍
可以从两方面来看调度器:一方面:调度器可以看作是一个简单的操作系统,允许以周期性或单次方式调用任务;另一方面:从底层角度来看,调度器可以看作是一个由许多不同任务共享的定时器中断服务程序。
1.调度器的组成
(1)调度器数据结构
调度器的核心是调度器数据结构。这是一种用户自定义的数据类型,集中了每个任务所需的信息。
typedefstruct
{
void(*pTask)(void);指向任务的指针(必须是一个void(void)函数)。
unsignedintDelay;延时时标数:直到任务将下一次运行所剩时标数。 时标,是硬件定时器周期中断设定的时间间隔,它是调度器的驱动者。
unsignedintPeriod;周期时标数:任务连续运行所间隔的时标数。
unsignedintDelCounter;若不为周期任务,表示任务运行次数;若为周期函数,则无意义。
charPrdOrTemp;若PrdOrTemp=1,则为周期任务;若PrdOrTemp=0,则为非周期任务。
charRunMe;当任务需要运行时(由调度器)加1
}sTask;
另外,还需要定义一些全局变量:unsignedintTask_Index记录当前所添加任务索引变量,对于每一个任务都要定义一个任务索引变量,以便对任务进行查找。例如:可以利用任务索引变量对任务进行删除。任务队列sTaskSCH_tasks_G[SCH_MAX_TASKS]记录所有任务数据结构的全局变量,其中SCH_MAX_TASKS为定义的最大任务数。虽然在系统运行时,任务有添加或删除,但系统不是很复杂,给出的SCH_MAX_TASKS一定要大于运行的任务数。
京公网安备 11011202001138号
