为什么选择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. osgViewer

    /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield * * This library is open source ...

  2. Fastjson 序列化与反序列化

    JSON这个类是fastjson API的入口,主要的功能都通过这个类提供. 序列化API // 将Java对象序列化为JSON字符串,支持各种各种Java基本类型和JavaBean public s ...

  3. 【物联网】esp8266

    esp8266环境配置 https://www.jianshu.com/p/cb0274d612b5 https://www.cnblogs.com/zleiblogs/p/7126106.html ...

  4. Vue学习笔记九:列表案例

    目录 前言 Bootstrap插件下载 Bootstrap表格和面板 增加数据,v-model和v-on 删除数据,事件修饰符和找索引的两种方法 查询数据,foreach和filter 全部的HTML ...

  5. ROW_NUMBER()函数使用详解

    原文地址:https://blog.csdn.net/qq_30908543/article/details/74108348 注:mysql貌似不适用,本人测试未成功,mysql实现方式可参考:ht ...

  6. MySQL 过滤复制+复制映射 配置方法

    场景 node1 和 node2 为两台不同业务的MySQL服务器.业务方有个需求,需要将node1上的 employees库的departments .dept_manager 这2张表同步到 no ...

  7. 对偶传播神经网络(CPN)

    1987年,美国学者Robert Hecht-Nielsen提出了对偶传播神经网络模型 (Counter Propagation Network,CPN),CPN最早是用来实现样本选择匹配系统的.CP ...

  8. centOS安装配置NFS

    环境 nfs 192.168.56.101 client 192.168.56.102 一.yum 安装 yum -y install nfs-utils rpcbind 192.168.56.101 ...

  9. Ansible安装配置及命令使用详解

    Ansible和saltstack目前市面上一些其它的项目管理工具有很大的不同,它的设计初衷就是为了更方便.快捷的进行配置管理.它易于安装和使用.语法也非常简单易学.你可以用Ansible将平常复杂的 ...

  10. 使用redis调用lua脚本的方式对接口进行限流

    java端实现: //初始化一个redis可执行的lua DefaultRedisScript<List> defaultRedisScript = new DefaultRedisScr ...