实时操作系统
文章平均质量分 93
逸兴云飞~
人生就是这样,要耐的住寂寞,才守得住繁华
展开
-
uCOSIII实时操作系统 十一 消息传递
一个任务或者中断有时候需要和另一个任务交流信息,这个就是消息传递的过程就叫做任务间通信,任务之间的信息传递有两种途径,一是使用全局变量,二是通过发布消息。使用全局变量的时候,每一个任务或者中断服务程序都必须保证气全局变量的独占访问,(通常解决方式:关中断、临界区、信号量)。消息也可以通过消息队列作为中介发布给任务。原创 2023-10-24 18:17:49 · 416 阅读 · 0 评论 -
uCOSIII实时操作系统 十 事件标志组
任务等待的条件可以使标志组里任意一个标志置位或者清零,也可以是所有事件标志都置位或者清零。如果任务等待的事件标志组不满足设置的条件,那么该任务被置位挂起,直到等待的事件标志组满足条件,指定的超时时间到,事件标志被删除或者被另一个任务终止了该任务的挂起状态。: bit序列,任务需要等待事件标志组的哪个位就是把这个序列对应的位置1.根据设置这个序列可以是8bit,16bit,32bit比如任务需要等待事件标志组的bit0或者bit1(无论是等待置位还是清零)flag的值就是0x03。原创 2023-10-22 16:09:14 · 282 阅读 · 0 评论 -
uCOSIII实时操作系统 九 信号量和互斥信号量
先粘出正点原子对信号量的解释:使用信号量的最初目的是为了给共享资源设立一个标志。我们可以将其想象成我们裸机中经常使用的标志位。只不过该标志位代表的是共享资源被占用的情况罢了。:所谓互斥是同一时刻只能有一个线程可以对共享资源进行访问其他线程无法进行访问。原创 2023-10-20 09:57:12 · 560 阅读 · 0 评论 -
uCOSIII实时操作系统 八 软件定时器
在学习单片机的的时候,会使用定时器来做很多事情,这个定时器时单片机自带的也就是硬件定时器,而UCOSIII内核提供了一个模拟定时器的机制类似于任务,但是占用资源少,只能做一些简单的定时控制,如可以定时器喂狗控灯。在软件定时器中绝对不能添加事件管理函数,阻塞等待函数。原创 2023-10-17 20:35:55 · 483 阅读 · 1 评论 -
uCOSIII实时操作系统 七 中断与时钟管理
参数如果是0则不会阻塞任务。中断是一个硬件机制,主要用来向CPU通知一个异步事件发生了,这时CPU就会将当前CPU寄存器的值入栈,然后转而执行中断服务程序,在CPU执行中断服务程序的时候有可能有更高优先级的任务就绪,那么当退出中断服务程序的时候,CPU就会直接执行这个高优先级的任务。为0时,UCOSIII使用中断的方式来保护临界段代码,当设置为1的时候,就会采用给调度器上锁的方式来保护临界段代码。函数在任务中使用的非常多,每个任务都必须是死循环,并且必须需要有阻塞的情况,否则低优先级的任务就无法被运行了,原创 2023-10-16 20:07:22 · 709 阅读 · 0 评论 -
uCOSIII实时操作系统 六 内部任务(空闲函数)
是UCOSIII必须创建的一个任务,任务优先级使用宏OS_CFG_TICK_TASK_PRIO来定义,一般时钟节拍的任务应该,设置一个相对较高的优先级。● OSIdleTaskHook()叫做钩子函数,钩入用户自定义的钩子函数实现用户自定义的功能等,但是需要注意的是,在钩子函数中用户不允许调用任何可以使空闲任务阻塞的函数接口,空闲任务是不允许被阻塞的。在uCOSIII中,空闲任务是系统在初始化的时候创建的优先级最低的任务,空闲任务。在uCOSIII中有一个提供运行时间统计的任务,也就是统计任务。原创 2023-10-12 21:14:59 · 378 阅读 · 0 评论 -
uCOSIII实时操作系统 五 任务API(时间片轮转API调度)
时间片轮转法:主要用于分时系统中的进程调度。为了实现轮转调度,系统把所有就绪进程按照先入先出的原则排成一个队列的队首进程,让CPU上运行一个时间片的时间。时间片是一个小小的时间单位,通常为5~10ms数量级。当进程用完分给他的时间片后,系统的计时器发出时钟中断,调度程序便停止该进程的运行,把它放在就绪列队的末尾,把CPU分给就绪队列的队首进程,同样也让它运行一个时间片,如此往复。原创 2023-10-12 09:31:13 · 324 阅读 · 0 评论 -
uCOSIII实时操作系统 五 任务API(任务挂起与恢复)
将任务阻塞,也就是被剥夺CPU的使用权而暂时终止运行,转到阻塞状态,将任务转到阻塞态被挂起称为任务挂起。被挂起的任务得不到CPU的使用权,也不会参与调度,它相对于调度器而言是看不见的,除非他从挂起态中解除。被挂起的任务不能运行,直到其他任务以该优先级作为参数调用来恢复他,才能将该任务的状态重新设置为就绪状态。原创 2023-10-11 19:20:01 · 378 阅读 · 0 评论 -
uCOSIII实时操作系统 五 任务API(任务创建和删除)
引入:一个任务的三要素是任务主体函数,任务栈,任务控制块,那么怎样吧这个三要素联系在一起呐?原创 2023-10-11 14:42:20 · 419 阅读 · 0 评论 -
uCOSIII实时操作系统 四 任务管理
如果分别建立了优先级3,5,8,11这个四个任务,任务创建成功之后,调用CPU_CntLeadZeros()我们可以计算出 OSPrioTbl[0] 第一个置 1 的位前面有 3 个 0,那么这个 3 就是我们要查找的最高优先级,至于后面还有多少个位置 1 我们都不用管,只需要找到第一个 1 即可。就绪任务列表OSRdyList[]通过上一步我们已经知道了哪一个优先级的任务已经就绪,但是UCOSIII支持时间片轮转调度,同一个优先级下可以有多个任务。而。原创 2023-10-10 20:20:07 · 696 阅读 · 0 评论 -
uCOSIII实时操作系统 三 移植
同样复制 Micrium 官方移植好的工程中的相关文件到 UCOS_BSP 文件下,需要复制的文件路径为Micrium\Software\EvalBoards\Micrium\uC-Eval-STM32F107\BSP将下边两个文件移植到自己的所建的UCOSIII_BSP的目录当中。主要内容是基于评估板(厂商的板子)的应用实现,在我们移植中有部分文件是可以用来使用的,在路径红色方框中我们可以看到官方移植的评估板芯片是STM32F107,但是不影响我们在STM32F103开发板上进行移植。原创 2023-10-08 21:00:33 · 925 阅读 · 2 评论 -
uCOSIII实时操作系统 二 同步与通信
同步概念:互斥概念:临界区概念:任务时间概念:信号量概念:互斥信号量概念:事件标志组概念:消息邮箱和消息梯队概念:内存管理概念:如何从裸机开发转跳到OS编程:轮询系统:前后台系统:多任务系统:原创 2023-10-05 11:27:54 · 546 阅读 · 0 评论 -
uCOSIII实时操作系统(重入函数,调度算法,嵌入式系统中断)
内核本身也增加了应用程序的额外负荷,代码空间增加ROM的用量,内核本身的数据结构增加RAM的用量,但更重要的是,每个任务都有自己的栈空间,这一块吃内存是相当厉害的因此,STN89C51,52等性能有限单片机一般不能运行实时内核,因为单片机的RAM很有限。如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务。μC/OS总是调度就绪了的,优先级最高的任务获得CPU的控制权,不管这个任务是什么,执行什么样的功能,也不管该任务是否已经等了很久。原创 2023-09-28 09:46:36 · 159 阅读 · 0 评论 -
UCOS-III操作系统(操作系统、任务)
实时操作系统(RTOS)是指当外界事件或者数据产生的时候,能够接收并以足够快的速度给与处理,其处理的结构又能在规定的时间内来控制产生过程或者对处理系统作出快速的相应,并控制所有实时任务协调一致运行的操作系统。(Linux和Windows等都是分时操作系统)。整理成一句话“如果逻辑和时序出现偏差将会引起严重后果的系统!!硬实时操作系统和软实时操作系统。硬实时操作系统规定某个动作必须在规定的时刻内完成或发生,比如汽车生产车间,焊接机器必须在某一时刻内完成焊接,焊接的太早或者太晚都会对汽车造成永久性伤害。原创 2023-09-26 20:23:24 · 377 阅读 · 0 评论