sr501是一种人体红外模块,能够检测人或动物发射的红外线输出电信号,广泛应用于各种自动化控制装置中。在百问网出品的100ASK_IMX6ULLPro版上添加这个设备的驱动。
在系统中先添加设备的硬件信息就要修改设备树。设备树用来给内核里的驱动程序,指定硬件的信息。
添加结点如下:
sr501{
compatible = "100ask,sr501";
gpios = <&gpio4 19 GPIO_ACTIVE_HIGH>;
};
这个节点涉及两个方面:
(1)compatible属性
根节点下含有compatile属性的子节点才会被转换为platform_device。
(2)GPIO信息
在设备树中指定:添加”[name]-gpios”属性,指定使用的是哪一个GPIO Controller里的哪一个引脚,还有其他Flag信息,比如GPIO_ACTIVE_LOW等。
使用引脚,一般还会使用Pinctrl来制定引脚功能。但是此设备只是使用引脚的输入功能,而Pinctrl系统默认将引脚配置为GPIO,所以在这个设备节点中可以省略对Pinctrl的配置。设备节点放置在设备树根节点位置。
编写完成后生成设备树文件,使用如下命令,更新开发板设备树。
[root@100ask_imx6ull:~]# cp /mnt/zImage /boot
[root@100ask_imx6ull:~]# cp /mnt/100ask_imx6ull-14x14.dtb /boot/
[root@100ask_imx6ull:~]# sync
更新时要注意:
(1)一定要使用sync命令,由于文件内容比较大,不使用sync命令直接启动会导致系统文件不能及时刷写到flash中。
(2)一定要先更新zImage,再更新dtb文件,否则开发板会报错也无法启动。
重启以后,在下图的文件夹中发现sr501节点,说明已经成功添加了对应的设备
下一节,介绍驱动代码的调试,敬请期待。