为什么选择FreeRTOS

UCOS资料多,尤其是中文资料。FreeRTOS资料少,而且大多数是英文的。原因如下:

1.FreeRTOS免费!UCOS收费。这是主要原因

2.很多半导体厂商,采用FreeRTOS作为其操作系统

3.FreeRTOS文件数量少

下载地址

http://www.freertos.org/

目录结构

# ls -l
total 28
drwx------ 5 pi pi 4096 Sep 16 04:17 FreeRTOS
drwx------ 4 pi pi 4096 Sep 16 04:18 FreeRTOS-Plus
-rwx------ 1 pi pi 141 Jan 16 2015 New - Direct to Task Notifications.url
-rwx------ 1 pi pi 155 Dec 21 2014 New - FreeRTOS+TCP.url
-rwx------ 1 pi pi 144 Sep 17 2013 Quick_Start_Guide.url
-rwx------ 1 pi pi 1468 Sep 17 2013 readme.txt
-rwx------ 1 pi pi 129 Feb 19 2016 Upgrading-to-FreeRTOS-9.url

FreeRTOS-Plus:包含FreeRTOS+组件和演示例程

FreeRTOS:包含FreeRTOS实时内核源文件和演示例程

# ls -l FreeRTOS
total 28
drwx------ 166 pi pi 12288 Sep 16 04:17 Demo
drwx------ 2 pi pi 4096 Sep 16 04:17 License
-rwx------ 1 pi pi 124 Oct 30 2014 links_to_doc_pages_for_the_demo_projects.url
-rwx------ 1 pi pi 912 Sep 17 2013 readme.txt
drwx------ 4 pi pi 4096 Sep 16 04:17 Source

Demo:演示例程

License:许可信息

Source:实时内核源文件

# ls -l FreeRTOS/Source/
total 352
-rwx------ 1 pi pi 15771 May 20 2016 croutine.c
-rwx------ 1 pi pi 26251 May 20 2016 event_groups.c
drwx------ 2 pi pi 4096 Sep 16 04:17 include
-rwx------ 1 pi pi 10993 May 20 2016 list.c
drwx------ 22 pi pi 4096 Sep 16 04:17 portable
-rwx------ 1 pi pi 83729 May 20 2016 queue.c
-rwx------ 1 pi pi 822 Sep 17 2013 readme.txt
-rwx------ 1 pi pi 157816 May 20 2016 tasks.c
-rwx------ 1 pi pi 41115 May 20 2016 timers.c

tasks.c、queue.c、list.c:核心文件

timers.c、event_groups.c、croutine.c:可选文件

include:内核代码头文件

portable:处理器特定代码

# ls FreeRTOS/Source/portable/ -l
total 84
drwx------ 3 pi pi 4096 Sep 16 04:17 BCC
drwx------ 5 pi pi 4096 Sep 16 04:17 CCS
drwx------ 5 pi pi 4096 Sep 16 04:17 CodeWarrior
drwx------ 2 pi pi 4096 Sep 16 04:17 Common
drwx------ 37 pi pi 4096 Sep 16 04:17 GCC
drwx------ 25 pi pi 4096 Sep 16 04:17 IAR
drwx------ 2 pi pi 4096 Sep 16 04:17 Keil
drwx------ 2 pi pi 4096 Sep 16 04:17 MemMang
drwx------ 3 pi pi 4096 Sep 16 04:17 MikroC
drwx------ 7 pi pi 4096 Sep 16 04:17 MPLAB
drwx------ 2 pi pi 4096 Sep 16 04:17 MSVC-MingW
drwx------ 3 pi pi 4096 Sep 16 04:17 oWatcom
drwx------ 3 pi pi 4096 Sep 16 04:17 Paradigm
-rwx------ 1 pi pi 866 Feb 11 2016 readme.txt
drwx------ 7 pi pi 4096 Sep 16 04:17 Renesas
drwx------ 4 pi pi 4096 Sep 16 04:17 Rowley
drwx------ 9 pi pi 4096 Sep 16 04:17 RVDS
drwx------ 3 pi pi 4096 Sep 16 04:17 SDCC
drwx------ 4 pi pi 4096 Sep 16 04:17 Softune
drwx------ 3 pi pi 4096 Sep 16 04:17 Tasking
drwx------ 3 pi pi 4096 Sep 16 04:17 WizC

Keil、RVDS:使用MDK环境编译所需要的文件

MemMang:内存管理,堆栈实现

# ls -l FreeRTOS/Demo/Common/
total 24
drwx------ 5 pi pi 4096 Sep 16 04:04 drivers
drwx------ 9 pi pi 4096 Sep 16 04:05 ethernet
drwx------ 2 pi pi 4096 Sep 16 04:06 Full
drwx------ 2 pi pi 4096 Sep 16 04:06 include
drwx------ 2 pi pi 4096 Sep 16 04:06 Minimal
-rwx------ 1 pi pi 737 Mar 29 2016 ReadMe.txt

Common:演示例程

测试Demo

替换原有main函数,测试LED闪烁

int main( void )
{
volatile unsigned long ul; /* volatile so it is not optimized away. */ prvSetupHardware(); //时钟设置
vParTestInitialise(); //gpio初始化 /* Toggle the LEDs repeatedly. */
for( ;; )
{
/* We don't want to use the RTOS features yet, so just use a very
crude delay mechanism instead. */
for( ul = 0; ul < 0xfffff; ul++ )
{
} /* Toggle the first four LEDs (on the assumption there are at least
4 fitted. */
vParTestToggleLED( 0 );
vParTestToggleLED( 1 );
vParTestToggleLED( 2 );
vParTestToggleLED( 3 );
} return 0;
}

