Angelo
我想了解一下蓝牙协议栈是以什么形式在FreeRTOS里面运行的。看上不去并不是任务,因为我没有发现协议栈任务存在。猜测是中断驱动的常驻内存函数。不知道理解是否对?怎么能从代码中看出来呢?多谢!
Gang
协议栈是通过消息驱动的,消息是在sdk中断中处理的
比如app调用start adv的接口,会经历如下几个阶段:
1. app调用sdk api
2. sdk将该api转换成消息,发出去,目的地host
3. sdk中断处理该消息,识别到目的地是host,调用host对应接口
4. host接口中转换成消息,发出去,目的controller
5. sdk中断处理该消息,识别到目的地是 controller ,调用 controller 对应接口
6. controller接口中配置baseband,开始广播
和协议栈关联的主要有两种中断:
1. sdk中断,优先级较低,类似于背景线程的作用,用于实现消息的轮转
2. ble中断,优先级较高,主要用于接收数据或者事件调度
打开微信,使用“扫一扫”即可关注