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.

[参考译文] DRA744:Android 启动后 GPIO6_11 IRQ 触发异常(6AM1.3)

Guru**** 2589280 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/640229/dra744-gpio6_11-irq-trigger-exception-after-android-boot-up-6am1-3

器件型号:DRA744

您好,

这是客户板,TP IRQ (GPIO6_11) 触发级别设置为"IRQ_TYPE_LEVEL_LOW",   在 Android 启动 完成后无法正常触发。

但 IRQ 可在以下 操作中触发 :

1.内核启动完成后,在 zygote 服务启动之前 ,此时,触摸 TP 面板时可以触发 IRQ。

2. zygote 服务启动后,始终将数据发送到控制台(UART 用于调试)。 触摸 TP 面板时将触发 IRQ。

3.在 zygote 服务启动后,轻触 TP 面板,确认 GPIO6_11已从示波器中下降。 此时,IRQ 未被触发。

   但在 ADB shell 中键入"cat /d/gpio 后,IRQ 被触发。 并且 GPIO6_11 从命令"cat /d/gpio 的结果中变为低电平。

以下是有关 TP IRQ (GPIO6_11)的配置:

DTS:

 978        Atmel_mxt_ts@4a{
 979                        兼容=" Atmel、maxtouch ";
 980                        reg =<0x4a>;
 981                        interrupt-parent =<&GPIO6>;
 982                        个中断=<11 IRQ_TYPE_LEVEL_LOW_>;
 983.
                         触摸屏使用的984 /*引脚*
 985                        pinctrl-names ="PMX_ts_active"、"PMX_ts_suspend"、"PMX_ts_release";
 986                        pinctrl-0 =<&ts_pines>;
 987                        pinctrl-1 =<&ts_suspend>;
 988                        pinctrl-2 =<&ts_release>;
 989                        Atmel、RESET-GPIO =<&GPIO6 10 0>;
 990                        //Atmel、POWER-GPIO =<&GPIO5 17 0>;
 991                        Atmel、IRQ-GPIO =<&GPIO6 11 IRQ_TYPE_LEVEL_LOL>;
 99
 994                        Atmel、display-coords =<0 0 1920 1080/>;
 995                        Atmel、panel-cods =<0 0 1920 1080/>;
 996/*Atmel                        ,i2c-pull-up;*/
 997                        Atmel,无强制更新;
 998                };

 

请求 IRQ 的驱动程序:

                                     request_threaded_IRQ (data->client->IRQ、NULL、
2118                                mxt_interrupt、
2119                                IRQ_TYPE_LEVEL_LOW | IRQF_OneShot、
2120                                data->client->name、data);

 

下面是我们对此问题的分析:

1.检查交叉开关配置 ,GPIO6_IRQ_1已经映射到 MPU。 有关详细信息、请参阅附件 e2e.ti.com/.../crossbar.txt

| 137   | 0x4A002B4A |  29 | GPIO6_IRQ_1                        | GPIO6         | GPIO6 中断 1  

2.检查成功中由 J6、GPIO6_IRQ 寄存器注册的中断。

root@jacinto6evm:/ # cat /proc/interrupts
CAT /proc/interrupts
           CPU0       CPU1

…………

202:        348          0      CBAR  29 电平     4805d000.GPIO
214:        348          0  4805d000.GPIO  11 电平     maxtouch

…………

3.检查 用作 GPIO6_11的 PAD (AB4)的模式,它已设置为输入模式 和下拉。

127|root@jacinto6evm:/ # omapconf 读取 0x4a003778
omapconf 读取 0x4a003778
0004000E

4. Kerenel 日志如下所示,Pls 参考附件.e2e.ti.com/.../kernel_5F00_log_5F00_for_5F00_GPIO6_5F00_11_5F00_IRQ_5F00_exception.txt

