MTK android平台添加读写i2c设备工具

调试驱动程序的时候,我们很多时候需要读写i2c设备,如果能够有一个通用的i2c读写工具,就方便多了。
在ubuntu的时候,我使用一个i2c-tool的工具,http://dl.lm-sensors.org/i2c-tools/releases/,这个网址可以下载。
在ubuntu下面需要两个动作,第一个,重新加入内核,需要打开intel的I2c接口,第二,编译这个源码,就在tools目录下生成几个i2c工具。
同样,我们也可以编译成android版本,只需要修改Makefile中间的CC编译器的定义就可以,是的CC指向你的android编译工具,这个工具是安装NDK时候带的。例如我的系统做如下修改
==========================================================
# I2C tools for Linux
#
# Copyright (C) 2007-2012  Jean Delvare <[email protected]>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

DESTDIR    =
prefix    = /usr/local
bindir    = $(prefix)/bin
sbindir    = $(prefix)/sbin
mandir    = $(prefix)/share/man
man8dir    = $(mandir)/man8
incdir    = $(prefix)/include

INSTALL        := install
INSTALL_DATA    := $(INSTALL) -m 644
INSTALL_DIR    := $(INSTALL) -m 755 -d
INSTALL_PROGRAM    := $(INSTALL) -m 755
RM        := rm -f

CC = /opt/android-toolchain/android-14/bin/arm-linux-androideabi-gcc#gcc

CFLAGS    ?= -O2
# When debugging, use the following instead
#CFLAGS    := -O -g
CFLAGS    += -Wall

KERNELVERSION    := $(shell uname -r)

.PHONY: all strip clean install uninstall

all:

EXTRA    :=
#EXTRA    += py-smbus
SRCDIRS    := include eeprom stub tools $(EXTRA)
include $(SRCDIRS:%=%/Module.mk)
============================================================================================
修改之后,执行make,就可以编译出几个android版本工具
执行file,看看文件属性
 file i2cdetect
i2cdetect: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), not stripped

确认编译的android版本。
-----------------------------------------------------------------------------------------
如果使用我们最好push到/system/bin执行如下指令
adb remount
adb push i2cdetect /system/bin
adb push i2cset /system/bin
adb push i2cget /system/bin
adb shell
cd system/bin
chmod 777 i2cdect
chmod 777 i2cset
chmod 777 i2cget
---------------------------------------------------------------------------
当然,对于android,我们需要同样打开配置文件,这样才能在/dev下打开i2c控制器的接口。
对于mtk系统,需要在./alps/mediatek/config/mt6572/autoconfig/kconfig/platform增加CONFIG_I2C_CHARDEV=y,然后重新编译之后就可以了。
然后执行i2cdetect 1,意思是扫描/dev/i2c-1后面的设备
root@android:/ # i2cdetect 1                                                   
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: UU -- -- -- -- UU -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --            
--------------------------------------------------------------------------
可以看到,i2c-1,后面挂了三个设备
38,50 55

使用最多的工具:
i2cset
Usage: i2cset [-f] [-y] [-m MASK] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77)
  MODE is one of:
    c (byte, no value)
    b (byte data, default)
    w (word data)
    i (I2C block data)
    s (SMBus block data)
    Append p for SMBus PEC

你可能感兴趣的:(MTK android平台添加读写i2c设备工具)