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.

[参考译文] AM5728:尝试读取 GPIO3的 devmem2内核严重错误

Guru**** 2538960 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1056004/am5728-devmem2-kernel-panic-trying-to-read-gpio3

器件型号:AM5728

大家好、

首先、我的设置的详细信息:

  • BeagleBoard X15
  • TI-processor-sdk-linux-am57xx-evm-06.03.00.106
  • arago-base-tisdk-image-am57xx-evm.tar.xz

我要做的是:

  • 尝试读取 GPIO3寄存器

root@am57xx-evm:~# devmem2 0x48057000
/dev/mem opened.
[ 1391.870005] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
[ 1391.870014] ------------[ cut here ]------------
[ 1391.878776] pgd = 69343cc2
[ 1391.883419] WARNING: CPU: 0 PID: 0 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x330/0x380
[ 1391.886121] [00000000] *pgd=ac0b3003, *pmd=fe1be003
[ 1391.895290] 44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4_PER1_P3 (Read): Data Access in User mode during Functional access
[ 1391.911786] Modules linked in: hid_multitouch usbhid xhci_plat_hcd xhci_hcd usbcore pru_rproc irq_pruss_intc pruss dwc3 udc_core usb_common snd_soc_simple_card snd_soc_simple_card_utils snd_soc_omap_hdmi ahci_platform libahci_platform libahci omap_aes_driver pruss_soc_bus omap_sham omap_wdt phy_omap_usb2 libata ti_sc ti_csc ti_vpdma dwc3_omap rtc_omap extcon_palmas rtc_palmas at24 snd_soc_tlv320aic3x omap_des omap_hdq rtc_ds1307 des_generic crypto_engine omap_crypto wire omap_remoteproc virtio_rpmsg_bus remoteproc sch_fq_codel
[ 1391.958715] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.19.94-gbe5389fd85 #2
[ 1391.965794] Hardware name: Generic DRA74X (Flattened Device Tree)
[ 1391.971913] Backtrace:
[ 1391.974378] [<c020ca34>] (dump_backtrace) from [<c020cd6c>] (show_stack+0x18/0x1c)
[ 1391.981985]  r7:c0df207c r6:60060193 r5:00000000 r4:c124f5dc
[ 1391.987674] [<c020cd54>] (show_stack) from [<c09ed064>] (dump_stack+0x9c/0xb0)
[ 1391.994932] [<c09ecfc8>] (dump_stack) from [<c022e100>] (__warn+0xdc/0xf8)
[ 1392.001838]  r7:c0df207c r6:00000009 r5:00000000 r4:c1201cbc
[ 1392.007524] [<c022e024>] (__warn) from [<c022dd38>] (warn_slowpath_fmt+0x50/0x6c)
[ 1392.015042]  r9:ee9d39c0 r8:f0882164 r7:c0df1fa8 r6:c0df1ee8 r5:c0df204c r4:c1204c48
[ 1392.022823] [<c022dcec>] (warn_slowpath_fmt) from [<c0566bcc>] (l3_interrupt_handler+0x330/0x380)
[ 1392.031732]  r3:ee9d7f00 r2:c0df204c
[ 1392.035322]  r5:00000002 r4:80080003
[ 1392.038920] [<c056689c>] (l3_interrupt_handler) from [<c02895ec>] (__handle_irq_event_percpu+0x68/0x140)
[ 1392.048444]  r10:c12511f8 r9:ee9d9f00 r8:00000017 r7:c1201de8 r6:00000000 r5:ee9d9f68
[ 1392.056307]  r4:ee9df3c0
[ 1392.058857] [<c0289584>] (__handle_irq_event_percpu) from [<c02896f8>] (handle_irq_event_percpu+0x34/0x88)
[ 1392.068555]  r10:c10674f0 r9:c1200000 r8:ee80c000 r7:00000001 r6:ee9d9f00 r5:ee9d9f68
[ 1392.076417]  r4:c1204c48
[ 1392.078966] [<c02896c4>] (handle_irq_event_percpu) from [<c028978c>] (handle_irq_event+0x40/0x64)
[ 1392.087878]  r6:c120a434 r5:ee9d9f68 r4:ee9d9f00
[ 1392.092518] [<c028974c>] (handle_irq_event) from [<c028d4dc>] (handle_fasteoi_irq+0xc0/0x168)
[ 1392.101080]  r7:00000001 r6:c120a434 r5:ee9d9f68 r4:ee9d9f00
[ 1392.106768] [<c028d41c>] (handle_fasteoi_irq) from [<c02887e8>] (generic_handle_irq+0x2c/0x3c)
[ 1392.115418]  r7:00000001 r6:00000000 r5:00000000 r4:c1067cfc
[ 1392.121106] [<c02887bc>] (generic_handle_irq) from [<c0288e4c>] (__handle_domain_irq+0x64/0xbc)
[ 1392.129847] [<c0288de8>] (__handle_domain_irq) from [<c0564f08>] (gic_handle_irq+0x44/0x80)
[ 1392.138237]  r9:c1200000 r8:fa213000 r7:c1201eb0 r6:fa212000 r5:fa21200c r4:c1205104
[ 1392.146018] [<c0564ec4>] (gic_handle_irq) from [<c02019f8>] (__irq_svc+0x58/0x8c)
[ 1392.153532] Exception stack(0xc1201eb0 to 0xc1201ef8)
[ 1392.158607] 1ea0:                                     00000000 00098140 eed5750c c0222250
[ 1392.166822] 1ec0: ffffe000 c1204c7c c1204cc4 00000001 00000000 00000000 c10674f0 c1201f0c
[ 1392.175036] 1ee0: c1201eec c1201f00 c0221ee4 c0208e94 a0060013 ffffffff
[ 1392.181680]  r9:c1200000 r8:00000000 r7:c1201ee4 r6:ffffffff r5:a0060013 r4:c0208e94
[ 1392.189471] [<c0208e6c>] (arch_cpu_idle) from [<c0a070bc>] (default_idle_call+0x30/0x34)
[ 1392.197603] [<c0a0708c>] (default_idle_call) from [<c025a9a8>] (do_idle+0x204/0x2ac)
[ 1392.205383] [<c025a7a4>] (do_idle) from [<c025ad3c>] (cpu_startup_entry+0x20/0x24)
[ 1392.212988]  r10:c104aa38 r9:c1252d00 r8:ffffffff r7:c1252d00 r6:00000000 r5:00000002
[ 1392.220851]  r4:000000c7
[ 1392.223399] [<c025ad1c>] (cpu_startup_entry) from [<c0a01364>] (rest_init+0xd0/0xd4)
[ 1392.231182] [<c0a01294>] (rest_init) from [<c1000dfc>] (start_kernel+0x448/0x470)
[ 1392.238696]  r5:00000000 r4:c1252d58
[ 1392.242289] [<c10009b4>] (start_kernel) from [<00000000>] (  (null))
[ 1392.248669] ---[ end trace b634836f5c4f6656 ]---
Memory mapped at address 0xb6f2b000.
Bus error (core dumped)

