This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/PROCESSOR-SDK-DRA7X:要求校样中断配置

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/607361/linux-processor-sdk-dra7x-ask-to-proof-interrupt-configuration

器件型号:PROCESSOR-SDK-DRA7X

工具/软件:Linux

Hallo、

我已将器件配置为使用中断、请您验证我的配置。 我是这方面的新手。

在电路板原理图 I 中、要使用的 GPIO 是 GP6[20]。 那么、我认为这个 GPIO 是6x32+20 = 212、对吧?

Devcie 树:(器件的节点)

qca7000@0{
compatible ="QCA、qca7000";
reg =<0>;
interrupt-parent =<&GPIO6>;
interrupts =<20 1>;
spi-cpha;
SPI-cpol;
SPI-max-frequency =<8000000>;
local-mac-address =[ FA DB 12 79 8C 9D ];
/* QCA、legace-mode;*/
}; 

该器件位于 SPI1的 CS0上。 SPI1正常工作。 我通过连接 MISO 和 MOSI 使用 spidev_test 对此进行了测试。

器件树中的中断配置是否正确?

CAT /proc/interrupts:(eth2是上述器件)

223: 876 0 4805d000.GPIO 20边缘 ETH2

这是 GPIO 组:

GPIO6:GPIO@4805d000{
compatible ="ti、OMAP4-GPIO";
reg =<0x4805d000 0x200>;
interrupts = ;
ti、hwmods ="gpio6";
gpio-controller;
#gpio-cells =<2>;
中断控制器;
#interrupt-cells =<2>;
}; 