RTOS调度器

LED不同频率的闪烁

int main( void )
{
/* Setup the microcontroller hardware for the demo. */
prvSetupHardware(); vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); /* All other functions that create tasks are commented out. vCreatePollQTasks();
vCreateComTestTasks();
Etc. xTaskCreate( vCheckTask, "check", STACK_SIZE, NULL, TASK_PRIORITY, NULL );
*/ /* Start the RTOS scheduler. */
vTaskStartScheduler(); /* Should never get here! */
return 0;
}

参考:http://www.freertos.org/porting-a-freertos-demo-to-different-hardware.html

FreeRTOS 基础简介的更多相关文章

  1. 现代3D图形编程学习-基础简介(2) (译)

    本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...

  2. 现代3D图形编程学习-基础简介(1) (译)

    本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...

  3. 1.CSS基础简介

    一.基础简介 1.简介 CSS(Cascading Style Sheet)可译为“层叠样式表”或“级联样式表”,它定义如何显示 HTML 元素,用于控制Web页面的外观.通过使用CSS实现页面的内容 ...

  4. FreeRTOS基础篇教程目录汇总

    以下教程(大部分章节)(尤其理论介绍部分)转载自安富莱电子,官网链接: http://forum.armfly.com/forum.php 然后根据安富莱的教程自己做了分析和测试,希望大家共同进步. ...

  5. 1.bootstrap基础简介

    一·基础简介 1.Bootstrap,来自 Twitter,是一个用于快速开发 Web 应用程序和网站的前端框架,是目前最受欢迎的前端框架. Bootstrap 是基于 HTML.CSS.JavaSc ...

  6. Android MediaPlayer 基础简介

    本文链接: Android MediaPlayer 基础简介 简单介绍MediaPlayer的基本概念,状态,常用的方法与监听器. 什么是MediaPlayer MediaPlayer类可以用来播放音 ...

  7. 【Python】函数基础简介

    一.函数 1. 简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2. 组成 函数代码块以 def 关键词开头,后接函数名和圆括号( ...

  8. OC基础--简介

    OC简介: 1986年,BradCox(布莱德·考克斯)在第一个纯面向对象语言Smalltalk基础上写成了Objective-C语言. 1985年,被赶出苹果公司的Steve Jobs成立了NeXT ...

  9. FreeRTOS基础以及UIP之协程--C语言剑走偏锋

    在FreeRTOS中和UIP中,都使用到了一种C语言实现的多任务计数,专业的定义叫做协程(coroutine),顾名思义,这是一种协作的例程, 跟具有操作系统概念的线程不一样,协程是在用户空间利用程序 ...

随机推荐

  1. SUPERSOCKET.CLIENTENGINE 简单使用

    首先 引用 SuperSocket.ClientEngine.Core.dll和 SuperSocket.ClientEngine.Common.dll 然后 就可以使用ClientEngine了. ...

  2. linux硬盘分区与格式化

    linux硬盘分区与格式化: 1. 设备管理 在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘.光驱等 IDE 或 SCSI 设备也不例外. Linux 把各种 IDE 设备分配了一 ...

  3. 006-guava 集合-集合工具类-集合扩展工具类

    一.概述 需要实现自己的集合扩展.也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集 二.使用 2.1.ForwardingList装 ...

  4. 先查询再插入,改为存储过程,java部分入参出参、mybatisxml【我】

    先查询再插入,改为存储过程 create or replace procedure PRO_REVENUE_SI(l_p_cd in Varchar2, l_c_cd in Varchar2, l_p ...

  5. ROS学习笔记(一)

    运行ROS例程(turtlesim)1)安装turtlesim包sudo apt-get install ros-kinetic-turtlesim2)运行管理器节点roscore3)运行turtle ...

  6. 零基础学Python-第一章 :Python介绍和安装-03.Python的安装

    官方版本的python下载以及安装方法,以及pycharm的安装和打开. 社区版就可以完全支持我们的需求了. 点击左侧的图片到右边. 在命令行输入python3 exit() 退出命令行的编辑器. p ...

  7. 【DataBase】H2 DateBase与项目集成

    本例介绍H2与web项目的集成 项目启动H2数据库 1.新建Maven Web项目,参考:[Maven]Eclipse 使用Maven创建Java Web项目 2.引入h2的jar包依赖 <de ...

  8. HLSFFmpegBuilder适用于hls协议的构造器 没具体测试

    import com.google.common.collect.ImmutableList; import net.bramp.ffmpeg.builder.FFmpegBuilder; impor ...

  9. Python - Django - ORM 多对多表结构的三种方式

    多对多的三种方式: ORM 自动创建第三张表 自己创建第三张表, 利用外键分别关联作者和书,关联查询比较麻烦,因为没办法使用 ORM 提供的便利方法 自己创建第三张表,使用 ORM 的 ManyToM ...

  10. SpringMVC:学习笔记(12)——ThreadLocal实现会话共享

    SpringMVC:学习笔记(12)——ThreadLocal实现会话共享 ThreadLocal ThreadLocal,被称为线程局部变量.在并发编程的情况下,使用ThreadLocal创建的变量 ...