freeRTOS简单学习及协程实现理解

freeRtos是开源免费的嵌入式操作系统,其官方网址http://www.freertos.org。最近刚刚看了LiteOS的代码,所以想顺便了解下freeRtos的架构差异。从代码情况上讲,freeRtos的源代码中提供了更多和不同平台相关的代码,为了方便了解,选择基于cortexM4为基础的STM32F407的平台代码来加深了解。
freeRtos提供的功能
作为嵌入式操作系统,freeRtos提供了任务、消息队列、事件、信号量、互斥锁、软件定时器等基础功能,另外为了解决问题方便,freeRtos同样具有越界检查、trace机制、任务耗时统计等辅助功能。在freeRtos的使用手册中有对函数接口、具体事例等实际使用说明。freeRtos提供了协程co-routine。
关于系统启动
在freeRtos代码中,一般启动文件名带有startup或boot字样。在启动代码中进行中断向量服务程序初始化,对于cortexM4的中断向量0-15为内部中断,16-255位外部IRQ,在示例中除了0-15中断服务程序初始化外,外部的FLASH、DMA、I2C等等也做了初始化。在系统初始化后,进入reset_handler函数,然后跳转到main执行。在main函数中进行硬件等初始化,启动操作系统运行。
freeRtos的实现
对于freeRots的使用接口及文件组织形式在其提供的手册中都有简要说明。freeRtos操作系统的文件按照功能划分,task.c实现任务/线程的功能;list.c实现链表功能;queue.c实现消息队列及信号量; timer.c实现了软件定时器的功能;event_goups.c实现了事件;而croutine.c则提供了协程的使用。从代码上看,个人觉得没有liteOS代码看起来舒服,太多的宏编译条件以及对齐问题,可能支持平台功能较多原因?
本质上操作系统的很多实现大同小异,基本都是基于链表调度。在freeRtos中的任务也存在执行、挂起、就绪、阻塞等状态,在具体实现上会存在些差别,如freeRtos中task优先级0表示最低优先级
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值