王彦为

聚沙成塔
  1. 首页
  2. 嵌入式
  3. 正文

玩转DragronBoard 410c系列之八:交叉编译mraa库

2020-11-05 121868点热度 1人点赞 0条评论

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上使用。附件是我编译好的动态库,有需要的可以下载。
立即下载

标签: 暂无
最后更新:2022-03-31

王彦为

新生代农民工,十年医疗器械行业从业经验,现居苏州。爱生活,爱做梦。

打赏 点赞
< 上一篇

文章评论

取消回复

COPYRIGHT © 2022 王彦为. ALL RIGHTS RESERVED.

苏ICP备16063331号-1

苏公网安备32050702011313号