中级会员
- 积分
- 254
- 金钱
- 254
- 注册时间
- 2020-10-19
- 在线时间
- 54 小时
|
3金钱
开发板型号:正点原子Zynq最小系统板。根据教程完成了PS KEY的中断例程。现在改为AXIO GPIO软核引出的引脚绑定PL KEY尝试,代码基本上没有什么区别。我的设备树如下:
- ///include/ "system-conf.dtsi"
- #include <dt-bindings/gpio/gpio.h>
- #include <dt-bindings/input/input.h>
- #include <dt-bindings/media/xilinx-vip.h>
- #include <dt-bindings/phy/phy.h>
- #include <dt-bindings/interrupt-controller/irq.h>
- / {
- chosen {
- bootargs = "console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait";
- stdout-path = "serial0:115200n8";
- };
- key {
- compatible = "alientek,key";
- status = "okay";
- key-gpio = <&axi_gpio_0 0 0 GPIO_ACTIVE_LOW>;
- interrupt-parent = <&axi_gpio_0>;
- interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
- };
- };
复制代码 程序中还是用的plkey.irq_num = irq_of_parse_and_map(nd, 0);但是在加载驱动模块时,就显示报错信息跟中断号相关,分配的是49,但是这个49已经被系统给分配了。interrupts-cells是2,应该是GPIO编号和中断标志,所以我写0应该没问题才对呀。
后来获取中断号的函数我换成了gpio_to_irq,然后去掉了interrutps属性。并且在驱动程序中直接指定了中断标志,没再采用[color=var(--code-normal)]irq_get_trigger_type获得。并打印出了GPIO编号和中断号,分别是1023和49,结果又和系统分配的冲突了。请问这是什么原因?
|
|