需求调用的模块
本文所运用的I/O主要有如下三个部分
I2C接口
UART接口
USB接口
需求运用的硬件外设如下
Grove Digital Light Sensor
上文中说到的UART转USB1.8v线
内核的定制
首要咱们需求对内核进行从头装备,然后增加咱们的设备驱动
从头编译内核
在96board官网下载咱们的最新Android 5.1版别
官方供给的内核现在默许无法辨认咱们的I2C光传感器,因而咱们需求在内核中从头编译并增加驱动
首要在官方网站下载Linux Android的BSP包,将其clone并编译
编译内核指令
首要切换到源目录下
进入build目录
Lunch msm8916_64-userdebug
发动kernel config:履行指令
Make-j8 kernelconfig
注:j8为电脑中心数目,取决于咱们进行编译电脑的装备
接下来咱们就能够在界面上看到如下图所示的界面了:
在kernel编译选项中挑选TAOS TSL2560,TSL2562 and TSL2563 ambient light sensor
保存并从kernel configmenu中退出
假如咱们在设备上增加了一个新驱动,那么咱们需求在Makefile中做出更改,并在kernel/driovers中的Kconfig文件增加正确的路劲,然后能够追溯到正确的设备驱动Kconfig文件。 该过程能够在kernel config 中增加新的进口,然后能够在config界面中进行挑选,驱动文件需求增加到相同的目录中,与Kconfig文件以及Makefile文件相同
翻开/kernel/arch/amd64/boot/dts/qcom/apq8016-sb.dtsi并增加如下的代码
soc {
i2c@78b6000 {
tsl2561@29 { /* Grove digital light sensor */
compaTIble = “taos,tsl2561”;
reg = 0x29>;
}
保存文件并运转如下指令:
Make –j8 booTImage
Boot.img将会在/out/target/product/msm8916_64/boot.img
78b6000是BLSP的地址,用于装备I2C通讯,咱们将此传感器衔接到I2C-0设备上
将kernel烧写到DragonBoard 410c上
在上电时按住按钮音量下键,咱们能够将410c设置为fastboot形式。一旦进入fastboot形式,咱们就能够运用指令即将boot.img烧写到410c中
fastboot flash boot boot.img
将DragonBoard 410c上的J8引脚衔接到PCA9306传感器中
按如下衔接方法:
PIN #37 VREF2 of PCA9306 VCC of grove light sensor
PIN #39 “-“on Bread Board
PIN #35 VREF1 of PCA9306
PIN #15 (I2C0_SCL) SCL1 of PCA9306
PIN #17 (I2C0_SDA) SDA1 of PCA9306
PCA9306 GND to “-“on Bread Board
VREF2 of PCA9306 VCC of Digital Light Sensor
SCL2 of PCA9306 SCL of Digital Light Sensor
SDA2 of PCA9306 SDA of Digital Light Sensor
“-“ from Bread Board GND of Digital Light Senso
衔接UART转USB线到电脑上
PIN #11 UART1_TX
PIN #13 UART1_RX
PIN #1 GND
参阅我的文章进行衔接
测验硬件
依据如上的操作,咱们现已能够在发动后检测到设备了
首要在kernel的trace中找到如下信息:
tsl2563 0-0029: model 5, rev. 0
假如你没有USB转UART,咱们能够经过ADB进行登录
adb shell
su
dmesg
跟着shell发动,咱们进入到目录/sys/bus/i2c/devices/i2c-0下
咱们能够看到设备0-0029,0x29表明的是传感器的I2C地址
cd /sys/bus/i2c/devices/i2c-0/0-0029/iio:device0
cat in_illuminance0_input
接下来咱们就能看到作为输出的一个整数值,不断地遮挡或打光到传感器上,并履行 cat in_illuminance0_input 指令,咱们就能够看到一个不断改变的光流值了。