1 Star 0 Fork 11

coder_lw / wiki

forked from deepinwiki / wiki 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
freertos.md 1.70 KB
一键复制 编辑 原始数据 按行查看 历史
htqx 提交于 2023-03-15 23:53 . freertos

freeRTOS 系统

前言

freertos 是一个在 Iot(物联网)环境下部署的微型操作系统。而且是开源免费的。其实这类系统可以选择的很多,包括国产著名的 liteos(华为),还有rt-thread。那么为什么要选择 freertos,主要是它精简,然后它支持协程。然后外国的方案,比较注重开源生态,而国内的会比较商业化。比如 liteos 它居然要求用 windows 来开发,简直莫名其妙。

一个用了一堆 linux 组件的开发平台,cmkae, gcc,gdb 等等,结果不能在 linux 上开发,这简直是对 linux 的亵渎。这就是为什么我厌恶国内开源的地方,毫无开源精神,总是想着什么吸血开源,而不是依托开源壮大开源。

任务系统

  1. 轮询系统:一个大循环按顺序执行任务。对输出支持较好,对输入响应不够快。
  2. 前后台系统:加入中断处理,能响应前台事件,后台是具备优先级的轮询系统。
  3. 抢占式多任务系统:由计时中断定时切换任务。

数据结构

根据任务系统的特点,任务可以并行,完成的时间也是有所不同,还要具备优先级。因此采取基于指针的间接访问结构,如链表、树之类,随时可以删除(任务)节点,调整顺序也较为方便。

const TickType_t = usize; // 硬件整型 usize 
const portBASE_TYPE = i32; 
const StackType_t = usize;
const portMAX_DELAY = 2^32-2;
const ListItem_t = struct {
    xItemValue: TickType_t, // 优先级
    pxNext: *ListItem_t, // 下一个节点
    pxPrevious: *ListItem_t, // 上一个节点
    pvOwner: * void, // 所属任务块
    pvContainer: * void, // 所属链表
};

参考

1
https://gitee.com/coder_lw/wiki.git
git@gitee.com:coder_lw/wiki.git
coder_lw
wiki
wiki
master

搜索帮助