所以。 在我看来、中断配置正确、对吧?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    配置似乎正确。 您还可以通过在/sys/kernel/debug/gpio (cat /sys/kernel/debug/gpio)上执行 cat 来检查、它还应显示配置为 IRQ 的 GPIO 引脚。
    要验证的另一件事是检查 GP6[20]的引脚多路复用器是否正确配置。

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hallo、

    GPIO-212在/sys/kernel/debug/gpio.中不起作用 因此、我认为我必须对该引脚进行引脚多路复用。 本文档(http://www.ti.com/lit/ug/sprui50/sprui50.pdf)

    第28页最后一列中的说明:Xref_CLK3 - GPIO6_20 -(C23)。 因此、我认为我必须多路复用该引脚。 我还没有使用 Pad 配置工具。 我能否在没有该引脚的情况下多路复用该引脚? 以及如何实现? 我正在使用设备树 dra7.dtsi。

    大家好

    编辑:

    我可以在 u-boot 中配置引脚多路复用器吗? 那么、u-boot 负责引脚多路复用?

    我认为在 board/ti/dra7xx/mux_data.h 中有正确的引脚:

    {XREF_CLK3、(M14 | PIN_INPUT)}、/* xref_clk3.GPIO6_20 * 

    它在 arch/arm/include/asm/arch-omAP4/mux_dra7xx.h 中定义

    中断将在上升沿触发。 那么、我必须设置 PIN_INPUT_PULLUP?

    要使用 GPIO6_20、我必须在这里设置哪种模式? 有 M0 - M15模式。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    对于 GPIO6_20、它需要是在 uboot 中设置正确的 M14、如果 PIN_INPUT 不起作用、请尝试使用 PIN_INPUT、将其更改为 PIN_INPUT_PULLUP。

    cat /sys/kernel/debug/gpio 的输出是什么? QCA、qca7000模块是否已加载? 您是否遇到任何错误?

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="Prabhakar LAD "]对于 GPIO6_20、它需要是 M14、在 uboot 中设置正确、如果 PIN_INPUT 不起作用、则尝试使用 PIN_INPUT。将其更改为 PIN_INPUT_PULLUGER."

    两者都不起作用、您确定 M14是对的吗? 我认为 M14适用于 xref_clk3。 是否有有关这些模式的文档?

    [引用 user="Prabhakar LAD ]cat /sys/kernel/debug/gpio 的输出是什么? QCA、qca7000模块是否已加载? 您是否收到任何错误?

    /sys/kernel/debug/gpio

    GPIO 0-31、platform/4ae1000.gpio、gpio:
    
    gpio32-63、platform/480550.gpio、gpio:
    
    gpio64-95、 Platform/48057000.GPIO、GPIO:
    
    GPIO 96-127、platform/480590.gpio、GPIO:
    
    GPIO 128-159、platform/4805b000.gpio、 GPIO:
    GPIO-136 ( |vmmcwl_fixed ) 输出低
    
    GPIO 160-191、platform/4805d000.gpio、gpio:
    gpio-161 ( |RADIO_RST) 你(们)好
    GPIO-187 ( |CD) 在低 IRQ
    
    GPIO 192-223、platform/480510.GPIO 中、GPIO:
    GPIO-203 ( |VTT_FIXED) 你(们)好
    GPIO-204 ( |HDMI_HPD) 在 lo IRQ
    
    GPIO 224-255、platform/480530.gpio 中、gpio:
    
    gpio462-477、i2c/1-0026、pcf8575、 CAN 睡眠:
    GPIO-463 ( |vin6_SEL_s0) 输出低
    GPIO-466 ( |HDMI_CT_CP_HPD) 你(们)好
    GPIO-467 ( |HDMI_ls OE) 输出低
    
    GPIO 478-493、i2c/0-0021、pcf8575、可以休眠:
    GPIO-479 ( |id) 在高 IRQ
    GPIO-480 ( |id) 在高 IRQ
    GPIO-483 ( |EVM_3V3_SD) 输出高
    
    电平 GPIO 494-509、i2c/0-0020、pcf8575、可以休眠:
    GPIO-496 ( |btnUser1) 在高 IRQ
    GPIO-497 ( |btnUser2) 在高 IRQ
    GPIO-498 ( ?) 你(们)好
    GPIO-499 ( ?) 你(们)好
    GPIO-500 ( ?) 你(们)好
    GPIO-501 ( ?) 输出高
    
    电流 GPIO 510-511、platform/50000000。GPMC、OMAP-GPMC:
    

    我认为必须有 GPIO-212才能出现在高 IRQ 中、对吧?

    模块已加载:

    dmesg | grep QCA

    [6.226432] qcaspi spi1.0:ver=0.2.7-i、clkspeed=80000、burg_len=5000、可插拔=1 

    lsmod | grep QCA

    qcaspi 14970 0 

    dmesg 中有错误、但我认为 IRQ 并不是独立的

    dmesg | grep err

    [0.691112] OMAP4_SRAM_INIT:无法分配处理勘误表所需的 SRAM I688
    [0.698806] OMAP4_SRAM_INIT:无法获取处理勘误表所需的 SRAM 池 I688
    [0.982615] pcf857x:3-0021的探头失败、错误-121
    [1.346168] pcieport
    es 0000:00:00.0:pcf3771通过 PCIe DME 发送中断信号 7-002c 探测器失败,错误-5
    [1.768762] ov1063x:1-0037的探测器失败,错误-121[5.902328]
    proproc0:针对 dra7-ipu1-fw.xem4的直接固件加载失败,错误-2
    [6.052063] remote1:针对 remove7-ipe2
    的直接固件加载失败,错误6.632-remove2: dra7-dsp1-fw.xe66的直接固件加载失败、出现错误-2
    [6.295772] remoteproc3:dra7-dsp2-fw.xe66的直接固件加载失败、出现错误-2 

    我还在内核中禁用了 CONFIG_OMAP_MUX、以便从 u-boot 获取 pinmux。

    U-Boot 对我的板说的就是这样:

    CPU:DRA752-GP ES2.0
    模型:TI DRA742
    板:DRA74x EVM 修订版 H.0
    DRAM:4 GiB
    MMC:OMAP SD/MMC:0、OMAP SD/MMC:1
    SCSI:SATA link 0超时。
    AHCI 0001.0300 32插槽1端口3 Gbps 0x1不支持 SATA 模式
    标志:64位 NCQ stag pm led clo only pmp pio padfamic part ccc apst 

    我认为我的文件是正确的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    1]参考[1]第93页、M14选择 GPIO6_20。 我没有太多尝试找到 pinmux 的基址、您可以使用 devmem2
    并检查该地址的值。

    2]不需要 GPIO-180、因为 GPIO6的基址是160、GPIO6_20将= 160 + 20 = 180

    示例:
    GPIO 160-191、platform/4805d000.gpio、GPIO:
    GPIO-161 ( |RADIO_RST) 你(们)好
    GPIO-180 ( |xx) 低 IRQ
    GPIO-187 ( |CD) 低 IRQ

    3]您能否对引脚 GPIO6_20进行示波? 如果是、请注释以下 DT 节点

    qca7000@0{
    兼容="QCA、qca7000";
    reg =<0>;
    interrupt-parent =<&GPIO6>;
    中断=<20 1>;
    spi-cpha;
    SPI-cpol;
    SPI-max-frequency =<8000000>;
    local-mac-address =[ FA DB 12 79 8C 9D ];
    /*QCA、传统模式;*/
    };
    然后按照[2]将其设置为输出、并更改1/0中的值、然后查看是否需要结果
    获取的信息

    [1] www.ti.com/.../dra746.pdf
    [2] elinux.org/GPIO

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hallo、

    使用 QCA-Node 通过 sysfs 手动处理 GPIO:

    root@dra7xx-EVM:/sys/class/gpio echo 180 >> export
    root@dra7xx-EVM:/sys/class/gpio 在
    
    root@dra7xx-EVM 中的 cat gpio180/方向:/sys/class/gpio echo out >> gpio180/方向
    [ 45.843756] GPIO-180 (sysfs):_gpiod_direction out_output_raw:尝试将输出设置为输出时出错:
    与输出相关联:短接 

    CAT /sys/kernel/debug/gpio

    GPIO 160-191、platform/4805d000.gpio、gpio:
    gpio-161 ( |RADIO_RST) 你(们)好
    GPIO-180 ( |sysfs) 在高 IRQ
    GPIO-187 ( |CD) 低 IRQ 

    IRQ 在那里、但它是高电位、不是低电位、并且不由驱动程序设置。

    通过不带 QCA-Node 的 sysfs 手动处理 GPIO:

    我可以在没有错误的情况下设置所有内容、并且可以将3、3V 放在高电平、0V 放在低电平。

    之后、我尝试在 board/ti/dra7xx/mux_data.h 中的 U-Boot 源中将 GPIO 默认方向从"in"设置为"out"

    {XREF_CLK3、{M14 | PIN_OUTPUT}}至{XREF_CLK3、{M14 | PIN_INPUT}

    证明我位于正确的文件中。 在我看来、如果我激活 GPIO 180 (echo 180 >>/sys/class/gpio/export)、方向必须更改为"out"、但仍然是"in"。

    我是否可能位于错误的文件中? 引脚多路复用由 U-Boot 完成?

    大家好

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hallo、

    是否有可能中断未被导出到 debugfs? 子系统是否对此负责? 还是由驾驶员负责?

    在/proc/interrupts 中、第二行(我认为它是计数器、现在是390)会按时间递增。

    223: 390 0 4805d000.GPIO 20边缘 ETH2
    

    那么、通过上面的这个和帖子、中断是否有可能被内核正确识别、但我看不到这一点?

    大家好