[20.749966]  IPv6:ADDRCONF (NETDEV_UP):ETH1:链路未就绪
[21.808446]  OMAP-IMU 55082000.MMU:55082000.MMU:2.1版
[23.590722]  [baker][HDMI] OMAP-connector_get_modes
[23.595678]  [baker] hdmibe_check_timings 170 --
[25.393383]  init:服务'bootanim'(pid 229)以状态0退出
[27.358660]  [baker] mxt_interrupt --
[27.364895]  [baker] mxt_interrupt --end
[27.479665]  [baker] mxt_interrupt --
[27.485915]  [baker] mxt_interrupt --end
[31.233672]  [baker] mxt_interrupt --
[31.239893]  [baker] mxt_interrupt --end
[31.362664]  [baker] mxt_interrupt --
[31.368851]  [baker] mxt_interrupt --end
[36.01384]  [baker] mxt_interrupt --
[36.021809]  [baker] mxt_interrupt --end
[84.144215]  [baker] mxt_interrupt --
[84.150714]  [baker] mxt_interrupt --end
[93.590972]  [baker] mxt_interrupt --

[93.598936]  [baker] mxt_interrupt --end
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$
Shell@jacinto6evm:/$

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Android 引导完成后,IRQ 不会被触发。
此时,我触按面板,GPIO6_11会下降,但 IRQ 不会触发。
我使用此控制台键入了键盘,它按如下方式触发。

Shell@jacinto6evm:/$[ 106.533830][baker] mxt_interrupt --
J[106.544266] [baker] mxt_interrupt --end

 

 

我们曾尝试设置 PAD AB4的“Enable Wakeup”(启用唤醒)位(1<<24),但无法设置。 寄存器的值始终为0x0004000E,而不是0x0104000E。

我们尝试使用其他 GPIO IRQ ,例如 GPIO8_0/GPIO2_1,结果相同。

我们猜 CPU 可能会在触摸 TP 面板时休眠。 请给我们一些意见来解决这个问题。

 

谢谢。

