[关闭]
@SiberiaBear 2015-10-05T14:33:43.000000Z 字数 2855 阅读 2921

更新Edison的mraa和upm库

Edison
author:PWE


最近写Edison的程序,发现可以在电脑上eclipse编译通过的程序,但下载到Edison后运行不通过,发现应该是两个平台的库文件不统一造成的。于是要准备开始更新库文件。当然还有意外收获,找到了intel最近更新的Edison中文学习手册。警告,请在看完全文后在跟着敲命令,否则敲错了请不要骂我。
本文固定链接:https://www.zybuluo.com/SiberiaBear/note/182584

更新Eclipse上的库

首先请参考英特尔官方的文章:更新和选择针对UPM和MRAA通用库的更新选项,该部分参考这篇文章。

引用MRAA I/O 通用库(或 libmraa)是一种低级别通用库,可将通用输入/输出 (GPIO) 接口转换成针脚,以供英特尔® Galileo 或英特尔® Edison 开发板使用。MRAA 有助于开发人员和传感器制造商以更简单的方法在所支持的硬件上映射其传感器和制动器,并通过高级语言和结构控制下层通信协议。

引用UPM 传感器通用库(或 libupm)是关于传感器表示的资源库,用 C++ 编写而成,并使用 MRAA。UPM 是一种高级别资源库,可支持使用 MRAA 通用库的传感器。各传感器都可链接至 libmraa,但并不意味着它们处于互连状态,尽管有几组传感器可以互连。传感器包含一个标头,支持您与传感器互动。

步骤:
1. 选择 "IOT DevKit > Update libraries"。
2. 如果版本是旧版本,会提示 "Updates available" 窗口,点击 "Yes"。
3. 点击 "OK",完成更新。

更新Edison开发板上的库

首先请参考英特尔官方的文章:更新MRAA I/O 和 UPM 传感器库,该部分参考这篇文章。

MRAA的最新版本可在各自的GitHub页面找到:

注:截止这篇文章最后修改(2015年10月5日),libmraa0库的最新版本是:0.7.3
upm库的最新版本是:0.4.0(依赖于mraa 0.8.0)、0.2.0(依赖于libmraa0 0.6.0),mraa库的最新版本是:0.8.0

注:后进一步查看后,认为上边的是错误的。在命令echo "src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic">/etc/opkg/mraa-upm.conf中,1.1需要替换为2.0,并且我认为需要手动查看最新版本(网络上的教程较多仍为1.1版本或1.5版本。从安装输出信息中可以看出,安装2.0版本后,新的upm和mraa库将替代旧版本库。感谢奈何col的提醒。
截稿时(2015年10月5日),最新的版本库为:
- upm 0.4.0
此处输入图片的描述
- libmraa0 0.7.3
此处输入图片的描述
- mraa 0.8.0
此处输入图片的描述

另外一种edison更新(方法2)

为了说明我对这部分还是有点混乱,必须再写点。请参考这篇文章
1. 将/etc/opkg/base-feeds.conf修改内容为如下:(其他几个在opkg/目录下的文件不需要改动)
2. 运行opkg update
3. 运行opkg install libmraa0,会发现如下一条输出:

Upgrading libmraa0 from 0.7.3 to 0.8.0+git0+70600dece4-r0 on root.

4. 运行opkg install mraa,会发现如下一条输出:

Package mraa (0.8.0) installed in root is up to date.

5. 运行opkg install upm,会发现如下一条输出:

Upgrading upm from 0.4.0 to 0.4.0+git0+ef30ab6fb2-r0 on root.

请问这个该怎么解释?
补充:这里自问自答一下哈,刚才学习了2个小时,找到一篇文章挺好,请参考。想想,可不可以是这样,文章中提到两种源(repo),第一种是opkg官方(如果有“官方”的话)的源,另一种是英特尔官方的源。到底哪个会新不确定了,总之,不要作死好不好,能用就行搞最新的干嘛。下边贴一下这篇文章中对源的添加:
- repo.opkg.net的源

  1. cat /etc/opkg/base-feeds.conf
  2. src/gz all http://repo.opkg.net/edison/repo/all
  3. src/gz edison http://repo.opkg.net/edison/repo/edison
  4. src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32

经查看,该源所下载的库文件的主要维护者(maintainer)是Poky (poky@yoctoproject.org)

  1. cat /etc/opkg/base-feeds.conf
  2. src all http://iotdk.intel.com/repos/2.0/iotdk/all
  3. src core2-32 http://iotdk.intel.com/repos/2.0/iotdk/core2-32
  4. src core2-32-intel-common http://iotdk.intel.com/repos/2.0/iotdk/core2-32-intel-common
  5. src i586 http://iotdk.intel.com/repos/2.0/iotdk/i586
  6. src quark http://iotdk.intel.com/repos/2.0/iotdk/quark
  7. src x86 http://iotdk.intel.com/repos/2.0/iotdk/x86

同理,这里的2.0也要谨慎些,可能会出新版本。
所以,之所以出现方法2中的问题,是因为最初用英特尔的源更新了mraa库(方法1),libmraa0是旧版本,后来用opkg的源更新,会提示更新到最新版本,可能是这样吧。
这样说,英特尔的libmraa0库依然没有opkg的版本更新,那么libmraa0mraa到底是什么关系?

这部分有如下问题:

  1. libmraa0mraaupm这三个库的关系?尤其是libmraa0mraa是什么关系?
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注