狠狠撸

狠狠撸Share a Scribd company logo
FreeRTOS
What is FreeRTOS
? 多任务的嵌入式RTOS。
? 开源免费,可用于商业产物,无任何IP风险。
? 始于2003年。12年历史。
? 由Real Time Engineers ltd. 开发和维护。
? 占有率仅次于Android和Ubuntu。深度嵌入
式领域市场占有率最高的RTOS。
? 简单。核心只有3个c文件。
设计目标
From official documents :
? 易用
? 低内存占用(Small footprint)
? 健壮
核心功能
core kernel仅仅提供:
? 实时任务调度
? 任务间通信
? Timing
? 同步原语
其它功能,如网络协议栈等,均作为add-on
组件。
Feature: task和co-routine
? Scheduler决定哪个task执行。每个task有独立的stack。当
task被scheduler换出执行时,执行上下文被保存在stack以
便下次换入执行。
? Co-routine适用于非常小的设备。与task类似,但同一个
application中的所有co-routine共用一个stack。比起task来
极大的节省ram。代价是在co-routine组织和api调用方面受
到一些严格的限制。
? FreeRTOS不会删掉co-routine的实现,但也不会再继续改进
和发展co-routine。因为近日已经很少使用co-routine。
? 某些地方co-routine译作”协程”
进程:4种状态和转换
Feature : Tickless Idle Mode
? 一个常见的降低功耗的做法是使用Idle task。
? Idle task运行在最低执行权限,调用用户定义的hook函数,
可以使processor进入低功耗模式。
? FreeRTOS提供了Tickless Idle Mode停止tick中断,防止
processor不停的退出/进入低功耗模式。
? 退出Tickless Idle Mode时,仍能调整tick count value为正确
的值。
Feature:Queue
? Queue是任务间通信的主要方式。线程安全的FIFO buffer。
? 数据是以copy的方式进入queue,而不是指针。
? Kernel负责为queue中存储的data分配内存。
? 提供block on queue功能。可以指定最大block time。当读
取一个empty的queue,或向一个full queue写入时,task进
入阻塞状态。
? Queue set功能,类似于select(),block on multiple objects。
Feature :Binary Semaphores,mutex
? 二元信号量用于互斥和同步。
? 允许设定block time。
? Binary Semaphores + 优先级实现 = mutex
如果 task A试图获得一个mutex因而阻塞,此mutex当前的
持有者task B的优先级低于A,那么B的优先级被暂时提升到
与A相同。 此举是为了保证高优先级task被block的时间尽可
能短。
Feature: Software Timer
函数在指定时间之后运行。 FreeRTOS的timer实现:
? 可选的,不属于core kernel。
? 由一个timer service(或daemon) task实现。
? 许多api的实现是通过标准的queue向timer task发送命令。
? 不消耗processor时间,除非timer已到期。
? 不在tick interupt中增加任何负载。
? 支持one-shot和auto-reload两种timer。
Feature:debug支持
? Trace Hook Macros
? Run Time Statistics (Abs time and % time for
each task)
Feature : simulator
? Windows
? Posix/linux
Feature : 内存管理
? 多种内存管理策略
? 定制heap实现,同时使用2种堆实现
? MPU支持。 Cortex-M3 FreeRTOS-MPU port.
? 检测stack overflow
footprint
RAM:
? Scheduler :236 bytes.
? Every Queue: 76bytes + queue data
? Every Task : 64 bytes + stack size
ROM:
? Kernel : 5 – 10 K. (minimal)
Feature : hook
? Idle Hook
? Tick Hook
? Malloc Failed Hook
? Stack Overflow Hook

More Related Content

What's hot (19)

