首先按照教程一步一步将系统移植到目标板上,然后开始了系统的学习。
在系统的main函数内必须首先对操作系统和目标板进行初始化,1、OS_Init()因为在运行OS_Start()必须要先创建一个任务,第二步就是建立任务OSTaskCreate(),第三步就是运行OS_Start()函数。
另外一个需要注意的就是系统时钟节拍函数,用户必须在多任务系统启动以后再开启时钟节拍器,也就是在调用OS_Start()之后。
时间管理:
操作系统的时间管理是通过定时中断来实现的。中断的时间间隔是固定不变的,该中断也成为一个时钟节拍。操作系统提供了两个时间延时函数,OSTimeDly()和OSTimeDlyHMSM();调用以上两个函数会使操作系统进行一次任务调度,并且执行下一个优先级最高的就绪任务。同样可以调用取消延时函数来随时取消延时,以达到应用的目的。
任务之间的通信与同步
对于一个多任务操作系统来说,任务之间的通信与同步是必不可少的,os提供了四种同步对象,信号量、邮箱、消息队列和事件。所有这些同步量都有创建、等待、发送和查询的街口用于实现进程间的通信和同步。
事件控制块ESB:
所有的通信信号都被看成是事件,对事件进行的操作包括1、初始化一个事件控制块OSEventWaitListInit();2、将一个任务置就绪OSEventTaskRdy();3、将一个任务置等待该事件发生的状态OSEventWait();4、由于等待超时而将任务置就绪OSEventTO();
信号量:
信号量由两部分组成,信号量的计数值和等待该信号任务的等待任务表。在多系统中用于:控制共享资源的使用,标志事件的发生,使两个任务的行为同步。
邮箱:
操作系统的另一种通信机制,可以使一个任务或中断子程序向另一个任务发送一个指针型的变量。该指针指向了一个包含特定消息的数据结构。为了在操作系统中使用邮箱,必须将OS_MBOX_EN置位。
消息队列:
也是操作系统的一种通信机制,可以使一个人物或是中断子程序向另一个任务发送以指针方式定义的变量。具体的应用有所不同,每个指针指向的数据结构变量也有所不同。
内存管理:
将连续的大块内存按分区管理。每个分区中包含多个大小相同的内存块,但是不同分区之间内存块大小可以不同。
“读书是一种心态,分享是一种快乐”, “读书 • 快乐”有奖读书活动与您携手相伴。