论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
2.2 光盘伺服系统的分析
对光盘伺服控制系统的设计和实现已有一些参考资料。根据μC/OS-II的特点和光盘伺服系统工作的具体情况,笔者将实现的光盘伺服系统分为三个运行状态:Power-On State(上电态)、Idle State(空闲态)、Execution State(执行态)。图2表示了设定的三个状态之间的关系和进入各个状态的条件。三个状态中,执行态最为复杂。为了把复杂的问题简单化,把执行态划分为三个子系统:Host Interface(HIS)、Buffer Manager(BM)、 Disk Interface(DIS)。图3表示了这三个子系统之间的联系和进入跳出各个子系统的条件。图4表示了子系统之间的状态变化及其条件,比较明晰地表示了执行态的实现过程。
图4 执行态子系统的任务状态运行关系
2.3 伺服系统的软件结构
经过如上分析,光盘伺服系统初始化后,创建了五个任务:Host Task(主机任务)、Serial Port Task(串口任务)、Disk Read Task(读盘任务)、Disk Write Task(写盘任务)、Servo Task(伺服任务)。任务间通过Semaphore(信号量)和Mailbox(邮箱)进行通信,实现交互控制和任务的切换。图5表明了这五个任务之间的关系。
图5 光盘伺服系统的任务结构框图
下面给出主程序的框架:
void main (void)
{
//初始化处理器和硬件
……
//产生任务
OSTaskCreate(ServoTask,(void*)0,(void*)&ServoTaskStk[511],4);
OSTaskCreate(DiscWrTask,(void*)0,