Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Free rtos简介

1,888 views

Published on

FreeRTOS的一个简单介绍。包含了它的一些feature的简介。

Published in: Technology
  • Be the first to comment

Free rtos简介

  1. 1. FreeRTOS
  2. 2. What is FreeRTOS • 多任务的嵌入式RTOS。 • 开源免费,可用于商业产品,无任何IP风险。 • 始于2003年。12年历史。 • 由Real Time Engineers ltd. 开发和维护。 • 占有率仅次于Android和Ubuntu。深度嵌入 式领域市场占有率最高的RTOS。 • 简单。核心只有3个c文件。
  3. 3. 设计目标 From official documents : • 易用 • 低内存占用(Small footprint) • 健壮
  4. 4. 核心功能 core kernel仅仅提供: • 实时任务调度 • 任务间通信 • Timing • 同步原语 其它功能,如网络协议栈等,均作为add-on 组件。
  5. 5. 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译作”协程”
  6. 6. 进程:4种状态和转换
  7. 7. Feature : Tickless Idle Mode • 一个常见的降低功耗的做法是使用Idle task。 • Idle task运行在最低执行权限,调用用户定义的hook函数, 可以使processor进入低功耗模式。 • FreeRTOS提供了Tickless Idle Mode停止tick中断,防止 processor不停的退出/进入低功耗模式。 • 退出Tickless Idle Mode时,仍能调整tick count value为正确 的值。
  8. 8. 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。
  9. 9. Feature :Binary Semaphores,mutex • 二元信号量用于互斥和同步。 • 允许设定block time。 • Binary Semaphores + 优先级实现 = mutex 如果 task A试图获得一个mutex因而阻塞,此mutex当前的 持有者task B的优先级低于A,那么B的优先级被暂时提升到 与A相同。 此举是为了保证高优先级task被block的时间尽可 能短。
  10. 10. Feature: Software Timer 函数在指定时间之后运行。 FreeRTOS的timer实现: • 可选的,不属于core kernel。 • 由一个timer service(或daemon) task实现。 • 许多api的实现是通过标准的queue向timer task发送命令。 • 不消耗processor时间,除非timer已到期。 • 不在tick interupt中增加任何负载。 • 支持one-shot和auto-reload两种timer。
  11. 11. Feature:debug支持 • Trace Hook Macros • Run Time Statistics (Abs time and % time for each task)
  12. 12. Feature : simulator • Windows • Posix/linux
  13. 13. Feature : 内存管理 • 多种内存管理策略 • 定制heap实现,同时使用2种堆实现 • MPU支持。 Cortex-M3 FreeRTOS-MPU port. • 检测stack overflow
  14. 14. footprint RAM: • Scheduler :236 bytes. • Every Queue: 76bytes + queue data • Every Task : 64 bytes + stack size ROM: • Kernel : 5 – 10 K. (minimal)
  15. 15. Feature : hook • Idle Hook • Tick Hook • Malloc Failed Hook • Stack Overflow Hook

×