I.MX6 Android i2c-tools porting
- /**************************************************************************
- * I.MX6 Android i2c-tools porting
- * 说明:
- * 判断I2C总线设备是否存在,每次都去查dmesg,实在是烦了,于是还是移植
- * 一个i2c-tools比较好,不用翻那长长内核信息。
- *
- * 2016-3-31 深圳 南山平山村 曾剑锋
- *************************************************************************/
- 一、参考资料:
- . Android 平台下使用 i2c-tools
- http://my.oschina.net/luoly/blog/368881
- . 树莓派学习笔记——I2C Tools 学习笔记
- http://blog.csdn.net/xukai871105/article/details/15029843
- . Linux I2C工具查看配置I2C设备
- http://blog.chinaunix.net/uid-26895763-id-3478882.html
- 二、download:
- groeck/i2c-tools:
- https://github.com/groeck/i2c-tools
- 三、Decompress:
- zengjf@zengjf:~$ unzip i2c-tools-master.zip
- zengjf@zengjf:~$ mv i2c-tools-master ~/myandroid/external/i2c-tools/
- 四、cat external/i2c-tools/Android.mk
- # external/i2c-tools/Android.mk
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := eng
- LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
- LOCAL_SRC_FILES :=tools/util.c tools/i2cbusses.c
- LOCAL_MODULE := i2c-tools
- include $(BUILD_STATIC_LIBRARY)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := eng
- LOCAL_SRC_FILES:=tools/i2cdetect.c
- LOCAL_MODULE:=i2cdetect
- LOCAL_CPPFLAGS += -DANDROID
- LOCAL_SHARED_LIBRARIES:=libc
- LOCAL_STATIC_LIBRARIES := i2c-tools
- LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
- include $(BUILD_EXECUTABLE)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := eng
- LOCAL_SRC_FILES:=tools/i2cget.c
- LOCAL_MODULE:=i2cget
- LOCAL_CPPFLAGS += -DANDROID
- LOCAL_SHARED_LIBRARIES:=libc
- LOCAL_STATIC_LIBRARIES := i2c-tools
- LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
- include $(BUILD_EXECUTABLE)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := eng
- LOCAL_SRC_FILES:=tools/i2cset.c
- LOCAL_MODULE:=i2cset
- LOCAL_CPPFLAGS += -DANDROID
- LOCAL_SHARED_LIBRARIES:=libc
- LOCAL_STATIC_LIBRARIES := i2c-tools
- LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
- include $(BUILD_EXECUTABLE)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := eng
- LOCAL_SRC_FILES:=tools/i2cdump.c
- LOCAL_MODULE:=i2cdump
- LOCAL_CPPFLAGS += -DANDROID
- LOCAL_SHARED_LIBRARIES:=libc
- LOCAL_STATIC_LIBRARIES := i2c-tools
- LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
- include $(BUILD_EXECUTABLE)
- 五、compile error:
- . 现象:
- ......
- PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Solarium.ogg:system/media/audio/ringtones/Solarium.ogg ignored.
- No private recovery resources for TARGET_DEVICE sabresd_6dq
- make: Entering directory `/home/zengjf/myandroid'
- target thumb C: i2c-tools <= /home/zengjf/myandroid/external/i2c-tools//lib/smbus.c
- target StaticLib: i2c-tools (out/target/product/sabresd_6dq/obj/STATIC_LIBRARIES/i2c-tools_intermediates/i2c-tools.a)
- target thumb C: i2cdetect <= /home/zengjf/myandroid/external/i2c-tools/lib/smbus.c
- target thumb C: i2cdetect <= /home/zengjf/myandroid/external/i2c-tools/tools/i2cdetect.c
- /home/zengjf/myandroid/external/i2c-tools/tools/i2cdetect.c::: error: 'I2C_FUNC_SMBUS_PEC' undeclared here (not in a function)
- make: *** [out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdetect_intermediates/tools/i2cdetect.o] Error
- make: Leaving directory `/home/zengjf/myandroid'
- . 解决办法:
- cat external/i2c-tools/include/i2c/smbus.h
- .....
- /* Compatibility defines 添加宏声明*/
- #ifndef I2C_SMBUS_I2C_BLOCK_BROKEN
- #define I2C_SMBUS_I2C_BLOCK_BROKEN I2C_SMBUS_I2C_BLOCK_DATA
- #endif
- #ifndef I2C_FUNC_SMBUS_PEC
- #define I2C_FUNC_SMBUS_PEC I2C_FUNC_SMBUS_HWPEC_CALC
- #endif
- extern __s32 i2c_smbus_access(int file, char read_write, __u8 command,
- int size, union i2c_smbus_data *data);
- extern __s32 i2c_smbus_write_quick(int file, __u8 value);
- ......
- . 正常现象:
- No private recovery resources for TARGET_DEVICE sabresd_6dq
- make: Entering directory `/home/zengjf/myandroid'
- target thumb C: i2cdetect <= /home/zengjf/myandroid/external/i2c-tools/tools/i2cdetect.c
- target Executable: i2cdetect (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdetect_intermediates/LINKED/i2cdetect)
- target Symbolic: i2cdetect (out/target/product/sabresd_6dq/symbols/system/bin/i2cdetect)
- Export includes file: /home/zengjf/myandroid/external/i2c-tools/Android.mk -- out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdetect_intermediates/export_includes
- target Strip: i2cdetect (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdetect_intermediates/i2cdetect)
- Install: out/target/product/sabresd_6dq/system/bin/i2cdetect
- Import includes file: out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cget_intermediates/import_includes
- target thumb C: i2cget <= /home/zengjf/myandroid/external/i2c-tools/tools/i2cget.c
- target Executable: i2cget (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cget_intermediates/LINKED/i2cget)
- target Symbolic: i2cget (out/target/product/sabresd_6dq/symbols/system/bin/i2cget)
- Export includes file: /home/zengjf/myandroid/external/i2c-tools/Android.mk -- out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cget_intermediates/export_includes
- target Strip: i2cget (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cget_intermediates/i2cget)
- Install: out/target/product/sabresd_6dq/system/bin/i2cget
- Import includes file: out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cset_intermediates/import_includes
- target thumb C: i2cset <= /home/zengjf/myandroid/external/i2c-tools/tools/i2cset.c
- target Executable: i2cset (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cset_intermediates/LINKED/i2cset)
- target Symbolic: i2cset (out/target/product/sabresd_6dq/symbols/system/bin/i2cset)
- Export includes file: /home/zengjf/myandroid/external/i2c-tools/Android.mk -- out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cset_intermediates/export_includes
- target Strip: i2cset (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cset_intermediates/i2cset)
- Install: out/target/product/sabresd_6dq/system/bin/i2cset
- Import includes file: out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdump_intermediates/import_includes
- target thumb C: i2cdump <= /home/zengjf/myandroid/external/i2c-tools/tools/i2cdump.c
- target Executable: i2cdump (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdump_intermediates/LINKED/i2cdump)
- target Symbolic: i2cdump (out/target/product/sabresd_6dq/symbols/system/bin/i2cdump)
- Export includes file: /home/zengjf/myandroid/external/i2c-tools/Android.mk -- out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdump_intermediates/export_includes
- target Strip: i2cdump (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdump_intermediates/i2cdump)
- Install: out/target/product/sabresd_6dq/system/bin/i2cdump
- make: Leaving directory `/home/zengjf/myandroid'
- zengjf@zengjf:~/myandroid$
- . adb push <编译出来的可执行程序> /data/local
- 六、i2cdetect test:
- . test1:
- |root@android:/data/local # ./i2cdetect -l
- i2c- i2c i2c-gpio3 I2C adapter
- i2c- i2c imx-i2c I2C adapter
- i2c- i2c imx-i2c I2C adapter
- i2c- i2c imx-i2c I2C adapter
- root@android:/data/local #
- . test2:
- root@android:/data/local # ./i2cdetect -y -r
- a b c d e f
- : -- -- -- -- -- -- -- -- -- -- -- -- --
- : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
- : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
- : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
- : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
- : UU -- -- -- -- UU -- -- -- -- -- -- -- -- -- --
- : -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
- : -- -- -- -- -- -- -- --
- 七、i2cget test:
- |root@android:/data/local # ./i2cget -y 0x08 0x03
- Error: Could not set address to 0x08: Device or resource busy
- |root@android:/data/local # ./i2cget -f -y 0x08 0x03
- 0x21
- |root@android:/data/local #
I.MX6 Android i2c-tools porting的更多相关文章
- I.MX6 Android U-blox miniPCI 4G porting
/************************************************************************** * I.MX6 Android U-blox m ...
- I.MX6 Android Linux shell MMPF0100 i2c 设置数据
#!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 设置数据 # 说明: # 本文主要记录通过shell脚本来设置 ...
- I.MX6 Android iperf3 porting failed
/***************************************************************************** * I.MX6 Android iperf ...
- I.MX6 Android Linux shell MMPF0100 i2c 获取数据
#!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 获取数据 # 说明: # 本文主要记录通过shell脚本来获取 ...
- 在android下使用i2c tools
在android使用i2c tools访问i2c,很方便,可以在https://launchpad.net/ubuntu/+source/i2c-tools 下载最新的i2c tools. 把i2c- ...
- I.MX6 HUAWEI MU609 3G porting
/*************************************************************************** * I.MX6 HUAWEI MU609 3G ...
- I.MX6 Android 5.1.1 下载、编译
/************************************************************************* * I.MX6 Android 5.1.1 下载. ...
- I.MX6 android mkuserimg.sh
/************************************************************************** * I.MX6 android mkuserim ...
- Android SDK Tools Platform-tools Build-tools
(1)Android SDK (Android SDK主安装包,包含SDK Manager.AVD Manager.工具包tools,释放后的根文件夹为android-sdk-windows): re ...
随机推荐
- python编程语言缩进格式
python的缩进格式是python语法中最特别的一点,很多已经习惯了其他语言的朋友再去学python的话,开始会觉的不太 习惯. 怎么看怎么都觉的别扭,也有一些朋友因为这个特别的格式与python失 ...
- Linux进程间通信IPC学习笔记之有名管道
基础知识: 有名管道,FIFO先进先出,它是一个单向(半双工)的数据流,不同于管道的是:是最初的Unix IPC形式,可追溯到1973年的Unix第3版.使用其应注意两点: 1)有一个与路径名关联的名 ...
- Thinkphp3.2.2的上传问题
学习了Thinkphp3.2.2的上传,报出了FILE: F:\development\yxk\Cord\Library\Think\Upload.class.php LINE: 257错误 这应该是 ...
- ^M的前世今生
^M 是ascii中的'\r', 回车符,是16进制的0x0D,8进制的015,十进制的13. 回想计算机发展,旧的打字机使用两个字符来开始一个新行.首先是一个字符命令使打印头移回开始位置(回车),然 ...
- C语言标记化结构初始化语法
C语言标记化结构初始化语法 (designated initializer),而且还是一个ISO标准. #include <stdio.h> #include <stdlib.h&g ...
- PostgreSQL+PostGIS的使用 函数清单
一. PostgreSQL与PostGIS的关系 PostgreSQL 是世界上技术最先进的开源数据库,其前身是1977年一个源于Berkeley名为Ingres的非关系型数据库,其项目领导人为Mic ...
- 线形,柱形,条形数据表(百度Echart插件)
[获取资源]进入官网, http://echarts.baidu.com/导航,下载,下拉框下载,常用303k.就是这么简单,就个一个js.[项目使用]新建项目,MyChart具体使用的过程中, ...
- linux驱动系列之挂载(转)
转自网页:http://www.cnblogs.com/yeahgis/archive/2012/04/05/2432779.html http://www.linuxso.com/command/c ...
- $.post()返回数据正常,但不执行success回调函数
今天遇到一特郁闷的问题,如题:$.post()返回数据正常,但不执行success回调函数.说它郁闷是因为没毕业之前就遇到过解决了,却没有记录下来,导致卡了一下午. 像这样,post返回数据正常,但却 ...
- Generating Huge reports in JasperReports
There are certain things to care while implementing the Jasper Reports for huge dataset to handle th ...