i2c tool 的使用
1,下载源码:
http://packages.debian.org/search?keywords=i2c-tools
2,解压源码包:
tar -xvf i2c-tools-3.1.0.tar.bz2
2、解压后,可手工编译:
arm-none-linux-gnueabi-gcc -O2 -I../include -c i2cdetect.c -static -o i2cdetect.o
arm-none-linux-gnueabi-gcc -O2 -I../include -c i2cbusses.c -static -o i2cbusses.o
arm-none-linux-gnueabi-gcc -O2 -I../include i2cdetect.o i2cbusses.o -static -o i2cdetect
其它工具编译同上,一定要加-static参数,要不然在真板上是跑不起来的
也可以修改Makefile文件,选择arm的编译器,如下
CC := arm_1103_le-gcc
3、在tools的Module.mk文件中编译选项中添加-static静态编译选项,如下
$(TOOLS_DIR)/i2cdetect: $(TOOLS_DIR)/i2cdetect.o $(TOOLS_DIR)/i2cbusses.o
$(CC) $(LDFLAGS) -static -o $@ $^
$(TOOLS_DIR)/i2cdump: $(TOOLS_DIR)/i2cdump.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o
$(CC) $(LDFLAGS) -static -o $@ $^
$(TOOLS_DIR)/i2cset: $(TOOLS_DIR)/i2cset.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o
$(CC) $(LDFLAGS) -static -o $@ $^
$(TOOLS_DIR)/i2cget: $(TOOLS_DIR)/i2cget.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o
$(CC) $(LDFLAGS) -static -o $@ $^
#
# Objects
#
$(TOOLS_DIR)/i2cdetect.o: $(TOOLS_DIR)/i2cdetect.c $(TOOLS_DIR)/i2cbusses.h $(INCLUDE_DIR)/linux/i2c-dev.h
$(CC) $(CFLAGS) $(TOOLS_CFLAGS) -c $< -static -o $@
$(TOOLS_DIR)/i2cdump.o: $(TOOLS_DIR)/i2cdump.c $(TOOLS_DIR)/i2cbusses.h $(TOOLS_DIR)/util.h $(INCLUDE_DIR)/linux/i2c-dev.h
$(CC) $(CFLAGS) $(TOOLS_CFLAGS) -c $< -static -o $@
$(TOOLS_DIR)/i2cset.o: $(TOOLS_DIR)/i2cset.c $(TOOLS_DIR)/i2cbusses.h $(TOOLS_DIR)/util.h $(INCLUDE_DIR)/linux/i2c-dev.h
$(CC) $(CFLAGS) $(TOOLS_CFLAGS) -c $< -static -o $@
$(TOOLS_DIR)/i2cget.o: $(TOOLS_DIR)/i2cget.c $(TOOLS_DIR)/i2cbusses.h $(TOOLS_DIR)/util.h $(INCLUDE_DIR)/linux/i2c-dev.h
$(CC) $(CFLAGS) $(TOOLS_CFLAGS) -c $< -static -o $@
$(TOOLS_DIR)/i2cbusses.o: $(TOOLS_DIR)/i2cbusses.c $(TOOLS_DIR)/i2cbusses.h $(INCLUDE_DIR)/linux/i2c-dev.h
$(CC) $(CFLAGS) $(TOOLS_CFLAGS) -c $< -static -o $@
$(TOOLS_DIR)/util.o: $(TOOLS_DIR)/util.c $(TOOLS_DIR)/util.h
$(CC) $(CFLAGS) $(TOOLS_CFLAGS) -c $< -static -o $@
#
# Commands
#
4、将在tools目录下生成i2cdetect,i2cdump,i2cset,i2cget等命令工具拷贝到android系统的目录/data/local/下
5、执行./i2cget -f -y 0 0x40 0x08
此句的意思是将i2c0上的从地址为0x40设备的地址为0x08的寄存器的值读出来。
执行./i2cset -f -y 0 0x40 0x09 0x80
此句意思为将i2c0上的从地址为0x40设备的地址为0x09的寄存器的值设为0x80.
注意:在linux下使用i2c-tools的方法与之差不多,编译时不需要静态编译,即不加-static即可,运行时直接如下
i2cset -f -y 0 0x40 0x09 0x80
串口端执行,如图: