为什么选择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. 009-Spring Boot全局配置跨域请求支持

    1.Spring Boot 2.0以前全局配置跨域主要是继承WebMvcConfigurerAdapter @Configuration public class CorsConfig extends ...

  2. 数据分析入门——pandas之Series

    一.介绍 Pandas是一个开源的,BSD许可的库(基于numpy),为Python编程语言提供高性能,易于使用的数据结构和数据分析工具. 官方中文文档:https://www.pypandas.cn ...

  3. LODOP带空格和不带空格的字体对齐

    有时候需要用到字体上下对齐,有些需要的文字较多,较少的文字需要加部分空格才能向上面的文字对齐.本文实际测试了一下字体对齐需要的空格.代码是在editplus里写的,该编辑软件里的字体首选项设置的是Co ...

  4. java-socket-demo的实现

    目录 前言 IO通讯模型 IO通讯模型简介 1. 阻塞式同步IO 2. 非阻塞式同步IO 3. 多路复用IO(阻塞+非阻塞) 4. 异步IO Java对IO模型的支持 注意点及实现方案 TCP粘包/拆 ...

  5. python 调 java(胶水就是胶水)

    java门外汉用python调java, 一.安装java环境(linux) 1.首先要去下载好JDK,Java SE 8的官方网址是http://www.oracle.com/technetwork ...

  6. solr关于日期范围查询

    问题:从solr上查询创建日期在2019-06-25到2019-06-26之间的数据 createDate:[2019-06-25 TO 2019-06-26]

  7. transform-transition-animation(2)

    transform transform : none | <transform-function> [ <transform-function> ]* 也就是: transfo ...

  8. 又是a+b

    题目描述: 给定两个整数 a, b (a, b 均不超过 int 类型的表示范围),求出 a + b 的和.输入描述: 多组输入,每组输入为一行,里面有 2 个数 a, b.输出描述: 对于每一组输入 ...

  9. access函数的使用

    #include<unistd.h> int access(const char* pathname, int mode); 参数介绍: pathname 是文件的路径名+文件名 mode ...

  10. 网络地址转换(NAT)

    NAT是解决ipv4地址短缺的方案之一 NAT是将位于子网中的主机与外网连通,子网中所有的主机都可以通过路由器的网络地址转换访问外网.对于外网来说该路由器相当于一台完整的主机,子网内所有主机对外网的访 ...