RTOS——嵌入式实时操作系统

RTOS—嵌入式实时操作系统

定义:

当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,控制所有实时任务协调一致运行的嵌入式操作系统。我们常常说的嵌入式操作系统都是嵌入式实时操作系统。比如μC/OS-II和Linux。故对嵌入式实时操作系统的理解应该建立在对嵌入式系统的理解之上加入对响应时间的要求。

(1) μC/OS-II

μC/OS-II是一种基于优先级的可抢占式的硬实时内核。它属于一个完铭、可移植 、可固化、可裁减的抢古式多任务内核,包含了任务调度、任务管理、时间管理、内存管理和任务间的通信和同步等基本功能。μC/OS-II嵌人式系统可用于各类8位单片机、i6位和32位微控制器和数字信号处理器。μC/OS-II系统代码体系结构如下图。
在这里插入图片描述
μC/OS-II系统可以管理64个任务,对应64个优先级(0最高63最低),目前预留8个给系统,因此应用程序最多可以有56个任务。系统赋予每个任务的优先级是不相同的,是完全抢占式的实时内核,其运行就绪条件下优先级最高的任务。每个任务处于5种状态下的某一种状态包括休眠态、就绪态、运行态、挂起态、被中断态。五中状态关系如下图,

在这里插入图片描述
1)休眠态相当于任务驻留在内存中,但还没有交给内核管理。
2)就绪态意味着任务已经准备好,且准备运行,但由于优先级比正在运行的任务的优先级低,所以暂时还不能运行。
3)运行态的任务指该任务得到了CPU的控制权,正在运行中的任务状态。
4)挂起状态也可以叫作等待事件态,正在运行的任务由于调用延时函数或等待事件信号量而将自身挂起。
5)发生中断时,CPU提供相应的中断服务,原来正在运行的任务暂时停止运行,进入了被中断状态。

任务调度

任务调度是内核的上的主要职责之一,就是要决定该轮到哪个任务运行。 μC/OS-II系统总是运行进入就绪态任务中优先级最高的那个。

任务管理

在μC/OS-II系统中最多可以支持64个任务,分别对应优先级0-63,其中0为最高优先级,63为最低优先级。系统保留了4个最高优先级的任务和4个最低优先级的任务,所以用户可以使用的任务数有56个。 μC/OS-II系统提供了任务管理的各种函数调用,包括创建任务、删除任务、改变任务的优先级、任务挂起和恢复等。系统初始化时会自动产生两个任务:一个是空闲任务,它的优先级最低,该任务仅给一个整型变量做累加运算,另一个是系统任务,它的优先级为次低,该任务负责统计当前CPU的利用率。

内存管理

μC/OS-II系统中把连续的大块内存按分区管理,每个分区中包含整数个大小相同的内存块,但不同分区之间的内存块大小可以不同,用户需要动态分配内存时,系统选择一个适当的分区,按块来分配内存。释放内存时将该块放回它以前所属的分区,这样能有效解决碎片间题,同时执行时间也是固定的。
μC/OS-II系统对内存的管理通过OSMemCreate( ) , OSMemGet( ) ,OSMemPut( ) ,OSMemQueey( )4个函数完成,通过调用这些函数来创建一个内存分区,分配一个内存块,释放一个内存块,查询一个内存分区状态。

时间管理

μC/OS-II系统的时间管理是通过定时中断来实现的。该定时中断一般为10ms或100ms发生一次,时间频率依靠用户对硬件系统的定时器编程来实现。中断发生的时间间隔是固定不变的,该中断也成为一个时钟节拍。μC/OS-II系统要求用户在定时中断的服务程序中,调用系统提供的与时钟节拍相关的系统函数,例如中断级的任务切换函数和系统时间函数。

任务之间的通信与同步

对一个多任务的操作系统来说,任务间的通信和同步是必不可少的。μC/OS-II系统中提供了4种同步对象,分别是信号量、邮箱、消息队列和事件。所有这些同步对象都有创建、等待、发送、查询的接口用于实现进程间的通信和同步。

(2) Linux

Linux是一个功能超强的32 位操作系统。Linux是以核心为基础的、完全内存保护、多任务多进程的操作系统。支持广泛的计算机硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC,MOTOROLA 等现有的大部分芯片。源代码全部公开,任何人可以修改并在GNU通用公共许可证(GNU General Public License)下发行,这样开发人员可以对操作系统进行定制。同时由于有GPL 的控制,大家开发的东西大都相互兼容,不会走向分裂之路。Linux 内核是Linux 系统的心脏,它实现了操作系统五大主要功能模块:进程管理、内存管理、文件系统、设备控制和网络。Linux 内核的功能模块如图所示:
在这里插入图片描述
1)进程管理模块可以说是Linux 内核的心脏模块,它负责创建和终止进程,并且处理它们和外部世界的联系(输入和输出)。对整个系统功能来讲,不同进程之间的通信(通过信号,管道,进程间通信)是基本的,这也是由内核来处理的。另外,调度器应该是整个操作系统中最关键的例程,是进程管理中的一部分。更广义的说,内核的进程管理活动实现了在一个CPU 上多个进程的抽象概念。
2)内存管理模块的作用是用于确保所有进程能够安全地共享计算机主内存区,此外,内存管理模块还支持虚拟内存管理方式,使得Linux支持进程使用比实际内存空间更多的内存容量,并可以利用文件系统把暂时不用的内存数据块交换到外部存储设备中去,等需要时再交换回来,这样大大提高了内存使用效率,节省了内存空间。
3)文件系统模块用于支持对外部设备的驱动和存储,虚拟文件系统通过向所有的外部存储设备提供一个通用的文件系统接口,从而隐藏了各种硬件设备的不同细节。
4)网络模块提供对多种网络通信标准的访问,并支持许多网络硬件设备。

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入实时操作系统UCOS III是一种常用的RTOS系统,它可以被移植到不同的硬件平台上,例如stm32F103。UCOS III提供了任务管理、中断处理、时间管理等功能,使得开发者可以方便地编写多任务的嵌入应用程序。 在UCOS III中,任务是系统的基本单元,开发者可以创建多个任务,并且为每个任务指定优先级和堆栈大小。任务可以同步、通信和共享资源,从而实现并发执行和资源管理。此外,UCOS III还提供了延时函数和中断处理函数,以满足实时应用的需求。 为了移植UCOS III到stm32F103上,可以按照以下步骤进行操作: 1. 使用cubemx工具配置stm32F103的硬件资源,例如GPIO、UART等。 2. 在keil中创建一个新的工程,并将UCOS III的源代码添加到工程中。 3. 在工程中创建至少3个任务,并为每个任务设置优先级和堆栈大小。 4. 在任务中编写相应的代码来实现任务的功能。 5. 配置中断处理函数,例如USART1_IRQHandler,以便处理外部中断。 6. 编译和烧录程序到stm32F103上,并运行程序。 通过以上步骤,就可以在stm32F103上成功移植并运行UCOS III。开发者可以根据具体需求,进一步优化任务调度和资源管理,以提高系统的实时性和性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [嵌入学习——使用STM32F103基于HAL库移植uCOS-III](https://blog.csdn.net/qq_66144143/article/details/127723008)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值