ucosii专题

stm32f103zet6 DM9000 UCOSII LWIP 快速集成modus tcp

之前使用stm32f103rbt6芯片完成了集成 freemodbus modbus rtu参照:点击打开链接 现使用stm32f103zet6 DM9000 UCOSII LWIP 集成modus tcp,类似于集成modbus rtu 首先参照原子官方提供的战舰V3  UCOSII+LWIP试验 为基础模板 第二:添加modbus 、 port的C文件和H文件,参照 点击打开链接 第三

如何将ucosii移植到vs2008中运行

本文介绍关于如何将ucosii移植到vs2008中运行,其中参考了CSDN下载频道xiahouzuoxin的一篇文章,在此对这哥们表示感谢。 step1:下载uCOS-II源码,只是一些源代码和文档,放在自己硬盘上即可,无需安装(原以为要安装什么操作系统呢)。 step2:新建vs工程   完了之后的vs界面如下:   step3:将step1下载的文件中的源文件uCOS-

为什么说Ucosii是可剥夺型内核?

为什么说Ucosii是可剥夺型内核? 因为它不仅可以实现高优先级任务可以剥夺低优先级任务的CPU使用权,还可以实现低优先级任务也可以剥夺高优先级任务的CPU使用权。 首先,在ucosii中,任务只有5种状态,分别是睡眠状态、就绪状态、运行状态、等待状态、中断状态。其次,在ucosii中有两种调度器:一种是任务级调度器OS_Sched。在OS_Sched中,会先查找优先级最高的任务,接着调用OSCt

UCOSII_STM32F1移植详细过程(一)

UCOSII_STM32F1移植详细过程(一) 1、概述2、关于µC/OS3、移植过程(文件描述与提取)1.软件工程文件夹描述2.提取工程中有用的文件3.提取ST标准外设库有用的文件2.新建、修改文件 1、概述 该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台: 系统平台:µC/OS-II (最新V2.92版) 硬件平台:

UCOSII归纳四

一.OSQPost以FIFO(先进先出的方式)组织消息队列。OSQPostFront以LIFO(后进先出的方式)组织消息队列。 二.信号量定义,创建,使用简例。  1.信号量的定义  OS_EVENT *SEM1;  2.信号量的创建  SEM1=OSSemCreate(0);  3.等待一个信号量  INT8U err;  OSSemPend(SEM1,0,&err);  4.

UCOSII归纳三

1.OS_TCB任务控制块全部驻留在RAM中,这是值得注意的,特别是在RAM缺乏的时候。 2.任务的管理:   1:建立和删除任务。(注意:任务删除要考虑任务资源的释放。)   2:请求删除任务:如果任务A运行一段时间已经拥有了一些资源,而任务B想删除它,要是强制删除,这些资源可能没有释放。   3:改变任务优先级。   4:挂起和恢复任务。 3.信号量由两部分组成:信号量的计数值和等

UCOSII归纳二

1.在UCOS中创建任务时,要注意堆栈的增长方式不要搞错。 2.0x12345678的存储大端格式: 低地址<--0x12|0x34|0x56|0x78-->高地址 3.0x12345678的存储小端格式: 低地址<--0x78|0x56|0x34|0x12-->高地址 4.MIPS/MHZ就是说每1MHZ频率能产生多大的MIPS。以前计算机大部分都是单线程,就是说1秒钟如果振荡周期是1

ucosII移植笔记

μC/OS-II临界区管理机制 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL() 同样是通过关中断来保护临界区,OS_ENTER_CRITICAL/OS_EXIT_CRITICAL一共实现了三种实现方式,如下所示:   #if OS_CRITICAL_METHOD == 1   #define OS_ENTER_CRITICAL() __asm__("cli"

ucosII 应用设计笔记

1. 任务基本知识   1.1任务的划分   1.2任务的可调度性分析 2. 任务设计 2.1任务的结构    1).单次执行的任务    2).周期性执行的任务    3).事件触发执行的任务 2.2任务优先级的安排  1)ucos ii最多有64个优先级,(最高0~最低63)  2)在<OS_CFG.H>中可设置最低优先级       例:  #define  OS_

移植ucosii遇到的问题 B OSStartHang