S4A
S4AS4A
S4A
艾鍗科技
?
尝颈苍耻虫基础
尝颈苍耻虫基础尝颈苍耻虫基础
尝颈苍耻虫基础
zhuqling
?
Syslog Ng
Syslog NgSyslog Ng
Syslog Ng
flytod
?
叠尝贰室内定位技术实现龙珠雷达装置
叠尝贰室内定位技术实现龙珠雷达装置叠尝贰室内定位技术实现龙珠雷达装置
叠尝贰室内定位技术实现龙珠雷达装置
艾鍗科技
?
GPS + Google fusion table 雲端應用
GPS + Google fusion table 雲端應用GPS + Google fusion table 雲端應用
GPS + Google fusion table 雲端應用
艾鍗科技
?
艾鍗學院-單晶片韌體開發- LCM模組實驗
艾鍗學院-單晶片韌體開發- LCM模組實驗艾鍗學院-單晶片韌體開發- LCM模組實驗
艾鍗學院-單晶片韌體開發- LCM模組實驗
艾鍗科技
?
Linux期末 效能調教(kernel trnning)
Linux期末 效能調教(kernel trnning)Linux期末 效能調教(kernel trnning)
Linux期末 效能調教(kernel trnning)
米米 林
?
ディープラーニングによる通信トラヒックの识别
ディープラーニングによる通信トラヒックの识别 ディープラーニングによる通信トラヒックの识别
ディープラーニングによる通信トラヒックの识别
Kazutoshi Nakano
?
第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络
F.l. Yu
?
附錄--Anaconda installation
附錄--Anaconda installation附錄--Anaconda installation
附錄--Anaconda installation
艾鍗科技
?
用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人
艾鍗科技
?
簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能
John L Chen
?
141118 Raspberry Pi 電鈴工作坊@松山文創園區
141118 Raspberry Pi 電鈴工作坊@松山文創園區141118 Raspberry Pi 電鈴工作坊@松山文創園區
141118 Raspberry Pi 電鈴工作坊@松山文創園區
CAVEDU Education
?
U boot 程式碼打掃計畫
U boot 程式碼打掃計畫U boot 程式碼打掃計畫
U boot 程式碼打掃計畫
Macpaul Lin
?
Last
LastLast
Last
Hazel Liang
?
尝颈苍耻虫必备知识与鲍苍颈虫基础文化
尝颈苍耻虫必备知识与鲍苍颈虫基础文化尝颈苍耻虫必备知识与鲍苍颈虫基础文化
尝颈苍耻虫必备知识与鲍苍颈虫基础文化
Dahui Feng
?
揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing
Yi-Jun Zheng
?
尝颈苍耻虫基础
尝颈苍耻虫基础尝颈苍耻虫基础
尝颈苍耻虫基础
zhuqling
?
Syslog Ng
Syslog NgSyslog Ng
Syslog Ng
flytod
?
叠尝贰室内定位技术实现龙珠雷达装置
叠尝贰室内定位技术实现龙珠雷达装置叠尝贰室内定位技术实现龙珠雷达装置
叠尝贰室内定位技术实现龙珠雷达装置
艾鍗科技
?
GPS + Google fusion table 雲端應用
GPS + Google fusion table 雲端應用GPS + Google fusion table 雲端應用
GPS + Google fusion table 雲端應用
艾鍗科技
?
艾鍗學院-單晶片韌體開發- LCM模組實驗
艾鍗學院-單晶片韌體開發- LCM模組實驗艾鍗學院-單晶片韌體開發- LCM模組實驗
艾鍗學院-單晶片韌體開發- LCM模組實驗
艾鍗科技
?
Linux期末 效能調教(kernel trnning)
Linux期末 效能調教(kernel trnning)Linux期末 效能調教(kernel trnning)
Linux期末 效能調教(kernel trnning)
米米 林
?
ディープラーニングによる通信トラヒックの识别
ディープラーニングによる通信トラヒックの识别 ディープラーニングによる通信トラヒックの识别
ディープラーニングによる通信トラヒックの识别
Kazutoshi Nakano
?
第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络
F.l. Yu
?
附錄--Anaconda installation
附錄--Anaconda installation附錄--Anaconda installation
附錄--Anaconda installation
艾鍗科技
?
用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人
艾鍗科技
?
簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能
John L Chen
?
141118 Raspberry Pi 電鈴工作坊@松山文創園區
141118 Raspberry Pi 電鈴工作坊@松山文創園區141118 Raspberry Pi 電鈴工作坊@松山文創園區
141118 Raspberry Pi 電鈴工作坊@松山文創園區
CAVEDU Education
?
U boot 程式碼打掃計畫
U boot 程式碼打掃計畫U boot 程式碼打掃計畫
U boot 程式碼打掃計畫
Macpaul Lin
?
尝颈苍耻虫必备知识与鲍苍颈虫基础文化
尝颈苍耻虫必备知识与鲍苍颈虫基础文化尝颈苍耻虫必备知识与鲍苍颈虫基础文化
尝颈苍耻虫必备知识与鲍苍颈虫基础文化
Dahui Feng
?
揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing
Yi-Jun Zheng
?

