kgdb kernel debug on iMX8 board over serial

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

kgdb kernel debug on iMX8 board over serial

2,912 次查看
stuartrubin
Contributor III

Has anyone had success running kgdb to debug the kernel on an iMX8 (e.g. imx8-qm-mek) board? Connected via serial port? I'm close, but can't quite get it working. All suggestions welcome. Thank you!

标记 (2)
5 回复数

2,846 次查看
lorenzo_giraudi
Contributor III

Someone from NXP ever tried this?

0 项奖励
回复

2,866 次查看
lorenzo_giraudi
Contributor III

 Hi stuartrubin,

I was going to post the same question!

I followed the instruction shown here: https://elinux.org/images/1/1b/ELC19_Serial_kdb_kgdb.pdf but can make it to work. This is what I get:

  • I can do echo ttyLP0 > /sys/module/kgdboc/parameters/kgdboc and it gets successfully registered (note: ttyLP0 is my console too)
  • when I do echo g > /proc/sysrq-trigger I get messages telling that the kernel dropped into kdb, then I see the kdb prompt but it stops there, when I try to type nothing happens

I have the idea that it may involve the polling functions lpuart32_poll_put_char and  lpuart32_poll_get_char but I do not know how to debug it.

It would be great to know if someone from NXP ever tried it.

BR,

Lorenzo

0 项奖励
回复

2,368 次查看
r_veens
Contributor III

I think im having the same issue, did you ever manage to find a solution?

 

[ 48.900382] Internal error: synchronous external abort: 96000210 [#2] PREEMPT SMP
[ 48.907890] CPU: 2 PID: 22 Comm: kworker/2:0 Tainted: G D 5.10.35-lts-5.10.y+g386cc8f1255e #26
[ 48.917805] Hardware name: Freescale i.MX8QXP MEK AME (DT)
[ 48.923309] Workqueue: events deferred_probe_work_func
[ 48.928456] Call trace:
[ 48.930912] dump_backtrace+0x0/0x1a0
[ 48.934574] show_stack+0x18/0x70
[ 48.937895] dump_stack+0xd0/0x12c
[ 48.941300] kgdb_reenter_check.part.0+0xf0/0x114
[ 48.946006] kgdb_handle_exception+0x124/0x140
[ 48.950456] kgdb_notify+0x34/0x70
[ 48.953862] notify_die+0x7c/0xcc
[ 48.957179] die+0xa8/0x244
[ 48.959976] arm64_notify_die+0xb8/0xd0
[ 48.963816] do_sea+0x5c/0xa0
[ 48.966787] do_mem_abort+0x44/0xa4
[ 48.970280] el1_abort+0x44/0x6c
[ 48.973509] el1_sync_handler+0xac/0xd0
[ 48.977351] el1_sync+0x80/0x100
[ 48.980585] lpuart32_poll_put_char+0x60/0xc4
[ 48.984945] kgdboc_put_char+0x34/0x4c
[ 48.988696] put_packet+0x40/0x130
[ 48.992102] gdb_serial_stub+0xe6c/0xfa0
[ 48.996028] kgdb_cpu_enter+0x1b4/0x650
[ 48.999866] kgdb_handle_exception+0xd8/0x140
[ 49.004229] kgdb_brk_fn+0x20/0x30
[ 49.007635] call_break_hook+0x6c/0x80
[ 49.011388] brk_handler+0x1c/0x60
[ 49.014797] do_debug_exception+0xc4/0x150
[ 49.018894] el1_dbg+0x34/0x50
[ 49.021952] el1_sync_handler+0x9c/0xd0
[ 49.025790] el1_sync+0x80/0x100
[ 49.029026] pwm_buzzer_probe+0x0/0x520
[ 49.032865] really_probe+0xe4/0x4c0
[ 49.036444] driver_probe_device+0x58/0xc0
[ 49.040544] __device_attach_driver+0xa8/0x10c
[ 49.044992] bus_for_each_drv+0x78/0xd0
[ 49.048832] __device_attach+0xd8/0x180
[ 49.052670] device_initial_probe+0x14/0x20
[ 49.056857] bus_probe_device+0x9c/0xa4
[ 49.060697] deferred_probe_work_func+0x80/0xc0
[ 49.065236] process_one_work+0x1cc/0x350
[ 49.069248] worker_thread+0x2bc/0x46c
[ 49.073001] kthread+0x154/0x160
[ 49.076232] ret_from_fork+0x10/0x30
[ 49.079811] Kernel panic - not syncing: Recursive entry to debugger
[ 49.086087] SMP: stopping secondary CPUs
[ 50.090013] SMP: failed to stop secondary CPUs 0-3
[ 50.094805] Kernel Offset: disabled
[ 50.098298] CPU features: 0x0240002,20002008
[ 50.102570] Memory Limit: none
[ 50.105635] ---[ end Kernel panic - not syncing: Recursive entry to debugger ]---

0 项奖励
回复

2,897 次查看
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello stuartrubin,

There may be a different version of gdb depending on the BSP you are using but this package is part of the open embedded layer so you may be able to import the recipe from an older release of the Open Embedded layers. However, you would need to be careful with the dependencies for the older version as there may be conflicts.

https://www.emcraft.com/som/imx-8m/remote-debugging-with-gdb

 

Regards

 

0 项奖励
回复

2,892 次查看
stuartrubin
Contributor III

Bio_TICFSL thank you for your response. I am able to do a normal application debug with gdb. What I actually need is to debug the kernel and drivers with kgdb (not the user space gdb). Any experience with this?