// Baker

 

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

    root@jacinto6evm:/# omapconf dump 0x4805D000 0x4805D194
    omapconf 转储0x4805D000 0x4805D194
    |------------------------- |
    |地址(十六进制)|数据(十六进制)|
    |------------------------- |
    | 0x4805D000 | 0x50602001 |
    | 0x4805D004 | 0x00000000 |
    | 0x4805D008 | 0x00000000 |
    | 0x4805D00C | 0x00000000 |
    | 0x4805D010 | 0x0000001D |
    | 0x4805D014 | 0x00000000 |
    | 0x4805D018 | 0x00000000 |
    | 0x4805D01C | 0x00000000 |
    | 0x4805D020 | 0x00000000 |
    | 0x4805D024 | 0x00000000 |
    | 0x4805D028 | 0x00000000 |
    | 0x4805D02C | 0x00000000 |
    | 0x4805D030 | 0x00000000 |
    | 0x4805D034 | 0x00000800 |
    | 0x4805D038 | 0x00000000 |
    | 0x4805D03C | 0x00000800 |
    | 0x4805D040 | 0x00000000 |
    | 0x4805D044 | 0x00000800 |
    | 0x4805D048 | 0x00000000 |
    | 0x4805D04C | 0x00000000 |
    | 0x4805D050 | 0x00000000 |
    | 0x4805D054 | 0x00000000 |
    | 0x4805D058 | 0x00000000 |
    | 0x4805D05C | 0x00000000 |
    | 0x4805D060 | 0x00000000 |
    | 0x4805D064 | 0x00000000 |
    | 0x4805D068 | 0x00000000 |
    | 0x4805D06C | 0x00000000 |
    | 0x4805D070 | 0x00000000 |
    | 0x4805D074 | 0x00000000 |
    | 0x4805D078 | 0x00000000 |
    | 0x4805D07C | 0x00000000 |
    | 0x4805D080 | 0x00000000 |
    | 0x4805D084 | 0x00000000 |
    | 0x4805D088 | 0x00000000 |
    | 0x4805D08C | 0x00000000 |
    | 0x4805D090 | 0x00000000 |
    | 0x4805D094 | 0x00000000 |
    | 0x4805D098 | 0x00000000 |
    | 0x4805D09C | 0x00000000 |
    | 0x4805D0A0 | 0x00000000 |
    | 0x4805D0A4 | 0x00000000 |
    | 0x4805D0A8 | 0x00000000 |
    | 0x4805D0AC | 0x00000000 |
    | 0x4805D0B0 | 0x00000000 |
    | 0x4805D0B4 | 0x00000000 |
    | 0x4805D0B8 | 0x00000000 |
    | 0x4805D0BC | 0x00000000 |
    | 0x4805D0C0 | 0x00000000 |
    | 0x4805D0C4 | 0x00000000 |
    | 0x4805D0C8 | 0x00000000 |
    | 0x4805D0CC | 0x00000000 |
    | 0x4805D0D0 | 0x00000000 |
    | 0x4805D0D4 | 0x00000000 |
    | 0x4805D0D8 | 0x00000000 |
    | 0x4805D0DC | 0x00000000 |
    | 0x4805D0E0 | 0x00000000 |
    | 0x4805D0E4 | 0x00000000 |
    | 0x4805D0E8 | 0x00000000 |
    | 0x4805D0EC | 0x00000000 |
    | 0x4805D0F0 | 0x00000000 |
    | 0x4805D0F4 | 0x00000000 |
    | 0x4805D0F8 | 0x00000000 |
    | 0x4805D0FC | 0x00000000 |
    | 0x4805D100 | 0x00000000 |
    | 0x4805D104 | 0x00000000 |
    | 0x4805D108 | 0x00000000 |
    | 0x4805D10C | 0x00000000 |
    | 0x4805D110 | 0x00000000 |
    | 0x4805D114 | 0x00000001 |
    | 0x4805D118 | 0x00000000 |
    | 0x4805D11C | 0x00000000 |
    | 0x4805D120 | 0x00000000 |
    | 0x4805D124 | 0x00000000 |
    | 0x4805D128 | 0x00000000 |
    | 0x4805D12C | 0x00000000 |
    | 0x4805D130 | 0x00000002 |
    | 0x4805D134 | 0xFFFFFF|
    | 0x4805D138 | 0xFFE17C00 |
    | 0x4805D13C | 0x00000400 |
    | 0x4805D140 | 0x00000800 |
    | 0x4805D144 | 0x00000000 |
    | 0x4805D148 | 0x00000000 |
    | 0x4805D14C | 0x00000000 |
    | 0x4805D150 | 0x00000000 |
    | 0x4805D154 | 0x00000000 |
    | 0x4805D158 | 0x00000000 |
    | 0x4805D15C | 0x00000000 |
    | 0x4805D160 | 0x00000000 |
    | 0x4805D164 | 0x00000000 |
    | 0x4805D168 | 0x00000000 |
    | 0x4805D16C | 0x00000000 |
    | 0x4805D170 | 0x00000000 |
    | 0x4805D174 | 0x00000000 |
    | 0x4805D178 | 0x00000000 |
    | 0x4805D17C | 0x00000000 |
    | 0x4805D180 | 0x00000000 |
    | 0x4805D184 | 0x00000000 |
    | 0x4805D188 | 0x00000000 |
    | 0x4805D18C | 0x00000000 |
    | 0x4805D190 | 0x00000400 |
    | 0x4805D194 | 0x00000400 |
    |------------------------- |
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Baker:

    我已将您的问题转交给 GPIO 专家进行评论。

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

    尊敬的 Baker:

    zygote 本身是否具有任何意义(我不认为如此)、或者它仅用于 GPIO 停止工作时的时序信息?
    如果您在 Android 中执行"stop"命令、它会杀死 zygote。 之后 GPIO 是否工作?

    此致、
    Vishal

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

    还有一个问题。
    Android 启动完成后、如果执行"getEvent"命令并点击屏幕、是否看到任何事件?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Vishal,
    关于 zygote,它只是 GPIO 停止工作时的定时信息,没什么特别的。

    执行“STOP”命令后,它将禁用 IRQ。 之后 GPIO 无法正常工作。

    root@jacinto6evm:/sys/devices/platform/44000000.ocp/4805d000.gpio/gpio/gpiochip160/device # stop
    [915.528203]初始化:无此类服务'zygote_secondary '
    [915.533440]初始化:服务'zygote'正在被杀...
    [915.554421] init:服务'surveflinger'正在被终止...
    [915.566738]初始化:服务'NETD'正在被终止...
    root@jacinto6evm:/sys/devices/platform/44000000.ocp/4805d000.gpio/gpio/gpiochip160/device #[915.577375] init:服务'NETD'(pid 176)被信号9杀死
    [915.586341] INIT:服务'NETD'(pid 176)会杀死进程组中的任何子项
    [915.595599]初始化:信号9导致服务'zygote'(pid 184)死亡
    [915.601578] INIT:服务'zygote'(pid 184)杀害了加工组中的所有儿童
    [915.609874]初始化:信号9导致未跟踪的 pid 937死亡
    [915.695546] init:服务'surveflinger'(pid 160)被信号9杀死
    [915.702232] init:服务'surveflinger'(pid 160)会杀死进程组中的任何子项
    [915.814810] init:信号9导致未跟踪的 pid 777死亡
    [915.820122] MTP_RELEASE
    [915.824845] init:未跟踪的 pid 556被信号9杀死
    [915.830276] INIT:信号9导致未跟踪的 pid 567
    [915.83577] init:信号9导致未跟踪的 pid 767
    [915.841110] init:未跟踪的 pid 818被信号9杀死
    [915.846505] init:信号9导致未跟踪的 pid 902
    [915.851825] init:信号9导致未跟踪的 pid 923
    [915.857363] INIT:信号9导致未跟踪的 pid 993被终止
    [915.862677] init:未跟踪的 pid 1023被信号9杀死
    [915.868145] init:信号9导致未跟踪的 pid 1032死亡
    [915.873806] INIT:信号9导致未跟踪的 pid 1057死亡
    [915.879215] init:信号9导致未跟踪 pid 1073死亡
    [915.884963] init:信号9导致未跟踪的 pid 1086
    [915.890419] init:信号9导致未跟踪的 pid 1105死亡
    [915.896126] INIT:信号9导致未跟踪的 pid 1125死亡
    [915.901534] init:信号9导致未跟踪的 pid 1160
    [915.912878] init:信号9导致未跟踪的 pid 784被终止
    [915.951178] init:信号9未跟踪 pid 550
    [916.043583][baker]mxt_stop 3595 disable IRQ 214 ////////////////////////////////////////////


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

    运行"getEvent and tap the screen"后不会发生任何事件。

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

    尊敬的 Baker:

    您在 Android 的/system/usr/idc 文件夹下是否有用于触摸屏的".IDC"文件?
    在 J6 EVM 上、我们在/system/usr/idc 下有 EP05120M09.IDC 文件、 以下行也显示在 logcat 中、其中显示了输入器件与 Android 的注册。

    01-01 00:00:12.111 483 526 I EventHub:新器件:ID=2、FD=76、path='/dev/input/event0、name='EP05120M09'、classes=0x14、 Configuration='/system/usr/idc/EP05120M09.idc、keyLayout=''、keyCharacterMap=''、builtinKeyboard=false、wakeMechanism=EPOLLWAKEUP、 使用 ClockIoctl=true
    01-01 00:00:12.196 483 526 I InputReader: 触摸设备'EP05120M09'无法查询其关联显示的属性。  设备将无法运行、直到显示尺寸可用。
    01-01 00:00:12.196 483 526 I InputReader:器件已添加:ID=2、NAME='EP05120M09'、Sources=0x00001002
    01-01 00:00:12.197 483 526 I InputReader:器件已重新配置:ID=2、NAME='EP05120M09'、尺寸1920x1200、方向0、模式1、 显示 ID 0


    此致、
    Vishal