Viewers also liked (20)

水土保持局环境教育1030904
水土保持局环境教育1030904水土保持局环境教育1030904
水土保持局环境教育1030904
Yung-Chuan Ko
?
移植FreeRTOS 之嵌入式軟體研究與開發
移植FreeRTOS 之嵌入式軟體研究與開發移植FreeRTOS 之嵌入式軟體研究與開發
移植FreeRTOS 之嵌入式軟體研究與開發
艾鍗科技
?
Python 起步走
Python 起步走Python 起步走
Python 起步走
Justin Lin
?
Use Analytics to Prevent Costly Product Returns
Use Analytics to Prevent Costly Product ReturnsUse Analytics to Prevent Costly Product Returns
Use Analytics to Prevent Costly Product Returns
Peter Sobotta
?
FreeRTOS API
FreeRTOS APIFreeRTOS API
FreeRTOS API
Vincent Claes
?
W pwith cinhindi
W pwith cinhindiW pwith cinhindi
W pwith cinhindi
Chand Rook
?
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminar
Cho Daniel
?
A low cost, real-time algorithm for embedded devices based on freertos kernel
A low cost, real-time algorithm for embedded devices based on freertos kernelA low cost, real-time algorithm for embedded devices based on freertos kernel
A low cost, real-time algorithm for embedded devices based on freertos kernel
eSAT Journals
?
FreeRTOS
FreeRTOSFreeRTOS
FreeRTOS
Ankita Tiwari
?
K-POP 选秀服务平台
K-POP 选秀服务平台K-POP 选秀服务平台
K-POP 选秀服务平台
Seung-taek Yi
?
CS 354 Viewing Stuff
CS 354 Viewing StuffCS 354 Viewing Stuff
CS 354 Viewing Stuff
Mark Kilgard
?
CS 354 Project 1 Discussion
CS 354 Project 1 DiscussionCS 354 Project 1 Discussion
CS 354 Project 1 Discussion
Mark Kilgard
?
Altium designer設計流程教學
Altium designer設計流程教學Altium designer設計流程教學
Altium designer設計流程教學
崇義 廖
?
Processing 01
Processing 01Processing 01
Processing 01
信嘉 陳
?
Free FreeRTOS Course-Task Management
Free FreeRTOS Course-Task ManagementFree FreeRTOS Course-Task Management
Free FreeRTOS Course-Task Management
Amr Ali (ISTQB CTAL Full, CSM, ITIL Foundation)
?
OpenGL for 2015
OpenGL for 2015OpenGL for 2015
OpenGL for 2015
Mark Kilgard
?
用Raspberry Pi 學Linux I2C Driver
用Raspberry Pi 學Linux I2C Driver用Raspberry Pi 學Linux I2C Driver
用Raspberry Pi 學Linux I2C Driver
艾鍗科技
?
2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明
National Cheng Kung University
?
Factory Pattern in Luster
Factory Pattern in LusterFactory Pattern in Luster
Factory Pattern in Luster
Jason Chung
?
水土保持局环境教育1030904
水土保持局环境教育1030904水土保持局环境教育1030904
水土保持局环境教育1030904
Yung-Chuan Ko
?
移植FreeRTOS 之嵌入式軟體研究與開發
移植FreeRTOS 之嵌入式軟體研究與開發移植FreeRTOS 之嵌入式軟體研究與開發
移植FreeRTOS 之嵌入式軟體研究與開發
艾鍗科技
?
Use Analytics to Prevent Costly Product Returns
Use Analytics to Prevent Costly Product ReturnsUse Analytics to Prevent Costly Product Returns
Use Analytics to Prevent Costly Product Returns
Peter Sobotta
?
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminar
Cho Daniel
?
A low cost, real-time algorithm for embedded devices based on freertos kernel
A low cost, real-time algorithm for embedded devices based on freertos kernelA low cost, real-time algorithm for embedded devices based on freertos kernel
A low cost, real-time algorithm for embedded devices based on freertos kernel
eSAT Journals
?
K-POP 选秀服务平台
K-POP 选秀服务平台K-POP 选秀服务平台
K-POP 选秀服务平台
Seung-taek Yi
?
CS 354 Project 1 Discussion
CS 354 Project 1 DiscussionCS 354 Project 1 Discussion
CS 354 Project 1 Discussion
Mark Kilgard
?
Altium designer設計流程教學
Altium designer設計流程教學Altium designer設計流程教學
Altium designer設計流程教學
崇義 廖
?
用Raspberry Pi 學Linux I2C Driver
用Raspberry Pi 學Linux I2C Driver用Raspberry Pi 學Linux I2C Driver
用Raspberry Pi 學Linux I2C Driver
艾鍗科技
?
Factory Pattern in Luster
Factory Pattern in LusterFactory Pattern in Luster
Factory Pattern in Luster
Jason Chung
?

Similar to Free rtos介绍 (20)

贵濒补蝉丑存储设备在淘宝的应用实践
贵濒补蝉丑存储设备在淘宝的应用实践贵濒补蝉丑存储设备在淘宝的应用实践
贵濒补蝉丑存储设备在淘宝的应用实践
Feng Yu
?
贰补蝉测骋补尘别分布式网络游戏服务器解决方案
贰补蝉测骋补尘别分布式网络游戏服务器解决方案贰补蝉测骋补尘别分布式网络游戏服务器解决方案
贰补蝉测骋补尘别分布式网络游戏服务器解决方案
qiaojie
?
了解应用服务器
了解应用服务器了解应用服务器
了解应用服务器
Feng Yu
?
狈辞诲别箩蝉介绍
狈辞诲别箩蝉介绍狈辞诲别箩蝉介绍
狈辞诲别箩蝉介绍
myzykj
?
Develop Your Own Operating System
Develop Your Own Operating SystemDevelop Your Own Operating System
Develop Your Own Operating System
National Cheng Kung University
?
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Andrew Wu
?
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
Will Huang
?
尝颈苍耻虫服务器服务配置说明
尝颈苍耻虫服务器服务配置说明尝颈苍耻虫服务器服务配置说明
尝颈苍耻虫服务器服务配置说明
Da Zhao
?
开源软件营销策略
开源软件营销策略开源软件营销策略
开源软件营销策略
linhaicaoyuan
?
Some tips
Some tipsSome tips
Some tips
Wei-Bo Chen
?
20121111 linux intro
20121111 linux intro20121111 linux intro
20121111 linux intro
Chang Mt
?
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
Yiwei Ma
?
基于罢辞谤苍补诲辞后端系统架构暨最佳实践
基于罢辞谤苍补诲辞后端系统架构暨最佳实践基于罢辞谤苍补诲辞后端系统架构暨最佳实践
基于罢辞谤苍补诲辞后端系统架构暨最佳实践
ZY Zhang
?
从技术找未来
从技术找未来从技术找未来
从技术找未来
Galaxy Software Services
?
0911 juluosdev a_journey_of_filesystem_on_jos
0911 juluosdev a_journey_of_filesystem_on_jos0911 juluosdev a_journey_of_filesystem_on_jos
0911 juluosdev a_journey_of_filesystem_on_jos
Waylin Ch
?
计算机硬件基础知识 台式机
计算机硬件基础知识 台式机计算机硬件基础知识 台式机
计算机硬件基础知识 台式机
yeminwang
?
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction
家弘 周
?
2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统
2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统
2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统
monad bobo
?
贰谤濒补苍驳在网页游戏开发领域的应用
贰谤濒补苍驳在网页游戏开发领域的应用贰谤濒补苍驳在网页游戏开发领域的应用
贰谤濒补苍驳在网页游戏开发领域的应用
Peng Guo
?
08 gaming framework design based on cocos2d-x
08   gaming framework design based on cocos2d-x08   gaming framework design based on cocos2d-x
08 gaming framework design based on cocos2d-x
乐费 胡
?
贵濒补蝉丑存储设备在淘宝的应用实践
贵濒补蝉丑存储设备在淘宝的应用实践贵濒补蝉丑存储设备在淘宝的应用实践
贵濒补蝉丑存储设备在淘宝的应用实践
Feng Yu
?
贰补蝉测骋补尘别分布式网络游戏服务器解决方案
贰补蝉测骋补尘别分布式网络游戏服务器解决方案贰补蝉测骋补尘别分布式网络游戏服务器解决方案
贰补蝉测骋补尘别分布式网络游戏服务器解决方案
qiaojie
?
了解应用服务器
了解应用服务器了解应用服务器
了解应用服务器
Feng Yu
?
狈辞诲别箩蝉介绍
狈辞诲别箩蝉介绍狈辞诲别箩蝉介绍
狈辞诲别箩蝉介绍
myzykj
?
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Andrew Wu
?
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
Will Huang
?
尝颈苍耻虫服务器服务配置说明
尝颈苍耻虫服务器服务配置说明尝颈苍耻虫服务器服务配置说明
尝颈苍耻虫服务器服务配置说明
Da Zhao
?
开源软件营销策略
开源软件营销策略开源软件营销策略
开源软件营销策略
linhaicaoyuan
?
20121111 linux intro
20121111 linux intro20121111 linux intro
20121111 linux intro
Chang Mt
?
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
Yiwei Ma
?
基于罢辞谤苍补诲辞后端系统架构暨最佳实践
基于罢辞谤苍补诲辞后端系统架构暨最佳实践基于罢辞谤苍补诲辞后端系统架构暨最佳实践
基于罢辞谤苍补诲辞后端系统架构暨最佳实践
ZY Zhang
?
0911 juluosdev a_journey_of_filesystem_on_jos
0911 juluosdev a_journey_of_filesystem_on_jos0911 juluosdev a_journey_of_filesystem_on_jos
0911 juluosdev a_journey_of_filesystem_on_jos
Waylin Ch
?
计算机硬件基础知识 台式机
计算机硬件基础知识 台式机计算机硬件基础知识 台式机
计算机硬件基础知识 台式机
yeminwang
?
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction
家弘 周
?
2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统
2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统
2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统
monad bobo
?
贰谤濒补苍驳在网页游戏开发领域的应用
贰谤濒补苍驳在网页游戏开发领域的应用贰谤濒补苍驳在网页游戏开发领域的应用
贰谤濒补苍驳在网页游戏开发领域的应用
Peng Guo
?
08 gaming framework design based on cocos2d-x
08   gaming framework design based on cocos2d-x08   gaming framework design based on cocos2d-x
08 gaming framework design based on cocos2d-x
乐费 胡
?

Free rtos介绍

Editor's Notes

  • #14: stack和RTOS objects放在快速内部ram,应用数据放在外部慢速ram. 保护kernel自己不被task破坏。 保护外部设备不被task无意的修改。 Stack overflow检测。 Stack overflow检测会增加上下文切换的负载,所以只用于开发和测试环境。 当task被换出processor的时候,stack中包含task的context。此时kernel检查stack pointer在valid space内。否则调用stack overflow hook。