1. /**************************************************************************
  2. * I.MX6 Android i2c-tools porting
  3. * 说明:
  4. * 判断I2C总线设备是否存在,每次都去查dmesg,实在是烦了,于是还是移植
  5. * 一个i2c-tools比较好,不用翻那长长内核信息。
  6. *
  7. * 2016-3-31 深圳 南山平山村 曾剑锋
  8. *************************************************************************/
  9.  
  10. 一、参考资料:
  11. . Android 平台下使用 i2c-tools
  12. http://my.oschina.net/luoly/blog/368881
  13. . 树莓派学习笔记——I2C Tools 学习笔记
  14. http://blog.csdn.net/xukai871105/article/details/15029843
  15. . Linux I2C工具查看配置I2C设备
  16. http://blog.chinaunix.net/uid-26895763-id-3478882.html
  17.  
  18. 二、download:
  19. groeck/i2c-tools:
  20. https://github.com/groeck/i2c-tools
  21.  
  22. 三、Decompress
  23. zengjf@zengjf:~$ unzip i2c-tools-master.zip
  24. zengjf@zengjf:~$ mv i2c-tools-master ~/myandroid/external/i2c-tools/
  25.  
  26. 四、cat external/i2c-tools/Android.mk
  27. # external/i2c-tools/Android.mk
  28.  
  29. LOCAL_PATH:= $(call my-dir)
  30.  
  31. include $(CLEAR_VARS)
  32.  
  33. LOCAL_MODULE_TAGS := eng
  34. LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
  35. LOCAL_SRC_FILES :=tools/util.c tools/i2cbusses.c
  36. LOCAL_MODULE := i2c-tools
  37. include $(BUILD_STATIC_LIBRARY)
  38.  
  39. include $(CLEAR_VARS)
  40.  
  41. LOCAL_MODULE_TAGS := eng
  42. LOCAL_SRC_FILES:=tools/i2cdetect.c
  43. LOCAL_MODULE:=i2cdetect
  44. LOCAL_CPPFLAGS += -DANDROID
  45. LOCAL_SHARED_LIBRARIES:=libc
  46. LOCAL_STATIC_LIBRARIES := i2c-tools
  47. LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
  48. include $(BUILD_EXECUTABLE)
  49.  
  50. include $(CLEAR_VARS)
  51.  
  52. LOCAL_MODULE_TAGS := eng
  53. LOCAL_SRC_FILES:=tools/i2cget.c
  54. LOCAL_MODULE:=i2cget
  55. LOCAL_CPPFLAGS += -DANDROID
  56. LOCAL_SHARED_LIBRARIES:=libc
  57. LOCAL_STATIC_LIBRARIES := i2c-tools
  58. LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
  59. include $(BUILD_EXECUTABLE)
  60.  
  61. include $(CLEAR_VARS)
  62.  
  63. LOCAL_MODULE_TAGS := eng
  64. LOCAL_SRC_FILES:=tools/i2cset.c
  65. LOCAL_MODULE:=i2cset
  66. LOCAL_CPPFLAGS += -DANDROID
  67. LOCAL_SHARED_LIBRARIES:=libc
  68. LOCAL_STATIC_LIBRARIES := i2c-tools
  69. LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
  70. include $(BUILD_EXECUTABLE)
  71.  
  72. include $(CLEAR_VARS)
  73.  
  74. LOCAL_MODULE_TAGS := eng
  75. LOCAL_SRC_FILES:=tools/i2cdump.c
  76. LOCAL_MODULE:=i2cdump
  77. LOCAL_CPPFLAGS += -DANDROID
  78. LOCAL_SHARED_LIBRARIES:=libc
  79. LOCAL_STATIC_LIBRARIES := i2c-tools
  80. LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
  81. include $(BUILD_EXECUTABLE)
  82.  
  83. 五、compile error:
  84. . 现象:
  85. ......
  86. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Solarium.ogg:system/media/audio/ringtones/Solarium.ogg ignored.
  87. No private recovery resources for TARGET_DEVICE sabresd_6dq
  88. make: Entering directory `/home/zengjf/myandroid'
  89. target thumb C: i2c-tools <= /home/zengjf/myandroid/external/i2c-tools//lib/smbus.c
  90. target StaticLib: i2c-tools (out/target/product/sabresd_6dq/obj/STATIC_LIBRARIES/i2c-tools_intermediates/i2c-tools.a)
  91. target thumb C: i2cdetect <= /home/zengjf/myandroid/external/i2c-tools/lib/smbus.c
  92. target thumb C: i2cdetect <= /home/zengjf/myandroid/external/i2c-tools/tools/i2cdetect.c
  93. /home/zengjf/myandroid/external/i2c-tools/tools/i2cdetect.c::: error: 'I2C_FUNC_SMBUS_PEC' undeclared here (not in a function)
  94. make: *** [out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdetect_intermediates/tools/i2cdetect.o] Error
  95. make: Leaving directory `/home/zengjf/myandroid'
  96. . 解决办法:
  97. cat external/i2c-tools/include/i2c/smbus.h
  98. .....
  99. /* Compatibility defines 添加宏声明*/
  100. #ifndef I2C_SMBUS_I2C_BLOCK_BROKEN
  101. #define I2C_SMBUS_I2C_BLOCK_BROKEN I2C_SMBUS_I2C_BLOCK_DATA
  102. #endif
  103. #ifndef I2C_FUNC_SMBUS_PEC
  104. #define I2C_FUNC_SMBUS_PEC I2C_FUNC_SMBUS_HWPEC_CALC
  105. #endif
  106.  
  107. extern __s32 i2c_smbus_access(int file, char read_write, __u8 command,
  108. int size, union i2c_smbus_data *data);
  109.  
  110. extern __s32 i2c_smbus_write_quick(int file, __u8 value);
  111. ......
  112. . 正常现象:
  113. No private recovery resources for TARGET_DEVICE sabresd_6dq
  114. make: Entering directory `/home/zengjf/myandroid'
  115. target thumb C: i2cdetect <= /home/zengjf/myandroid/external/i2c-tools/tools/i2cdetect.c
  116. target Executable: i2cdetect (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdetect_intermediates/LINKED/i2cdetect)
  117. target Symbolic: i2cdetect (out/target/product/sabresd_6dq/symbols/system/bin/i2cdetect)
  118. Export includes file: /home/zengjf/myandroid/external/i2c-tools/Android.mk -- out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdetect_intermediates/export_includes
  119. target Strip: i2cdetect (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdetect_intermediates/i2cdetect)
  120. Install: out/target/product/sabresd_6dq/system/bin/i2cdetect
  121. Import includes file: out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cget_intermediates/import_includes
  122. target thumb C: i2cget <= /home/zengjf/myandroid/external/i2c-tools/tools/i2cget.c
  123. target Executable: i2cget (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cget_intermediates/LINKED/i2cget)
  124. target Symbolic: i2cget (out/target/product/sabresd_6dq/symbols/system/bin/i2cget)
  125. Export includes file: /home/zengjf/myandroid/external/i2c-tools/Android.mk -- out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cget_intermediates/export_includes
  126. target Strip: i2cget (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cget_intermediates/i2cget)
  127. Install: out/target/product/sabresd_6dq/system/bin/i2cget
  128. Import includes file: out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cset_intermediates/import_includes
  129. target thumb C: i2cset <= /home/zengjf/myandroid/external/i2c-tools/tools/i2cset.c
  130. target Executable: i2cset (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cset_intermediates/LINKED/i2cset)
  131. target Symbolic: i2cset (out/target/product/sabresd_6dq/symbols/system/bin/i2cset)
  132. Export includes file: /home/zengjf/myandroid/external/i2c-tools/Android.mk -- out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cset_intermediates/export_includes
  133. target Strip: i2cset (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cset_intermediates/i2cset)
  134. Install: out/target/product/sabresd_6dq/system/bin/i2cset
  135. Import includes file: out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdump_intermediates/import_includes
  136. target thumb C: i2cdump <= /home/zengjf/myandroid/external/i2c-tools/tools/i2cdump.c
  137. target Executable: i2cdump (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdump_intermediates/LINKED/i2cdump)
  138. target Symbolic: i2cdump (out/target/product/sabresd_6dq/symbols/system/bin/i2cdump)
  139. Export includes file: /home/zengjf/myandroid/external/i2c-tools/Android.mk -- out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdump_intermediates/export_includes
  140. target Strip: i2cdump (out/target/product/sabresd_6dq/obj/EXECUTABLES/i2cdump_intermediates/i2cdump)
  141. Install: out/target/product/sabresd_6dq/system/bin/i2cdump
  142. make: Leaving directory `/home/zengjf/myandroid'
  143. zengjf@zengjf:~/myandroid$
  144. . adb push <编译出来的可执行程序> /data/local
  145.  
  146. 六、i2cdetect test:
  147. . test1:
  148. |root@android:/data/local # ./i2cdetect -l
  149. i2c- i2c i2c-gpio3 I2C adapter
  150. i2c- i2c imx-i2c I2C adapter
  151. i2c- i2c imx-i2c I2C adapter
  152. i2c- i2c imx-i2c I2C adapter
  153. root@android:/data/local #
  154. . test2:
  155. root@android:/data/local # ./i2cdetect -y -r
  156. a b c d e f
  157. : -- -- -- -- -- -- -- -- -- -- -- -- --
  158. : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  159. : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  160. : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  161. : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  162. : UU -- -- -- -- UU -- -- -- -- -- -- -- -- -- --
  163. : -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
  164. : -- -- -- -- -- -- -- --
  165.  
  166. 七、i2cget test:
  167. |root@android:/data/local # ./i2cget -y 0x08 0x03
  168. Error: Could not set address to 0x08: Device or resource busy
  169. |root@android:/data/local # ./i2cget -f -y 0x08 0x03
  170. 0x21
  171. |root@android:/data/local #

I.MX6 Android i2c-tools porting的更多相关文章

  1. I.MX6 Android U-blox miniPCI 4G porting

    /************************************************************************** * I.MX6 Android U-blox m ...

  2. I.MX6 Android Linux shell MMPF0100 i2c 设置数据

    #!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 设置数据 # 说明: # 本文主要记录通过shell脚本来设置 ...

  3. I.MX6 Android iperf3 porting failed

    /***************************************************************************** * I.MX6 Android iperf ...

  4. I.MX6 Android Linux shell MMPF0100 i2c 获取数据

    #!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 获取数据 # 说明: # 本文主要记录通过shell脚本来获取 ...

  5. 在android下使用i2c tools

    在android使用i2c tools访问i2c,很方便,可以在https://launchpad.net/ubuntu/+source/i2c-tools 下载最新的i2c tools. 把i2c- ...

  6. I.MX6 HUAWEI MU609 3G porting

    /*************************************************************************** * I.MX6 HUAWEI MU609 3G ...

  7. I.MX6 Android 5.1.1 下载、编译

    /************************************************************************* * I.MX6 Android 5.1.1 下载. ...

  8. I.MX6 android mkuserimg.sh

    /************************************************************************** * I.MX6 android mkuserim ...

  9. Android SDK Tools Platform-tools Build-tools

    (1)Android SDK (Android SDK主安装包,包含SDK Manager.AVD Manager.工具包tools,释放后的根文件夹为android-sdk-windows): re ...

随机推荐

  1. python编程语言缩进格式

    python的缩进格式是python语法中最特别的一点,很多已经习惯了其他语言的朋友再去学python的话,开始会觉的不太 习惯. 怎么看怎么都觉的别扭,也有一些朋友因为这个特别的格式与python失 ...

  2. Linux进程间通信IPC学习笔记之有名管道

    基础知识: 有名管道,FIFO先进先出,它是一个单向(半双工)的数据流,不同于管道的是:是最初的Unix IPC形式,可追溯到1973年的Unix第3版.使用其应注意两点: 1)有一个与路径名关联的名 ...

  3. Thinkphp3.2.2的上传问题

    学习了Thinkphp3.2.2的上传,报出了FILE: F:\development\yxk\Cord\Library\Think\Upload.class.php LINE: 257错误 这应该是 ...

  4. ^M的前世今生

    ^M 是ascii中的'\r', 回车符,是16进制的0x0D,8进制的015,十进制的13. 回想计算机发展,旧的打字机使用两个字符来开始一个新行.首先是一个字符命令使打印头移回开始位置(回车),然 ...

  5. C语言标记化结构初始化语法

    C语言标记化结构初始化语法 (designated initializer),而且还是一个ISO标准. #include <stdio.h> #include <stdlib.h&g ...

  6. PostgreSQL+PostGIS的使用 函数清单

    一. PostgreSQL与PostGIS的关系 PostgreSQL 是世界上技术最先进的开源数据库,其前身是1977年一个源于Berkeley名为Ingres的非关系型数据库,其项目领导人为Mic ...

  7. 线形,柱形,条形数据表(百度Echart插件)

    [获取资源]进入官网,    http://echarts.baidu.com/导航,下载,下拉框下载,常用303k.就是这么简单,就个一个js.[项目使用]新建项目,MyChart具体使用的过程中, ...

  8. linux驱动系列之挂载(转)

    转自网页:http://www.cnblogs.com/yeahgis/archive/2012/04/05/2432779.html http://www.linuxso.com/command/c ...

  9. $.post()返回数据正常,但不执行success回调函数

    今天遇到一特郁闷的问题,如题:$.post()返回数据正常,但不执行success回调函数.说它郁闷是因为没毕业之前就遇到过解决了,却没有记录下来,导致卡了一下午. 像这样,post返回数据正常,但却 ...

  10. Generating Huge reports in JasperReports

    There are certain things to care while implementing the Jasper Reports for huge dataset to handle th ...