FreeRTOS 基础简介
为什么选择FreeRTOS
UCOS资料多,尤其是中文资料。FreeRTOS资料少,而且大多数是英文的。原因如下:
1.FreeRTOS免费!UCOS收费。这是主要原因
2.很多半导体厂商,采用FreeRTOS作为其操作系统
3.FreeRTOS文件数量少
目录结构
# 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 基础简介的更多相关文章
- 现代3D图形编程学习-基础简介(2) (译)
本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...
- 现代3D图形编程学习-基础简介(1) (译)
本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...
- 1.CSS基础简介
一.基础简介 1.简介 CSS(Cascading Style Sheet)可译为“层叠样式表”或“级联样式表”,它定义如何显示 HTML 元素,用于控制Web页面的外观.通过使用CSS实现页面的内容 ...
- FreeRTOS基础篇教程目录汇总
以下教程(大部分章节)(尤其理论介绍部分)转载自安富莱电子,官网链接: http://forum.armfly.com/forum.php 然后根据安富莱的教程自己做了分析和测试,希望大家共同进步. ...
- 1.bootstrap基础简介
一·基础简介 1.Bootstrap,来自 Twitter,是一个用于快速开发 Web 应用程序和网站的前端框架,是目前最受欢迎的前端框架. Bootstrap 是基于 HTML.CSS.JavaSc ...
- Android MediaPlayer 基础简介
本文链接: Android MediaPlayer 基础简介 简单介绍MediaPlayer的基本概念,状态,常用的方法与监听器. 什么是MediaPlayer MediaPlayer类可以用来播放音 ...
- 【Python】函数基础简介
一.函数 1. 简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2. 组成 函数代码块以 def 关键词开头,后接函数名和圆括号( ...
- OC基础--简介
OC简介: 1986年,BradCox(布莱德·考克斯)在第一个纯面向对象语言Smalltalk基础上写成了Objective-C语言. 1985年,被赶出苹果公司的Steve Jobs成立了NeXT ...
- FreeRTOS基础以及UIP之协程--C语言剑走偏锋
在FreeRTOS中和UIP中,都使用到了一种C语言实现的多任务计数,专业的定义叫做协程(coroutine),顾名思义,这是一种协作的例程, 跟具有操作系统概念的线程不一样,协程是在用户空间利用程序 ...
随机推荐
- 基于keras的triplet_loss
https://blog.csdn.net/yjy728/article/details/79570554 https://blog.csdn.net/yjy728/article/details/7 ...
- Locust性能测试-分布式执行的方法(亲测ok)
来源:https://www.cnblogs.com/yoyoketang/p/11681370.html 前言 使用Locust进行性能测试时,当一台单机不足以模拟所需的用户数量的时候,可以在多台机 ...
- Laya的动画制作,整图动画,序列图动画,时间轴动画,龙骨动画
参考: Laya动画基础 Egret帧动画工具类 版本:2.1.1.1 序列图动画 白鹭的序列图动画,使用TexureMerger合图,然后使用MovieClip类播放. Laya的话,使用图集打包工 ...
- 3. Longest Substring Without Repeating Characters 无重复字符的最长子串
1. 原始题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &quo ...
- 利用SynchronizationContext.Current在线程间同步上下文(转)
https://blog.csdn.net/iloli/article/details/16859605 简而言之就是允许一个线程和另外一个线程进行通讯,SynchronizationContext在 ...
- 单独配置的nginx mysql 重启
/usr/local/mysql/bin/mysqld_safe /usr/local/nginx/sbin/nginx -s stop /usr/local/nginx/sbin/nginx
- 【Leetcode_easy】925. Long Pressed Name
problem 925. Long Pressed Name solution1: class Solution { public: bool isLongPressedName(string nam ...
- Netty学习笔记(四)——实现dubbo的rpc
1.rpc基本介绍 RPC ( Remote Procedure Call) -远程过程调用,是一个计算机通信协议.该协议允许运行于一台计算机的程序调用另一台计算机的子程序,两个或多个应用程序分布不同 ...
- va_start(),va_end()函数应用
原理解释: VA_LIST 是在C语言中解决变参问题的一组宏,在<stdarg.h>头文件下. VA_LIST的用法: (1)首先在函数里定义一具VA_LIST型的变 ...
- Chipseq数据库的建立
这里以小鼠为例子下载相应的注释文件,基因组版本为mm10 下载refGene.txt.gz 网址:http://hgdownload.cse.ucsc.edu/goldenPath/mm10/data ...