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 ...
随机推荐
- Eclipse中propedit插件安装(解决property中文问题)
Eclipse Help--Install New Software... Add... propedit -- http://propedit.sourceforge.jp/eclipse/up ...
- ENVI中利用polygon掩膜修改类到指定类
overlay——classification——制定分类的图像 edit——polygon delete from class(选择这个掩膜模式) edit——set delete class va ...
- 第1章 Git的版本控制之道
版本控制系统(Version Control System,VCS)可以帮助我们记录和跟踪项目中各文件内容的修改变化. 1.1 版本库 版本库(Repository)是版本控制系统用来存储所有历史数据 ...
- IOS调用相机和相册时无法显示中文
调用系统相册.相机发现是英文的系统相簿界面后标题显示“photos”,但是手机语言已经设置显示中文 需要在info.plist做如下设置 info.plist里面添加 Localizedresourc ...
- html 设置Select options值进行绑定
<select id="cdms"> <option value="">请选择...</option> <option ...
- java对象数组
问题描述: java 对象数组的使用 问题解决: 数组元素可以是任何类型(只要所有元素具有相同的类型) 数组元素可以是基本数据类型 数组元素也可以是类对象,称这样的数组为对象数组.在这种情况下 ...
- CSS的定位属性实现text-shadow属性的文本下产生阴影效果
只要先理解text-shadow的原理,就能用定位元素进行效果的模仿. text-shadow: h-shadiv v-shadov blur color h-shadv为文本水平移动的距离,正值相对 ...
- javascript中跨源资源共享
来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(十) 通过XHR实现Ajax通信的一个主要限制,来源于跨域安全策略.默认情况下,XHR对 ...
- HDU1465+递推
经典的信封装信问题 f[ n ] = ( n-1 ) * ( f[ n-1 ]+f[ n-2 ] ) #include<stdio.h> #include<string.h> ...
- 【疯狂Java讲义学习笔记】【数据类型与运算符】
[学习笔记]1.8bit = 1byte,4byte = 1word.Java中的整型数据有byte(1字节),short(2字节),int(4字节),long(8字节).Java中的浮点数据有flo ...