到目前为止、我已经尝试了以下操作:

  • 我在这里四处走动、不能让 GPIO3_11与 sysfs 一起工作
  • 我看到 gp EVM 套件中的摄像头模块可能正在使用 GPIO3_11
  • 因此、我在内核中禁用了该功能(驱动程序->多媒体->摄像头->关闭)、以查看它是否会释放 GPIO3
  • 它没有

如果有任何帮助说明我无法读取 GPIO3或使用 GPIO3的原因、我们将不胜感激。  

谢谢!

Nathan

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

    Nathan、

    您能否检查是否探测到 GPIO3模块? 您能否从目标共享以下命令的输出:

    CAT /sys/class/gpio/gpiochip */标签

    此致、
    基尔西

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

    当然可以!

    root@am57xx-evm:~# cat /sys/class/gpio/gpiochip*/label
    gpio-0-31
    gpio-128-159
    gpio-160-191
    gpio-192-223
    gpio-224-255
    gpio-32-63
    48070000.i2c:tps659038@58:tps659038_gpio
    gpio-64-95
    gpio-96-127
    

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

    Nathan、

    这种崩溃转储最可能是由于一些运行时电源管理的启动。 您无法访问这些寄存器。

    我也面临这个问题。

    devmem2 0x48057000 w
    /dev/mem 已打开。[151.258045]-------- [在此处剪切]-----
    [151.263880]警告:CPU:0 PID:31、位于 drivers/bus/omap_l3_oc.c:147 L3_interrupt_handler + 0x330/0x380
    [151.273148] 44000000.OCP:L3自定义错误:主 MPU 目标 L4_PER1_P3 (读取):在功能访问期间以用户模式访问数据

    然后、我使用 sysfs 来切换 GPIO3_11


    BTW GPIO 编号从1、2、3...开始

    因此 GPIO3_11 -> GPIO75即2 * 32 + 11 = 64 + 11 = 75。

    Echo 75 >/sys/class/gpio/export
    CAT /sys/class/gpio/gpio75/direction
    在中
    root@am57xx-EVM:~# cat /sys/class/gpio/gpio75/value
    0
    root@am57xx-EVM:~# echo out >/sys/class/gpio/gpio75/direction
    root@am57xx-EVM:~# cat /sys/class/gpio/gpio75/direction
    输出
    root@am57xx-EVM:~# echo 1 >/sys/class/gpio/gpio75/value
    root@am57xx-EVM:~# cat /sys/class/gpio/gpio75/direction
    输出
    root@am57xx-EVM:~# cat /sys/class/gpio/gpio75/value
    1

    因此我也能够切换值。

    CAT /sys/kernel/debug/gpio
    gpiochip0:GPIO 0-31、父级:platform/4ae1000.gpio、gpio-0-31:

    gpiochip1:GPIO 32-63、父级:platform/48055000。GPIO、GPIO-32-63:
    GPIO-37 (|启用)输出高电平
    GPIO-40 (|51000000.PCIe)输出低
    高 IRQ 中的 GPIO-52 (|Home)
    高 IRQ 中的 GPIO-55 (|Up)
    高 IRQ 中的 GPIO-56 (|Right)
    高 IRQ 中的 GPIO-57 (|DOWN)
    高 IRQ 中的 GPIO-60 (|左侧)
    GPIO-62 (|编码器)输出高电位

    gpiochip2:GPIO 64-95、父级:platform/48057000.gpio、gpi-64-95:
    GPIO-75 (|sysfs)输出高电位

    帖子、表明我能够读取 GPIO3模块的所有寄存器。

    root@am57xx-EVM:~# devmem2 0x48051000 w
    /dev/mem 已打开。
    映射到地址 bbb6fb8000的内存。
    在地址0x48051000 (bb6fb8000):0x50602001处读取
    root@am57xx-EVM:~ evmem2 0x48055000 w
    /dev/mem 已打开。
    映射到地址 bbb6fb9000的内存。
    在地址0x48055000 (bb6fb9000):0x50602001处读取
    root@am57xx-EVM:~# devmem2 0x48057000 w
    /dev/mem 已打开。
    映射到地址 bb6ff8000的内存。
    在地址0x48057000 (b6ff8000):0x50602001处读取
    root@am57xx-EVM:~# devmem2 0x48057000 w
    /dev/mem 已打开。
    映射到地址 bb6f88000的内存。
    在地址0x48057000 (0xb6f88000)处读取:0x50602001
    root@am57xx-EVM:~# devmem2 0x48057130 w
    /dev/mem 已打开。
    映射到地址 bb6f98000的内存。
    在地址0x48057130 (b6f98130):0x00000002处读取
    root@am57xx-EVM:~ evmem2 0x48057134 w
    /dev/mem 已打开。
    映射到地址 bb6f30000的内存。
    在地址0x48057134 (0xb6f30134):0xFFFFFF7FF 处读取
    root@am57xx-EVM:~# devmem2 0x4805713C w
    /dev/mem 已打开。
    映射到地址 bb6fd1000的内存。
    在地址0x4805713C (b6fd113c)处读取:0x00000800

    希望这能解决您的问题。 如果没有其他问题、请单击验证答案。

    此致、
    基尔西