嵌入式开发记录-day40 在设备树中增加设备节点
1、设备节点查询
查询设备树上的设备节点:启动开发板后,在 /proc/device-tree下,这里有节点,表明有节点
查询平台文件下的设备节点:在/sys/devices/platform/目录下有所有设备node的信息,--这里有表明设备注册了
## 有设备注册,最后驱动才能进入probe
2、在设备树根节点下增加节点 vim /arch/arm/boot/dts/exynos4412-itop-elite.dts
leds_test_node:leds_test_node { compatible = "leds_test"; // 根据这个节点会不会进入probe里面 status = "disabled"; // 在/proc/device-tree目录下有设备信息,在platform下没有信息 // status = "okay"; };
// 根节点之后 &adc之前增加 几点说明 &leds_test_node { // 引用前面某一个节点的属性,并在这里修改属性、状态; status = "okay"; };
编译设备树 ./build_kernel.sh,生成设备树镜像目录在 arch/arm/boot/dts/exynos4412-itop-elite.dtb,并烧写
3、查询命令:
1、查询设备树根节点的compatible属性 cat /proc/device-tree/compatible ---> topeet,itop4412-elitesamsung,exynos4412samsung,exynos4
ls /proc/device_tree 查看所有节点
查看leds_test_node的compatible属性:cat /proc/device-tree/leds_test_node/compatible --->leds_test_node
cat /proc/device-tree/leds_test_node/status ---》okay
cat /sys/devices/platform/leds_test_node/of_node/compatible ---> leds_test // 可以查询到这个属性,所以驱动可以进入到probe中,当然其他的属性也可以查到
cat /sys/devices/platform/leds_test_node/of_node/name ---> leds_test_node
4、设备树下节点leds_test_node驱动测试 可以进入probe
[root@iTOP-4412]# mkdir /lib/modules // 发现卸载模块的时候没有 无法卸载,缺少文件夹,建立文件夹
[root@iTOP-4412]# rmmod itop4412_register_dev_drv
rmmod: can't change directory to '4.14.2': No such file or directory
[root@iTOP-4412]# mkdir /lib/modules/4.14.2
[root@iTOP-4412]# rmmod itop4412_register_dev_drv
[ 221.804041] Goodbye, curel world
[ 221.806230] Goodbye, curel world, this is remove
[root@iTOP-4412]# insmod itop4412_register_dev_drv.ko
[ 229.532540] Hello, world
[ 229.533953] probe init
[root@iTOP-4412]# rmmod itop4412_register_dev_drv.ko
5、makefile说明下,
#!/bin/bash export ARCH=arm // 在这里指定平台arm obj-m += itop4412_register_dev_drv.o KDIR := /home/topeet/tree-4412/itop4412_kernel_4_14_2_bsp/linux-4.14.2_iTop-4412_scp #KDIR := /home/topeet/tree-4412/itop4412_kernel_4_14_2_bsp/linux-4.14.2_iTop-4412_scp PWD ?= $(shell pwd) all: make -C $(KDIR) M=$(PWD) modules clean: rm *.ko *.o *.mod.c *.order *.symvers

浙公网安备 33010602011771号