[yocto] Kernel debugging over serial console?
Apelete Seketeli
apelete at seketeli.net
Tue Sep 17 06:15:00 PDT 2013
Hello Giuseppe,
On 17-Sep-13, BITONTI Giuseppe (MM) wrote:
> I am trying to debug the kernel through kgdb for an imx6 sabre lite board with the following kernel built from poky 1.4:
>
> root at imx6qsabrelite:~# uname -a
> Linux imx6qsabrelite 3.0.35-1.1.0+g2dc5560 #1 SMP PREEMPT Thu Aug 8 15:15:39 CEST 2013 armv7l GNU/Linux
>
> The system boot well but when I try to enter in debugging mode it returns:
>
> root at imx6qsabrelite:~# echo g > /proc/sysrq-trigger
> SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) saK show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T) Unmount ETM buffer dump show-blocked-tasks(W)
> root at imx6qsabrelite:~#
I didn't dabble with OE or Yocto for a while, but from a pure Linux
kernel point of view, it seems like something is amiss with your kgdb
configuration.
> I have configured the kernel with the command:
>
> bitbake -c menuconfig linux-imx
>
> enabling:
>
> -*- Magic SysRq key
> [*] Kernel debugging
> [*] Compile the kernel with debug info
> [*] KGDB: kernel debugger
> <*> KGDB: use kgdb over the serial console
>
> I have also edited defconfig file in fsl-community-bsp-dylan/sources/meta-fsl-arm/recipes-kernel/linux/linux-imx-3.0.35/mx6q/ adding:
>
> CONFIG_FRAME_POINTER=y
> CONFIG_DEBUG_KERNEL=y
> CONFIG_KGDB=y
> CONFIG_DEBUG_INFO=y
> CONFIG_KGDB_SERIAL_CONSOLE=y
> CONFIG_MAGIC_SYSRQ=y
>
> and added kernel parameter to bootargs with:
>
> MX6QSABRELITE U-Boot > editenv mmcargs
> edit: setenv bootargs console=${console},${baudrate} root=${mmcroot} kgdboc=ttymxc1,115200
> MX6QSABRELITE U-Boot > saveenv
> Saving Environment to MMC...
> Writing to MMC(0)... done
> MX6QSABRELITE U-Boot > boot
You kernel configuration looks ok, and the kgdboc parameter passed by
u-boot to the kernel seems correct (at least syntactically speaking).
> but it still does not work.
Depending on the serial driver in use in the kernel, it sometimes
happens that kgdboc is not configured despite the kgdboc parameter
being passed to the kernel.
To check that kgdboc is configured like you intended, from user-sapce
please try:
root at imx6qsabrelite:~# cat /sys/module/kgdboc/parameters/kgdboc
Guessing from what you wrote, it should return: ttymxc1,115200
If it doesn't, please try configuring kgdboc from user-space:
root at imx6qsabrelite:~# echo ttymxc1,115200 > /sys/module/kgdboc/parameters/kgdboc
And then:
root at imx6qsabrelite:~# echo g > /proc/sysrq-trigger
Should break the kernel and let you connect to kgdb using, for
instance, a gdb client.
Hope it helps :-).
Cheers.
--
Apelete
More information about the yocto
mailing list