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. Eclipse中propedit插件安装(解决property中文问题)

    Eclipse Help--Install New Software... Add... propedit   -- http://propedit.sourceforge.jp/eclipse/up ...

  2. ENVI中利用polygon掩膜修改类到指定类

    overlay——classification——制定分类的图像 edit——polygon delete from class(选择这个掩膜模式) edit——set delete class va ...

  3. 第1章 Git的版本控制之道

    版本控制系统(Version Control System,VCS)可以帮助我们记录和跟踪项目中各文件内容的修改变化. 1.1 版本库 版本库(Repository)是版本控制系统用来存储所有历史数据 ...

  4. IOS调用相机和相册时无法显示中文

    调用系统相册.相机发现是英文的系统相簿界面后标题显示“photos”,但是手机语言已经设置显示中文 需要在info.plist做如下设置 info.plist里面添加 Localizedresourc ...

  5. html 设置Select options值进行绑定

    <select id="cdms"> <option value="">请选择...</option> <option ...

  6. java对象数组

    问题描述:     java 对象数组的使用 问题解决: 数组元素可以是任何类型(只要所有元素具有相同的类型) 数组元素可以是基本数据类型 数组元素也可以是类对象,称这样的数组为对象数组.在这种情况下 ...

  7. CSS的定位属性实现text-shadow属性的文本下产生阴影效果

    只要先理解text-shadow的原理,就能用定位元素进行效果的模仿. text-shadow: h-shadiv v-shadov blur color h-shadv为文本水平移动的距离,正值相对 ...

  8. javascript中跨源资源共享

    来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(十) 通过XHR实现Ajax通信的一个主要限制,来源于跨域安全策略.默认情况下,XHR对 ...

  9. HDU1465+递推

    经典的信封装信问题 f[ n ]  = ( n-1 ) * ( f[ n-1 ]+f[ n-2 ] ) #include<stdio.h> #include<string.h> ...

  10. 【疯狂Java讲义学习笔记】【数据类型与运算符】

    [学习笔记]1.8bit = 1byte,4byte = 1word.Java中的整型数据有byte(1字节),short(2字节),int(4字节),long(8字节).Java中的浮点数据有flo ...