【msm8953】配置和使用spi i2c + 编译spidev_test

一 丶配置SPI和I2C        

msm8953使用spi和i2c主要是配置它的dtb,一些以msm8953为基础的平台上已经为你配置好了I2C和spi,你只需要使能就行了。没有配置的,需要自己去配置,下面提供两个参考,如何配置msm8953的SPI和DTB:

https://blog.csdn.net/weixin_36274916/article/details/52703604 

https://blog.csdn.net/xuecz1230/article/details/92809340#comments

    注: msm8953.dtsi (添加节点)   msm8953-pinctl.dtsi(引脚配置),它们位于 KERNEL/arch/arm64/boot/dts/qcom中。KERNEL为内核根目录。

    一些以msm8953为基础的平台已经配置好了SPI和I2C,但与上面两篇文章讲的有一点不同的是自己节点信息上多了“status="disabled"”,也就是它并没有使能,因为I2C和SPI有引脚复用,而dtb里面又配置了,所以默认不使能。所以此平台提供了一个使能的dtsi,名为msm8953-mtp.dtsi。例如我使能spi6,

    &spi_6{

               status = "ok"

};

这样就能避免引脚冲突,在原理图中可以知道,spi3和i2c3就引脚冲突了,但在msm8953-mtp.dtsi里面就只使能了i2c3。

经过上述设置,你就可以在/sys/class/spi_master中看到如下:

【msm8953】配置和使用spi i2c + 编译spidev_test

二丶使用SPI和I2C

    spi和i2c都可以通过write/read来操作,那前提是/dev下得有相应的节点。在上节配置后,在msm8953-mtp.dtsi中使能了,在/dev下面会出现i2c设备节点,比如:

【msm8953】配置和使用spi i2c + 编译spidev_test

现在我们可以直接open("/dev/i2c-2")来对它进行操作了。但是经过上述配置,在/dev下面并不会出现spi设备节点,可以:

① 修改msmcortex_defconfig:将 SPIDEV选项 = y(原先是m)

② 修改msm8953-mtp.dtsi :

&spi6{

               status = "ok";

spidev@0{

               compatible = "spidev";

               reg = <0>;

               spi-max-frequency = <5000000>;

               #address-cells = <1>;

               #size-cells = <1>;

};

};

这样,就在/dev下产生spi节点了:

【msm8953】配置和使用spi i2c + 编译spidev_test

接下来我们就可以通过open,write,read函数来操作它们了!

三丶使用spidev_test测试spi

位置:KERNEL/Documentation/spi/spidev_test.c

① 进入KERNEL/Documentation/spi,修改Makefile

hostprogs-y := spidev_test

always := $(hostprogs-y)

HOSTCFLAGS_spidev_test.o += -I$(objtree)/usr/include

② 添加Android.mk:touch Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES += spidev_test.c
LOCAL_MODULE := spidev_test

LOCAL_LDFLAGS += -L$(LOCAL_PATH)
LOCAL_LDLIBS := -llog
include $(BUILD_EXECUTABLE)

③ 进入android源码根目录:

source build/envsetup.sh
lunch msm8953_64-userdebug

返回KERNEL/Documentation/spi,执行mm

这样spidev_test就生成在system/bin目录下了。

注意:在使用mm命令前要确保整个系统已经编译过了:make -j8

上一篇:水晶报表 VS2010 应用


下一篇:简单了解REST风格设计