[其他] Open.MEMS算法库的软件架构【ST工程师文章系列】

nmg   2017-5-25 16:20 楼主
相关文章:
如何使能Open.MEMS算法库
针对手机及可穿戴设备的行为识别--Open.MEMS软件帮你做减法


前面有一篇“如何使能Open.MEMS算法库”的文章,介绍了Open.MEMS是什么,及其软硬件开发环境。为了更好的让大家理解Open.MEMS的体系,下面详细介绍一下它的软件架构,如下图所示。

0?wx_fmt=png

是不是感觉有点像Android系统的软件架构,从下到上HW-> Kernel & Driver -> HAL -> Lib -> Framework -> APP?对,有点像,从下到上HW-> Components -> Drivers (BSP & HAL) -> Middleware -> App。

HAL layer
HAL驱动层提供一套通用的、多实例、简单的API与上层(应用、库和堆栈)通讯。它由通用和扩展的API组成,可以让middleware中间层建立在它之上去实现功能,避免依赖于某款MCU的特定硬件配置。这样的架构提高了库代码的可重用性,也便于移植到其它设备上。

BoardSupport Package(BSP)‍layer
这个软件包需要支持所有STM32Nucleo板上可用的外设除了MCU。它包含在板级支持包里面,是一套有限的API提供某些板上指定外设如LED、用户按键等的编程接口。同时,它也可以用于识别特定的板子版本。如果有用传感器扩展板的话,它也提供各种惯性和环境传感器的编程接口,包括初始化和读取传感器数据。

Middleware
就是各种扩展的运动算法静态库。以osxMotionCP扩展算法库为例,来看看Middleware提供的接口有:
uint8_tosx_MotionCP_GetLibVersion(char *version);
- 获取算法库的版本
uint8_t osx_MotionCP_Initialize(void);
- 执行osxMotionCP的初始化
voidosx_MotionCP_SetOrientation_Acc const char *acc_orientation);
- 用于设置加速度计的数据方向
osx_MCP_output_tosx_MotionCP_Update (osx_MCP_input_t *data_in);
- 输入的是包含加速度计三轴数据的结构体指针,输出的是包含设备放置的位置和错误码的结构体

Applications
就是调用middleware中间层各种运动算法库接口来实现的sample或者应用。
最后,基于osxMotionCP扩展运动算法库实现的应用或者Sample的整个工程,如下图所示:

0?wx_fmt=png





回复评论 (3)

看起来越来越方便了。
点赞  2017-5-25 20:11
具体怎么调用啊,我想要改一下我之前的姿态算法,把算法,换成这个算法,
点赞  2017-6-6 11:48

4楼 nmg 

引用: 雪瑞哥哥 发表于 2017-6-6 11:48
具体怎么调用啊,我想要改一下我之前的姿态算法,把算法,换成这个算法,

雪瑞,把你问题发帖出来,直接回帖一般不会引起注意的
点赞  2017-6-6 17:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复