实时操作系统
文章平均质量分 78
liyuanbhu
这个作者很懒,什么都没留下…
展开
-
FreeRTOS 源码注释(prvAddTaskToReadyQueue)
/* 将 TCB 插入到对应的就绪链表中,如果对应优先级的链表已经有元素了,就插在其后面 */ /* 被多个函数调用 */#define prvAddTaskToReadyQueue( pxTCB ) \ if( ( pxTCB )->uxPrio原创 2012-06-22 21:16:22 · 2413 阅读 · 0 评论 -
FreeRTOS 源码注释(vTaskSuspend)
void vTaskSuspend( xTaskHandle pxTaskToSuspend ) { tskTCB *pxTCB; taskENTER_CRITICAL(); { if( pxTaskToSuspend == pxCurrentTCB ) { pxTaskToSuspend原创 2012-06-22 21:10:43 · 3493 阅读 · 0 评论 -
FreeRTOS 源代码的编程标准与命名约定
本文翻译自:http://www.freertos.org/FreeRTOS-Coding-Standard-and-Style-Guide.html不是完全的直译,有些地方原文有些啰嗦,被我删减了。编程标准 (Coding Standard)FreeRTOS 源代码遵守 MISRA (Motor Industry Software Reliability Association) 规翻译 2012-08-11 09:20:52 · 9626 阅读 · 0 评论 -
FreeRTOS 源代码结构
本文翻译自 FreeRTOS 官网文章 :http://www.freertos.org/a00017.htmlFreeRTOS 源代码结构基本目录结构下载的FreeRTOS包含每种处理器体系的源代码以及范例程序。把所有体系的源代码打包可以方便分发,但是文件的数量可能会让人感到畏惧。幸好目录结构非常简单,并且FreeRTOS的实时内核只包含在3个源文件中(如果使用co-routines翻译 2012-08-10 09:30:46 · 9025 阅读 · 0 评论 -
FreeRTOS 特性简介
FreeRTOS 由 Richard Barry 开发,是一个开源的、可移植的、小型的嵌入式实时操作系统内核。FreeRTOS 既支持抢占式多任务,也支持协作式多任务。FreeRTOS的主要特性如下:实时性:FreeRTOS “可以”配置成为一个硬(Hard)实时操作系统内核。要注意这里用的是“可以”,FreeRTOS 也可以配置为非实时型内核,甚至于部分任务是实时性的,部分不是。这一点比原创 2012-08-27 10:48:46 · 12512 阅读 · 0 评论 -
配置 FreeRTOS
配置FreeRTOSFreeRTOS 是高度可配置的。所有的可配置项都在FreeRTOSConfig.h 文件中。每一个Demo 程序中都包含了一个配置好的FreeRTOSConfig.h 文件,可以以Demo程序中的FreeRTOSConfig.h 文件作为模板,在其基础上加以修改。下面先给出一个典型的FreeRTOSConfig.h 文件,然后再逐项加以说明。#ifndef F翻译 2012-08-27 14:55:17 · 37911 阅读 · 2 评论 -
FreeRTOS 移植要点(1)
FreeRTOS 的移植主要需要改写如下三个文件。1. portmacro.h2. port.c3. port.asm 如果采用的C编译器允许在C 代码中插入汇编,并且支持用C语言写中断处理函数。则port.asm 文件的内容是可以合并到port.c 中的。下面以将 FreeRTOS 移植到FreeScale 68HCS12 内核的原创 2012-08-27 18:21:52 · 17994 阅读 · 1 评论 -
FreeRTOS 移植要点(2)
port.cport.c 中主要实现了几个函数:pxPortInitialiseStack()xPortStartScheduler()vPortEndScheduler()vPortYield()vPortTickInterrupt() 还定义了个全局变量:uxCriticalNestinguxCriticalNesting定义全局变量uxCritical原创 2012-08-28 13:45:35 · 10952 阅读 · 8 评论 -
移植uCOS-II到Cortex-M3平台
本文的目的是希望读者能够通过本文的内容掌握移植uCOS-II 的规范方法。如果只是需要移植文件,可以直接去Micriμm的官网上下载。移植uCOS-II,主要的移植工作是编写如下三个文件:OS_CPU.HOS_CPU_C.COS_CPU_A.ASM下面就按照这三个文件的顺序来介绍。本文以STM32F107+RealView Compiler 开发环境为例。如果使用的其他的开发环原创 2013-06-13 10:31:29 · 10037 阅读 · 1 评论 -
移植uCOS-II到Cortex-M3平台 (补遗)
去年写过一篇介绍 uCOS-II 在Cortex-M3平台移植的文章:http://blog.csdn.net/liyuanbhu/article/details/9082767 最近闲下来,研究了一下 FreeRTOS 官方的Cortex-M3平台的移植代码,很有收获,发现了几处比 uCOS-II 移植代码写的好的地方。这里简单总结一下,算是给自己做个备忘。对临界区的处理原创 2014-01-07 20:30:01 · 4941 阅读 · 1 评论 -
FreeRTOS 源码注释(vTaskDelay)
void vTaskDelay( portTickType xTicksToDelay ) { portTickType xTimeToWake; signed portBASE_TYPE xAlreadyYielded = pdFALSE; /* A delay time of zero just forces a reschedule. */原创 2012-06-22 21:09:58 · 3197 阅读 · 0 评论 -
FreeRTOS 源码注释(vTaskDelayUntil)
void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, portTickType xTimeIncrement ){ portTickType xTimeToWake; portBASE_TYPE xAlreadyYielded, xShouldDelay = pdFALSE; vTa原创 2012-06-22 21:08:49 · 4817 阅读 · 0 评论 -
FreeRTOS 源码注释(xTaskGenericCreate)
FreeRTOS 是个轻量级的实时操作系统,功能还不错。最近花了些时间研究了一下,代码写的很严谨,值得学习。鉴于国内介绍资料非常少,因此,准备做一个系列笔记,将其主要功能代码做个注释,主要是方便自己查找。也希望能给对这个操作系统感兴趣的国内同行一点参考。xTaskGenericCreate 用来建立一个任务,实际上 xTaskCreate 也是对 xTaskGenericCreate 的包装。原创 2012-06-22 21:04:41 · 6513 阅读 · 0 评论 -
FreeRTOS 源码注释(vTaskDelete)
void vTaskDelete( xTaskHandle pxTaskToDelete ){ tskTCB *pxTCB; taskENTER_CRITICAL(); { if( pxTaskToDelete == pxCurrentTCB ) { pxTaskToDelete = NULL;原创 2012-06-22 21:07:19 · 3111 阅读 · 0 评论 -
FreeRTOS 源码注释(prvAllocateTCBAndStack)
/* 为 TCB 和 堆栈分配内存空间,被 xTaskGenericCreate 调用*/static tskTCB *prvAllocateTCBAndStack( unsigned short usStackDepth, portSTACK_TYPE *puxStackBuffer ){tskTCB *pxNewTCB;/* 首先分配 TCB 结构的内存空间 */p原创 2012-06-22 21:12:05 · 2515 阅读 · 0 评论 -
μC/OS-II 移植笔记 1(FreeScale 68HCS12 核单片机)
本文最初写于 2012-04-19 于 sohu 博客,这次博客搬家一起搬到这里来。版权所有,转载请注明出处。 μC/OS-II 移植笔记 1(移植到FreeScale 68HCS12 核单片机,Small Memory Model)最近闲暇下来,花了些时间研究了如何将 μC/OS-II 移植到 FreeScale 68HCS12 内核的单片机。其实这个工作前年做过一次,当时原创 2012-05-20 21:19:33 · 3170 阅读 · 0 评论 -
μC/OS-II 移植笔记 2(FreeScale 68HCS12 核单片机)
本文最初写于 2012-04-20 于 sohu 博客,这次博客搬家一起搬到这里来。版权所有,转载请注明出处。 2.2 OS_CPU_A.S首先是函数和全局变量的声明。;***************************************************************************;原创 2012-05-20 21:23:14 · 2913 阅读 · 0 评论 -
FreeRTOS 源码注释(prvInitialiseTaskLists)
/* 初始化所有内核链表. 在第一个用户任务建立时,被xTaskGenericCreate 调用 */static void prvInitialiseTaskLists( void ) { unsigned portBASE_TYPE uxPriority; for( uxPriority = ( unsigned portBASE_TYPE ) 0U; uxPrio原创 2012-06-22 21:15:34 · 2248 阅读 · 0 评论 -
FreeRTOS 内核中的链表
FreeRTOS 内核中采用双向循环链表来进行任务调度,对任务总数没有限制,同一优先级的任务数也没有限制。相对于uC/OS-II 来说是一个大的优点。不过,有利必有弊。采用双向链表后代码相对来说要复杂一些。FreeRTOS 中的链表和链表元素的定义如下:typedef struct xLIST{ volatile unsigned portBASE_TYPE uxNumb原创 2012-05-13 17:11:18 · 5849 阅读 · 9 评论 -
FreeRTOS 源码注释(prvIdleTask)
static portTASK_FUNCTION( prvIdleTask, pvParameters ) { for( ;; ) { /* 查看是否有需要删除的任务,每调用一次只删除一个任务 */ prvCheckTasksWaitingTermination(); #if ( configUSE_PRE原创 2012-06-22 21:18:08 · 5679 阅读 · 0 评论 -
FreeRTOS 源码注释(prvCheckTasksWaitingTermination)
/*FreeRTOS 中删除任务是分两步的,第一步 vTaskDelete 将其从各个工作链表中断开,放到xTasksWaitingTermination 链表中,第二步 Idle Task 调用这个函数真正的删除任务。代码很简单,不需要注释了。 */static void prvCheckTasksWaitingTermination( void ) { #if ( IN原创 2012-06-22 21:17:18 · 8953 阅读 · 0 评论 -
FreeRTOS 源码注释(prvInitialiseTCBVariables)
#define listSET_LIST_ITEM_OWNER( pxListItem, pxOwner )( pxListItem )->pvOwner = ( void * ) ( pxOwner )#define listSET_LIST_ITEM_VALUE( pxListItem, xValue )( pxListItem )->xItemValue = ( xValue )原创 2012-06-22 21:14:51 · 2573 阅读 · 0 评论 -
STM32F10x 学习笔记7(USART实现串口通讯 3)
在上一篇学习笔记《STM32F10x 学习笔记6(USART实现串口通讯 2)》给出了个利用环形缓冲区的串口驱动。最近研究了uCOS-II在STM32上的移植。下面再给个利用uCOS-II的信号量的串口驱动。整个驱动的基本框架和上一篇没什么区别,所以不多介绍。直接贴代码:整个驱动包含四个文件:uart.h uart.c COMMRTOS.H COMMRTOS.c原创 2013-06-15 09:24:55 · 13279 阅读 · 2 评论