目录
1. 前言
今年2月份最大的科技新闻莫过于有三艘太空飞船先后抵达火星。它们分别是:阿拉伯联合酋长国的“希望”号探测器、我们中国的“天问一号”和美国的“毅力号”火星车。
“毅力号”不是携带了一辆叫“机智号”小直升机吗?这小飞机里就用了一套专门为小型飞行器设计的开源软件框架F prime。下面就对它做个简单的介绍。(真的非常简单,随便看看,重在科普^_^)
2. F prime的情况简介
2.1 相关网址
https://github.com/nasa/fprime
https://nasa.github.io/fprime/
2.2 到底是个啥玩意
根据github上的信息,F prime是JPL专门为快速开发小型空间飞行系统而设计的一个软件框架。这里的空间飞行系统是指微型和小型卫星或其它科学仪器。
F prime有以下特点:
专门为飞行系统的各个部分的开发定义了设计良好的软件接口
有一个用c++写的框架,提供消息队列和线程
提供一个自动生成代码的建模工具
不断丰富的组件包。
单元和集成测试工具。
2.3 代码简单分析
代码下载和编译都参照github来就是,不多说。(推荐去gitee下载,速度快)
如下图,F prime的源码一共有十多个。我们一个个浏览看大概都有些什么东西。
Autocoders
不用说,这个目录就下面就是自动生成代码的建模工具。其实是用Java写的eclipse插件。看了一下它的说明文档,感觉有点类似于能生成代码的UML建模工具。
CFDP
里面就只有一个checksum 类及其测试代码。但有意思的是CFDP这个协议。CFDP 应该是 CCSDS File Delivery Protocol,它是由空间数据系统委员(CCSDS, Consultative Committee for Space Data Systems)制定。它可以说是因为现有TCP/IP不能满足星际空间受限的网络环境而提出来的。(具体怎么受限法,我没详细了解,不过可能与DTN (Delay Tolerant Network) 这种东西有关)。
Ci
一个辅助代码管理的小工具,略过。
Config
常规目录名,对软件的各个模块进行配置,比如设置某类消息的最大长度等等。
Drv
里面有些简单的串口、iic、spi、gpio等设备的驱动,做嵌入式的一看大概就明白是什么。
Fw
里面提供了一些算是中间件吧,比如buffer模块,log模块等等。
Gds
这个Gds是用python写的一个pc机上的小工具,应该是一个用于测试和监视飞行器状态的小工具。
Os
这个就是用c++写的框架,提供消息队列和线程,看起来是可以运行在linux和macos上。不过我也没有编译运行,没有测试过。
Ref 和 RPI
这是作者提供的demo。
Utils
一些c++工具类
3. 结束
这次就到此为止吧,挺流水账的,其实我没有体会出这个框架有多了不起。可能知识太局限了,也可能人家本来也就没把牛掰的东西往上面放吧。
版权声明
所有原创文章(未进行特殊标识的均属于原创) 的著作权属于本人
所有转载文章(标题注明[转]的所有文章) 的著作权属于原作者。
所有译文文章(标题注明[译]的所有文章) 的原文著作权属于原作者,译文著作权属于本人。
转载注意事项
除注明外,所有文章均采用 Creative Commons BY-NC-ND 4.0(自由转载-保持署名-非商用-禁止演绎)协议发布。
你可以在非商业的前提下免费转载,但同时你必须:
保持文章原文,不作修改。
明确署名,即至少注明 作者:BoatOnMCU 字样以及文章的原始链接,且不得使用 rel="nofollow" 标记。
商业用途请电话联系本人。
微信公众号转载一律不授权,除非联系本人并获得授权。