Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


etc:users:jcmvbkbc:omap-support-pieces

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
etc:users:jcmvbkbc:omap-support-pieces [2009/06/22 17:02] – создано jcmvbkbcetc:users:jcmvbkbc:omap-support-pieces [2016/08/08 20:53] (current) – ↷ Page moved from users:jcmvbkbc:omap-support-pieces to etc:users:jcmvbkbc:omap-support-pieces kel
Line 1: Line 1:
 ====== N8x0 support in linux-omap ====== ====== N8x0 support in linux-omap ======
 +
 +Current kernel: 2.6.35
 +
 +[[http://jcmvbkbc.spb.ru/~dumb/ws/osll/n8x0/|Rootfs and kernel config]]
 +
 +===== Startup plan =====
 +  * [2/3] find optimal debugging techniques and real HW/qemu split;
 +  * [3/4] make minimal working/debuggable configuration;
 +  * [0] compile domain glossary.
  
 ===== Debug interfaces ===== ===== Debug interfaces =====
 ===== Subsystems' status ===== ===== Subsystems' status =====
 +
 +  * SPI, MMC, USB, mac80211: ok
 +
 ===== Debugging in qemu ===== ===== Debugging in qemu =====
-===== Debugging on real HW ===== 
  
 +==== Kernel configuration ====
 +  * CONFIG_DEBUG_INFO=y for symbolic debugging to work;
 +  * CONFIG_FRAME_POINTER=y (which is only possible when CONFIG_ARM_UNWIND=n) + CONFIG_DEBUG_BUGVERBOSE=y for symbolic backtrace on oopses and BUGs;
 +
 +==== Kernel command line parameters ====
 +
 +  * initcall_debug=1 -- make kernel print all _init function calls during kernel_init; 
 +
 +==== Magic numbers ====
 +  * 0x80000000 -- here the kernel is loaded
 +  * 0x80008000 -- here we jump after decompression (.text.head that has VA of 0xc0008000 has PA 0x80008000 until MMU is active)
 +  * 0xc0026000 -- 'arm-linux-gnu-objdump -x vmlinux' says that .text starts here
 +
 +
 +
 +==== Booting n8x0 kernel in qemu ====
 +<code>
 +qemu-system-arm -M n810 -kernel "linux-omap-2.6/arch/arm/boot/zImage" -s -sd mmcblk0 -usb
 +</code>
 +
 +==== Script for gdb session ====
 +<code>
 +target remote 127.0.0.1:1234
 +break *0x80008000
 +</code>
 +
 +To debug kernel as usual:
 +  symbol-file linux-omap-2.6/vmlinux
 +
 +To debug compression-related stuff from the very beginning (start, arch/arm/boot/compressed/head.S) till start_kernel:
 +  add-symbol-file linux-omap-2.6/arch/arm/boot/compressed/vmlinux 0x80000000
 +
 +To debug kernel from stext (arch/arm/kernel/head.S) until MMU is active:
 +  add-symbol-file linux-omap-2.6/vmlinux 0x80026000 -s .text.head 0x80008000
 +
 +To debug kernel from start_kernel (init/main.c):
 +  add-symbol-file linux-omap-2.6/vmlinux 0xc0026000
 +
 +==== "Blank screen" debugging ====
 +
 +Whatever happens, ^C breaks into the running kernel. If the screen is blank, dmesg-like log may be viewed through
 +  x/10000s log_buf
 +
 +Or even through
 +  dump memory kmsg.log log_buf log_buf+10000
 +
 +===== Debugging on real HW =====
 +==== Dealing with retu watchdog ====
 +Need to periodically touch it, like this:
 +<file>
 +while true
 +do
 + echo 63 > /sys/devices/platform/retu-watchdog/period
 + sleep 1
 +done
 +</file>
etc/users/jcmvbkbc/omap-support-pieces.1245675769.txt.gz · Last modified: 2009/06/22 17:02 by jcmvbkbc