嵌入式实时操作系统 UCOS

2024-02-08 14:32

本文主要是介绍嵌入式实时操作系统 UCOS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

嵌入式实时操作系统 UCOS

  • 1 简介
    • UCOS 区别
  • 2 UCOSII 移植
    • UCOSII 移植 F1
  • 3 UCOSII
    • 任务
    • 消息邮箱、信号量
  • 编辑时间 20231214

1 简介

uC/OS-II是一种基于优先级的、可抢先硬实时内核

UCOS 区别

特点(Features)µC/OSµC/OSIIµC/OSIII
发布年份199219982009
提供源代码
书(Book)
抢占式多任务
最大任务量64255无限
每个优先级别的任务数11无限
时间片轮转调度××
信号量
互斥信号量×√(可嵌套)
事件标志组×
消息邮箱×(不需要)
消息队列
固定大小的内存管理×
直接向任务发送信号量××
无需调度的信号发送选项××
直接向任务发送消息××
软件定时器×
任务挂起/恢复×√(可嵌套)
防止死锁
可裁剪
代码量3K-8K6K-26K6K-24K
数据量1K+1K+1K+
代码可固化
运行时可配置××
编译时可配置
支持内核对象的 ASCII 命名×
同时等待多个内核对象×
任务寄存器×
内置性能测试×基本增强
内置追踪点××
用户可定义的钩子函数×
POST 操作可加时间戳××
内核察觉式调试×
用汇编语言优化的调度器××
捕获退出的任务××
任务级时钟节拍处理×
系统服务函数的数目~20~90~75

3、UCOS相关概念

任务堆栈:
堆栈在RAM里面按照 “FIFO” 的原则组织的一块连续的存储空间。切换任务和调用其它函数的时候保存现场

任务控制块: 用来记录任务的各个属性

4、UCOS任务状态

休眠状态 :
知识存储区的一段代码,不受UCOS管理

就绪状态:
任务就绪表中进行了就绪登记时,任务具备运行条件

运行状态
正在运行的状态

等待状态:
当正在运行的任务需要等待一段时间或等待一个事件发生再运行时,就会把CPU使用权让出去,进入等待状态

中断服务状态
一个正在运行的任务一旦响应中断就会中止运行而去执行中断服务函数,这时就是中断服务状态

2 UCOSII 移植

UCOSII 移植 F1

  • 1、新建一个UCOSII文件夹,含以下三个文件夹
CONFIG
CORE
PORT
  • 2、在三个文件夹中分别放入对应的文件。然后打开工程文件,添加对应文件(绿色除外)

在这里插入图片描述

  • 3、修改内容、编译,解决
第一
Error: L6200E: Symbol PendSV_Handler multiply defined (by os_cpu_a.o and stm32f10x_it.o).去掉多余 PendSV_Handler第二
打开 sys.h 设置支持UCOS#define SYSTEM_SUPPORT_OS		1		//定义系统文件夹是否支持UCOS第三
Error: L6200E: Symbol SysTick_Handler multiply defined (by delay.o and stm32f10x_it.o).去掉多余 SysTick_Handler

成功!

3 UCOSII

任务

OSTaskCreate 创建任务
OSTaskSuspend 挂起任务
OSTaskResume 恢复任务
OSTaskDelReq 删除任务,无法恢复

消息邮箱、信号量

1、发送消息到邮箱
INT8U OSMboxPost(OS_EVENT *pevent, void *msg)
pevent: 消息邮箱指针(ECB指针)
msg:   消息指针2、从邮箱取出消息
void *OSMboxPend(OS_EVENT *pevent, INT16U timeout, INT8U *err)
pevent :消息邮箱
timeout: 等待时间,0[无限期等待]
err:  错误消息
返回值:邮箱中的消息指针

编辑时间 20231214

这篇关于嵌入式实时操作系统 UCOS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/691310

相关文章

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

深入探索嵌入式 Linux

摘要:本文深入探究嵌入式 Linux。首先回顾其发展历程,从早期尝试到克服诸多困难逐渐成熟。接着阐述其体系结构,涵盖硬件、内核、文件系统和应用层。开发环境方面包括交叉编译工具链、调试工具和集成开发环境。在应用领域,广泛应用于消费电子、工业控制、汽车电子和智能家居等领域。关键技术有内核裁剪与优化、设备驱动程序开发、实时性增强和电源管理等。最后展望其未来发展趋势,如与物联网融合、人工智能应用、安全性与

嵌入式技术的核心技术有哪些?请详细列举并解释每项技术的主要功能和应用场景。

嵌入式技术的核心技术包括处理器技术、IC技术和设计/验证技术。 1. 处理器技术    通用处理器:这类处理器适用于不同类型的应用,其主要特征是存储程序和通用的数据路径,使其能够处理各种计算任务。例如,在智能家居中,通用处理器可以用于控制和管理家庭设备,如灯光、空调和安全系统。    单用途处理器:这些处理器执行特定程序,如JPEG编解码器,专门用于视频信息的压缩或解压。在数字相机中,单用途