相关文章:
如何使能Open.MEMS算法库
针对手机及可穿戴设备的行为识别--Open.MEMS软件帮你做减法
前面有一篇“如何使能Open.MEMS算法库”的文章,介绍了Open.MEMS是什么,及其软硬件开发环境。为了更好的让大家理解Open.MEMS的体系,下面详细介绍一下它的软件架构,如下图所示。
是不是感觉有点像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的整个工程,如下图所示: