标题:uC/OS操作系统与裸机程序最大的不同点是什么?嵌入式操作系统之UCOS-II总览
作者:1247977828
日期:2017-07-31 11:07
内容:
uC/OS操作系统与裸机程序最大的不同点是什么?嵌入式操作系统之UCOS-II总览
由于操作系统一般都是很大的,而且牵扯的问题比较多,所以今天只是一个大体上的对ucos的总结。
一、嵌入式操作系统概览
嵌入式操作系统的主要好处就是屏蔽了底层硬件的差别,给上层应用提供统一的接口,并管理进程调度和资源(如CPU时间、内存)分配等。并且可以充分利用硬件资源,如在单任务时(大循环结构,如大部分51程序)遇到delay函数时,CPU在空转。而在多任务系统,遇到delay或需等待资源时系统会自动运行下一个任务,等条件满足再回来运行先前的任务,这样就充分利用了CPU,提高了效率。
uC/OS操作系统与裸机程序的最大不同点就在于uC/OS有任务调度,可以根据任务的重要程度(优先级)优先执行重要的任务,从而确保能及时处理最重要的数据。(所以对于一个系统有必要使用OS的判断是能否划分一个个的任务,并且各任务间的耦合很小)
可以思考下裸机程序中断的时候发生的过程。利用堆栈可以很自由的在A、B中切换,如果切换足够快,A、B看以来好像同时在执行,这就是并行,A、B就是任务。如果这个切换操作放到定时器函数中来做,就可以严格按照时间来切换。另外,各个任务之间有存在一定的关系,有逻辑上的先后等,必须引进全局的结构体、变量来标记一些信息,全局的这些数据是不会被释放的,所以所有的任务可以去通过读、写这些数据来实现各个程序块交流信息,实现所谓的同步、互斥。这就是操作系统的原理,而这些不同的通信方式按功能细分就成事件管理、内存管理等。
二、ucos的运行概览
首先是主函数,然后是OSInit(),这个函数就是对那些全局的数据结构初始化,建立希望的链表等数据结构,为后面全局变量通信做好准备,并且创建了1-2个系统任务(空闲任务必须,为了不让操作系统返回。统计任务可选),而所谓的创建任务OSTaskCreate就是把一个函数的函数地址、自己的栈建立联系、优先级、任务控制块等弄好,为任务切换做好准备。设置好定时切换的相关信息类似定时器,按照节拍在中断中进行任务切换判断(这个节拍是给延时函数提供计时基准,一个任务的延时时间到或等待的资源满足而进入就绪表就会检查优先 ..