ucosii在STM32rbt6上可以正常地运行,工作需要,我将ucosii移植到STM32F103C8T6,更换了一下启动代码,结果程序 开始调度时就死在那了 OSStart(); 进去后void  OSStart (void){    if (OSRunning == OS_FALSE) {        OS_SchedNew();

【ALIENTEK 战舰STM32开发板例程系列连载+教学】第五十八章 UCOSII实验1-任务调度

第五十八章 UCOSII实验1-任务调度      前面我们所有的例程都是跑的裸机程序(裸奔),从本章开始,我们将分3个章节向大家介绍UCOSII(实时多任务操作系统内核)的使用。本章,我们将向大家介绍UCOSII最基本也是最重要的应用:任务调度。本章分为如下几个部分: 58.1 UCOSII简介 58.2 硬件设计 58.3 软件设计 58.4 下载验证   58.1 UCOSII

第五十八章 UCOSII实验1-任务调度

前面我们所有的例程都是跑的裸机程序(裸奔),从本章开始,我们将分3个章节向大家介绍UCOSII(实时多任务操作系统内核)的使用。本章,我们将向大家介绍UCOSII最基本也是最重要的应用:任务调度。本章分为如下几个部分: 58.1 UCOSII简介 58.2 硬件设计 58.3 软件设计 58.4 下载验证   58.1 UCOSII简介 UCOSII的前身是UCOS,最早出自于199

[转]一些别人学习ucosii的笔记作为参考

一、uC/OSii 内核结构:任务管理,时间管理,中断处理,任务之间的通信与同步! 二、代码的临界区分析: 代码的临界区也称为临界区,指该代码在被处理时不能被分割,因此不能被中断打入!所以在进入该代码(临界区)时应该关中断,而执行完后再打开中断!而uC/OSii 用OS_ENTER_CRITICAL和OS_EXIT_CRITICAL这两个宏来开/关中断。而针对不同的处理器,这两个宏定义是不同的,

ucosii 移植STM32笔记之入门篇一

10.31 今天接触了ucosii在STM32上面的移植,就碰到的几个问题进行总结: 1、工程输出文件出现错误,原因是没有添加相应设备芯片的启动文件; 2、出现undefined symbol ...  refered from ...,原因是OS_CPU_A.ASM这个汇编文件没有添加; 3、启动函数(如下),主要用于系统启动之后进行调用的,也叫启动任务: 1 static void s

UCOSII邮箱问题

学习ucosII的过程中,使用了邮箱,发送线程收到串口数据后,在收到结束符,完成一帧的收取后,动态开辟一个空间,将此空间的指针作为消息内容,发送到接收处理线程,处理线程处理完后,释放此空间,调试程序发现内存泄漏现象,经过分析发现是由于串口数据发送过快,在之前的邮箱消息还未处理的时候,新的邮箱消息又进行了发送,导致消息指针被覆盖,最后释放的是覆盖后的指针,之前的指针未释放,时间长之后内存满,导致无可

STM32mini使用UCOSII信号量和邮箱实现任务挂起和恢复

本文结构 1.UCOSII原理2.UCOSII实验代码 1.UCOSII原理 UCOSII 是一个可以基于ROM 运行的、可裁减的、抢占式、实时多任务内核,具有高度可 移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统 (RTOS)。 UCOSII 是专门为计算机的嵌入式应用设计的, 绝大部分代码是用C 语言编写的。CPU 硬 件相关部分是用汇编

ucosii学习小记

任务就绪列表及任务调度 八位二进制变量OSRdyGrp的每一位对应OSRdyTbl[]的一个元素,而OSRdyTbl[]的每一个元素是一个八位二进制数,每个位对应一个任务的状态,1为就绪,0为非就绪,因此ucosii共有8*8 = 64个任务。对应下图: 可以将优先级别看作是一个6位的二进制数,将高三位指明是OSRdyGrp的第几个元素,低三位指明是OSRdyTbl的第几位,如优先级别

uCOSii消息邮箱管理

uCOSii消息邮箱管理 (MESSAGE MAILBOX MANAGEMENT) 消息邮箱主要用于中断和任务之间进行邮件传递,或者是在任务与任务之间进行邮件交换。 我个人觉得,了解uCOSii消息邮箱的几个重要函数,还是有必要的。不是所有人都给我们测试案例。 1、重点需要了解下面几个函数 消息邮箱指针=OSMboxCreate(消息邮箱数据块指针) 建立并初始化一个消息邮箱,在初始化时,

基于ucosII的打蜜蜂小游戏

最近在学习ucosii的时候做的一个小东西,之前看到有人也发过类似的文章,这个程序的实现很简单,没有用到邮箱之类的东西,有能力的大神们可以做相应的扩展,下面是程序的运行截图: 附上相应源码:https://github.com/dxyou/Bee-Bee

手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(五)

继续...... 整个UCOSII嵌入式操作系统的任务调度策略便是如此,现在进行一个总结: 某个任务在执行中,每隔一定周期发生滴答时钟中断,在中断中遍历整个任务链表,更新每个任务的延时时间,修改就绪状态。任务执行完毕后,进入延时函数,在延时函数中会把当前任务挂起(清空当前任务的就绪状态,使其进入未就绪状态),然后根据查表发找到在就绪任务中,优先级最高的那一个任务。找到新任务以后,人工强制发生一

手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(四)

继续...... 再回到那个重要得函数: void OS_Sched (void){#if OS_CRITICAL_METHOD == 3u /* Allocate storage for CPU status register */OS_CPU_SR cpu_sr = 0u;#endifOS_ENTER_CRITICAL(

手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(三)

继续...... if (ticks > 0u) { /* 0 means no delay! */OS_ENTER_CRITICAL();y = OSTCBCur->OSTCBY; /* Delay current task

手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(二)

继续...... if (ticks > 0u) { /* 延时参数是否为0 */OS_ENTER_CRITICAL();            /* 禁止中断 */y = OSTCBCur->OSTCBY;OSRdyTbl[y] &= (OS_PRIO)~OSTCBCur->OSTCBBitX;if (OSRdyTb

为什么说Ucosii是可剥夺型内核?

为什么说Ucosii是可剥夺型内核? 因为它不仅可以实现高优先级任务可以剥夺低优先级任务的CPU使用权,还可以实现低优先级任务也可以剥夺高优先级任务的CPU使用权。 首先,在ucosii中,任务只有5种状态,分别是睡眠状态、就绪状态、运行状态、等待状态、中断状态。其次,在ucosii中有两种调度器:一种是任务级调度器OS_Sched。在OS_Sched中,会先查找优先级最高的任务,接着调用OSCt