LPC21XX移植UCOS-II小结_OD手机客户端

 体验式培训     |      2021-05-23 23:48
本文摘要:1.在uC/OS-II的协助手册内,作者特地特别强调意味著无法在OSInit()或者OSStart()内调用Timer初始化程序,那不会毁坏系统的可移植性同时带给性能上的损失。所以,一个折衷的办法就是: 在优先级最低的程序内调用,这样可以确保当OSStart()调用系统内部函数OSStartHighRdy()开始多任务后,首先继续执行的就是Timer初始化程序。

OD手机客户端官网

1.在uC/OS-II的协助手册内,作者特地特别强调意味著无法在OSInit()或者OSStart()内调用Timer初始化程序,那不会毁坏系统的可移植性同时带给性能上的损失。所以,一个折衷的办法就是:  在优先级最低的程序内调用,这样可以确保当OSStart()调用系统内部函数OSStartHighRdy()开始多任务后,首先继续执行的就是Timer初始化程序。或者专门进一个优先级最低的任务,只做到一件事情,那就是继续执行Timer初始化,之后通过调用OSTaskSuspend()将自己悬挂一起,总有一天仍然继续执行。

不过这样不会浪费一个TCB空间。对于那些RAM严重不足的系统来说,还是不必为好。  2.一些最重要的uC/OS-IIAPI讲解  任何一个操作系统都会获取大量的API供程序员用于,uC/OS-II也不值得注意。由于uC/OS-II面向的是嵌入式研发,并不拒绝大而全,所以内核获取的API也就大多和多任务息息相关。

  主要的有以下几类:  1)任务类  2)消息类  3)实时类  4)时间类  5)临界区与事件类  我个人指出对于初级程序员而言,任务类和时间类是必需要首先掌控的两种类型的API.  下面我就来讲解较为最重要的:  1)OSTaskCreate函数  这个函数应当最少再行main函数内调用一次,在OSInit函数调用之后调用。起到就是创立一个任务。目前有四个参数,分别是任务的入口地址,任务的参数,任务堆栈的首地址和任务的优先级。

调用本函数后,系统不会首先从TCB空闲列表内申请人一个机的TCB指针,然后将不会根据用户得出参数初始化任务堆栈,并在内部的任务准备就绪表内标记该任务为准备就绪状态。最后回到,这样一个任务就创立顺利了。

OD手机客户端官网

  2)OSTaskSuspend函数  这个函数很非常简单,一看名字就该明白它的起到,它可以将登录的任务悬挂起。如果悬挂的是当前任务的话,那么还不会引起系统继续执行任务转换先导函数OSShed来展开一次任务转换。这个函数只有一个参数,那就是登录任务的优先级。

那为什么是优先级呢?事实上在系统内部,优先级除了回应一个任务继续执行的先后次序外,还起着分别每一个任务的起到,换句话说,优先级也就是任务的ID.所以uC/OS-II不容许经常出现完全相同优先级的任务。  3)OSTaskResume函数  这个函数和上面的函数正好忽略,它用作将登录的早已悬挂的函数完全恢复成准备就绪状态。

如果完全恢复任务的优先级低于当前任务,那么还为引起一次任务转换。其参数类似于OSTaskSuspend函数,为登录任务的优先级。

必须尤其解释是,本函数并不拒绝和OSTaskSuspend函数成对用于。  4)OS_ENTER_CRITICAL宏  很多人都以为它是个函数,其实不然,仔细分析一下OS_CPU.H文件,它和下面立刻要谈及的OS_EXIT_CRITICAL都是宏。

他们都是牵涉到特定CPU的构建。一般都被更换为一条或者几条嵌入式编撰代码。由于系统期望向上层程序员隐蔽内部构建,故而一般都声称继续执行此条指令后系统转入临界区。只不过,它就是关口个中断而已。

这样,只要任务不主动退出CPU使用权,  别的任务就没闲置CPU的机会了,比较这个任务而言,它就是独霸了。所以说道转入临界区了。这个宏能少用还是较少用,因为它不会毁坏系统的一些服务,特别是在是时间服务。

并使系统对外界号召性能减少。  5)OS_EXIT_CRITICAL宏  这个是和上面讲解的宏设施用于另一个宏,它在系统手册里的解释是解散临界区。

OD手机客户端

只不过它就是新的进中断。必须留意的是,它必需和上面的宏成对经常出现,否则不会带给意想不到的后果。最坏的情况下,系统不会瓦解。

我们引荐程序员们尽量少用于这两个宏调用,因为他们的确不会毁坏系统的多任务性能。  6)OSTimeDly函数  这应当程序员们调用最少的一个函数了,这个函数已完成功能很非常简单,就是再行悬挂当起当前任务,然后展开任务转换,在登录的时间来临之后,将当前任务完全恢复为准备就绪状态,但是不一定运营,如果完全恢复后是优先级最低准备就绪任务的话,那么运营之。非常简单点说道,就是可以任务延时一定时间后再度继续执行它,或者说,继续退出CPU的使用权。

一个任务可以不显式的调用这些可以造成退出CPU使用权的API,但那样多任务性能不会大大降低,因为此时意味着依赖时钟机制在展开任务转换。一个好的任务应当在已完成一些操作者主动退出使用权,好东西要大家共享嘛!  3.我们引荐程序员们尽量少用于OS_ENTER_CRITICAL宏和OS_EXIT_CRITICAL宏两个宏调用,因为他们的确不会毁坏系统的多任务性能。

why??  4.在以uC/OS为操作系统的项目中,系统有可能要处置各种有所不同的中断请求,如果某个中断处理程序必须调用uC/OS的各种Post函数向任务收到消息,那么uC/OS建议中断服务程序的读音是:  1、留存全部CPU寄存器  2、调用OSIntEnter或OSIntNesting必要特1  3、继续执行用户代码做到中断服务  4、调用OSIntExit  5、完全恢复所有CPU寄存器  6、继续执行中断回到指令  不得已称作标准中断方式,这种方式实质上是将这个中断处置重新加入了任务调度系统,也就是说这个中断可以引发任务的转换。  如果在中断处置中没调用各种Post函数的话,则可以用一般的、象原本没操作系统时的读音:  1、留存中断处理程序必须中用的CPU寄存器  2、继续执行中断处置  3、完全恢复留存了的CPU寄存器  4、继续执行中断回到指令  不得已称作慢中断方式,按照这种方法定义的中断总有一天会引发任务转换。


本文关键词:LPC21XX,移植,UCOS-II,小结,手机,客户端,在,OS-II,OD手机客户端官网

本文来源:OD手机客户端-www.the-granthams.com