cFS与SB学习记录(八):把EDS模式的SB单独放到Linux下运行

读完 SB 以后,我想把它从完整 cFE 的启动环境中拿出来,在 Linux 上单独观察一次真实的订阅、发布和接收。这样每一层依赖都要明确回答:SB 要的应用身份从哪里来,内存池由谁建立,EDS 数据库在哪里,原来的管理任务又怎样启动。

这次以 cfs_sb_linux 的三次主要移植记录为主线。后来另一个目录 sb_port_linux 做了进一步拆解,我放在文末补充,避免把整理中的代码状态与前一个已经留下运行记录的版本混写。

cFS与SB学习记录(二):管道建好以后,消息为什么还收不到

SB 最容易记住的接口是 CreatePipe、Subscribe、TransmitMsg 和 ReceiveBuffer。但只记调用顺序,还是解释不了几个问题:管道已经创建,为什么没有消息?订阅究竟改了哪张表?一个管道订阅两种消息时,深度和消息限额又怎样一起生效?

这篇先把发送前需要准备的东西理清。沿着“创建一个管道,再订阅一条消息”的过程,可以同时看见 SB 的资源管理、锁的边界和路由关系。

cFS与SB学习记录(一):先弄清cFS、cFE和OSAL各自做什么

前面整理 EDS 和 PUS 时,关注点主要是“一条消息表达什么、怎样编码”。继续往下读 cFS,会碰到另一个问题:消息已经定义好了,运行中的几个应用怎样把它交给彼此?谁创建任务,谁维护队列,换一个操作系统后又该改哪一层?

我这次把阅读范围收到了 cFE 的 Software Bus,也就是 SB。不过在钻进发送和接收函数之前,先把 cFS、cFE、OSAL、PSP 这几个名字放回各自的位置。否则看到一个 OS_QueueCreate(),很容易把业务通信、cFE 服务和操作系统实现混在一起。


:D 一言句子获取中...