MRAA简介
MRAA(读作 em-rah)是用C语言编写的低级别通用库。 MRAA旨在提取与平台(比如英特尔、Galileo 或Edison 开发板)基本 I/O 功能访问和控制相关的详细信息,并将其转化为单个、简洁的 API。
MRAA可作为Linux通用输入/输出(GPIO) 设备顶端的转换层。尽管Linux提供丰富的基础设施来控制GPIO,其用于处理GPIO的通用指令也非常标准,但使用难度相对较大。根据定义,不同平台之间存在差异,他们拥有不同的功能、针脚编号和GPIO类型。例如,更换平台后,GPIO 针脚可能无法支持相同类型的功能。某个特定平台可能根本没有针脚。另外,GPIO在平台上的配置方式也取决于不同因素。例如,一种 GPIO 针脚使用模式可能会影响其他针脚的其他使用模式,或影响其他针脚的使用。因此,MRAA可降低程序开发的复杂度,因为它可与其他软件一起使用来创建独立于平台的代码。
注:尽管MRAA可用于编写独立于平台的代码,开发人员仍然负责确保代码足够耐用,以适应平台的各种局限性。
MRAA安装
通常情况下,我们可以直接安装mraa库,通过访问github可以获取mraa的源码、示例以及安装方法,本文以Ubuntu 20.04的为例来说明安装过程。首先在shell控制台中输入如下指令
sudo add-apt-repository ppa:mraa/mraa sudo apt-get install libmraa-dev
安装的路径默认是usr/lib/x86_64-linux-gnu/libmraa.so,通过上述方法也可以在ARM Linux上尝试安装。
说明:github的安装指令有很多条,由于我需要的是C++库,所以只需要安装libmraa-dev即可
MRAA交叉编译
如果在上述方法无法安装成功,可自行编译源码。本文介绍使用交叉编译工具编译mraa库
1、下载mraa源码,从github上自行下载
2、下载交叉编译链,操作方法可参考《玩转DragronBoard 410c系列之四:Linux系统搭建ARM应用开发环境》
3、下载cmake,运行平台选择Linux,也可以使用Windows平台,我会在后面的文章讲解,本文使用的是Linux平台。
4、安装mraa依赖环境,下图是官方资料说明的依赖环境,我们不编译java、swing版本,所以下图中的依赖统统不安装!只要使用apt-get install build-essential安装基本的依赖即可,安装环境需要root权限。
1、修改CMakeLists.txt文件。由于我们只编译C++版本的mraa库,所以需要修改CMakeLists.txt文件,修改记录如下图所示,需要编译的模块标记“ON”,经过测试发现“ONEWIRE”必须标记为“ON”。
2、运行cmake-gui,填入mraa源码路径及编译后存储路径
3、然后点击“Configure”,弹出如下页面时选择“交叉编译”
4、操作系统填“Linux”,处理器填“arm”,编译器选择交叉编译工具中的gcc和g++,目标根路径也按照下图填写
5、点击“Finish”,弹出如下图所示页面
6、此时点击“Generate”按钮,则自动完成编译,如果需要安装,在Build输入“make install”指令,该指令需要root权限如下图所示
到此,mraa交叉编译完成,编译后的动态库为libmraa.so,默认路径为/usr/local/lib/libmraa.so,头文件默认路径为/usr/local/include/mraa。如果需要移植到ARM 开发板只需要将so文件和头文件复制过去即可。
总结
这篇文章主要介绍mraa的交叉编译流程,生成的动态库可以在ARN Linux上使用。附件是我编译好的动态库,有需要的可以下载。
立即下载
文章评论