SlideShare ist ein Scribd-Unternehmen logo
1 von 15
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

Weitere ähnliche Inhalte

Was ist angesagt?

Syslog Ng
Syslog NgSyslog Ng
Syslog Ng
flytod
 
Linux期末 效能調教(kernel trnning)
Linux期末 效能調教(kernel trnning)Linux期末 效能調教(kernel trnning)
Linux期末 效能調教(kernel trnning)
米米 林
 
第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络
F.l. Yu
 
用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人
艾鍗科技
 
Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化
Dahui Feng
 

Was ist angesagt? (19)

S4A
S4AS4A
S4A
 
Linux基础
Linux基础Linux基础
Linux基础
 
Syslog Ng
Syslog NgSyslog Ng
Syslog Ng
 
BLE室內定位技術實現龍珠雷達裝置
BLE室內定位技術實現龍珠雷達裝置BLE室內定位技術實現龍珠雷達裝置
BLE室內定位技術實現龍珠雷達裝置
 
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)
 
ディープラーニングによる通信トラヒックの識別
ディープラーニングによる通信トラヒックの識別 ディープラーニングによる通信トラヒックの識別
ディープラーニングによる通信トラヒックの識別
 
第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络
 
附錄--Anaconda installation
附錄--Anaconda installation附錄--Anaconda installation
附錄--Anaconda installation
 
用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人
 
18 cpu02
18 cpu0218 cpu02
18 cpu02
 
Banquet 09
Banquet 09Banquet 09
Banquet 09
 
簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能
 
141118 Raspberry Pi 電鈴工作坊@松山文創園區
141118 Raspberry Pi 電鈴工作坊@松山文創園區141118 Raspberry Pi 電鈴工作坊@松山文創園區
141118 Raspberry Pi 電鈴工作坊@松山文創園區
 
U boot 程式碼打掃計畫
U boot 程式碼打掃計畫U boot 程式碼打掃計畫
U boot 程式碼打掃計畫
 
Last
LastLast
Last
 
Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化
 
揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing
 

Andere mochten auch

FreeRTOS
FreeRTOSFreeRTOS
FreeRTOS
quakke
 
Udeeps Presentation in Chinese
Udeeps Presentation in ChineseUdeeps Presentation in Chinese
Udeeps Presentation in Chinese
Bertrand Couvin
 

Andere mochten auch (20)

水土保持局環境教育1030904
水土保持局環境教育1030904水土保持局環境教育1030904
水土保持局環境教育1030904
 
移植FreeRTOS 之嵌入式軟體研究與開發
移植FreeRTOS 之嵌入式軟體研究與開發移植FreeRTOS 之嵌入式軟體研究與開發
移植FreeRTOS 之嵌入式軟體研究與開發
 
Python 起步走
Python 起步走Python 起步走
Python 起步走
 
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
 
FreeRTOS API
FreeRTOS APIFreeRTOS API
FreeRTOS API
 
W pwith cinhindi
W pwith cinhindiW pwith cinhindi
W pwith cinhindi
 
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminar
 
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
 
FreeRTOS
FreeRTOSFreeRTOS
FreeRTOS
 
FreeRTOS
FreeRTOSFreeRTOS
FreeRTOS
 
K-POP 选秀服务平台
K-POP 选秀服务平台K-POP 选秀服务平台
K-POP 选秀服务平台
 
CS 354 Viewing Stuff
CS 354 Viewing StuffCS 354 Viewing Stuff
CS 354 Viewing Stuff
 
CS 354 Project 1 Discussion
CS 354 Project 1 DiscussionCS 354 Project 1 Discussion
CS 354 Project 1 Discussion
 
Altium designer設計流程教學
Altium designer設計流程教學Altium designer設計流程教學
Altium designer設計流程教學
 
Udeeps Presentation in Chinese
Udeeps Presentation in ChineseUdeeps Presentation in Chinese
Udeeps Presentation in Chinese
 
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
 
OpenGL for 2015
OpenGL for 2015OpenGL for 2015
OpenGL for 2015
 
用Raspberry Pi 學Linux I2C Driver
用Raspberry Pi 學Linux I2C Driver用Raspberry Pi 學Linux I2C Driver
用Raspberry Pi 學Linux I2C Driver
 
2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明
 

Ähnlich wie Free rtos简介

Nodejs介绍
Nodejs介绍Nodejs介绍
Nodejs介绍
myzykj
 
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
 
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
 
Erlang在网页游戏开发领域的应用
Erlang在网页游戏开发领域的应用Erlang在网页游戏开发领域的应用
Erlang在网页游戏开发领域的应用
Peng Guo
 

Ähnlich wie Free rtos简介 (20)

Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
 
EasyGame分布式网络游戏服务器解决方案
EasyGame分布式网络游戏服务器解决方案EasyGame分布式网络游戏服务器解决方案
EasyGame分布式网络游戏服务器解决方案
 
了解应用服务器
了解应用服务器了解应用服务器
了解应用服务器
 
Nodejs介绍
Nodejs介绍Nodejs介绍
Nodejs介绍
 
Develop Your Own Operating System
Develop Your Own Operating SystemDevelop Your Own Operating System
Develop Your Own Operating System
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
 
Linux服务器服务配置说明
Linux服务器服务配置说明Linux服务器服务配置说明
Linux服务器服务配置说明
 
开源软件营销策略
开源软件营销策略开源软件营销策略
开源软件营销策略
 
Some tips
Some tipsSome tips
Some tips
 
20121111 linux intro
20121111 linux intro20121111 linux intro
20121111 linux intro
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
 
基于Tornado后端系统架构暨最佳实践
基于Tornado后端系统架构暨最佳实践基于Tornado后端系统架构暨最佳实践
基于Tornado后端系统架构暨最佳实践
 
從技術找未來
從技術找未來從技術找未來
從技術找未來
 
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
 
计算机硬件基础知识 台式机
计算机硬件基础知识 台式机计算机硬件基础知识 台式机
计算机硬件基础知识 台式机
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction
 
2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统
2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统
2023RustChinaConf-使用 Rust 与 ClickHouse 构建高效可靠的日志系统
 
Erlang在网页游戏开发领域的应用
Erlang在网页游戏开发领域的应用Erlang在网页游戏开发领域的应用
Erlang在网页游戏开发领域的应用
 
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简介

Hinweis der Redaktion

  1. 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。