FreeRTOS

freertos 会接管 systick,作用时间片基准,系统不跑systick不会开始计数, 所以需要另外的timer作为hal_tick来源。 
freertos 会接管 svc,作用是用来开跑第一个线程。
freertos 会接管 pendsv,作为线程切换的入口。
freertos 线程切换,实际是线程上下文入栈出栈过程,栈在堆里面创建。上下文就是执行流在某个时刻的一个快照。
freerots 是多线程微内核,没有进程概念,也不分内核态用户态,代码段,数据段,堆共享,每个线程栈保存各自结构体中,所以切换快,但安全性需要程序员自己把握。
HAL设计的时候是跑单执行流的,所以用多线程和中断回调时候注意里面的__HAL_LOCK有坑。
freertos tickless 是内核轮询每个线程等待时间,取最小值作为系统休眠时间,然后休眠,唤醒时计算真实休眠时间,加到tick里面。唤醒可能是时间到了,也可能是中断唤醒。
freertos 的中断回调api要注意中断优先级限制。
freertos 注意文档与代码版本,api有微调有坑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值