am335x增加按键:
修改dts
编译成dtb
替换sd卡里的dtb文件烧写系统
设备节点 例子参考https://blog.csdn.net/weixin_33962923/article/details/85783144
uboot 查看dts文件:
fdt addr 88000000
fdt print
fdt head 查看头
查看系统下面有哪些设备树节点:
# ls /sys/firmware
devicetree fdt
查看节点和节点名字 标签等:
cd /sys/fireware/base/
ls 可以看到多个节点。一个节点对应一个文件夹。
# ./button_test /dev/led0 读按键
定义
G PIO Controller 是芯片厂家的事,我们怎么引用某个引脚呢 ?在自己的设备节点中使用属性
"[< name>--] gpios",示例如下
gpios=<&gpio5 3 GPIO_ACTIVE_LOW>
或者 reset-gpios=<&gpio5 3 GPIO_ACTIVE_LOW>
同级别的设备树下(相同级别的子节点)节点名要唯一,也就是同级别的子节点的节点名可以相同,但是要求 “单元 地址”不同。
比如
led@0 {
compatible = "leddrv";
pin = <GROUP_PIN(3, 1)>;
led@1 {
compatible = "leddrv";
pin = <GROUP_PIN(5, 8)>;
如何查看 input/event 下面的设备。
cat /proc/bus/input/devices
例如
# cat /proc/bus/input/devices
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="mykeys@0"
P: Phys=gpio-keys/input0
S: Sysfs=/devices/platform/mykeys@0/input/input0
U: Uniq=
H: Handlers=kbd event0
B: PROP=0
B: EV=100003
B: KEY=80000 0 0 0
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="ti-tsc"
P: Phys=
S: Sysfs=/devices/platform/ocp/44e0d000.tscadc/TI-am335x-tsc/input/input1
U: Uniq=
H: Handlers=mouse0 event1
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003
可以看出 mykeys@0 在input0下面
按键dts配置
设备树节点
-
gpio_keys: mykeys@0 {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
autorepeat; //重复上报
switch@1 {
label = "reset_to_factory"; //恢复出厂设置
linux,code = <115>;
gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
gpio-key,wakeup;
};
} -
pinctrl节点
-
pinctrl-names = "default";
pinctrl-0 = <&gpio_keys_pins>;
gpio_keys_pins: gpio_keys_pins {
pinctrl-single,pins = <
0x21c ( PIN_INPUT | MUX_MODE7 ) /* (F16) USB0_DRVVBUS.gpio0[18] */
>;
};