Project

General

Profile

GalaxyNexusI9250SerialConsole » History » Revision 6

Revision 5 (Denis 'GNUtoo' Carikli, 11/03/2012 11:58 AM) → Revision 6/22 (Denis 'GNUtoo' Carikli, 11/03/2012 12:01 PM)

h1. GalaxyNexusSerialConsole 

 * http://redmine.replicant.us/projects/replicant/wiki/S5PC110Bootloader works as a serial cable. 

 When you connect the cable you get the FIQ debugger, but what if you want kgdb instead: 
 * apply that patch: 
 <pre> 
 diff --git a/arch/arm/mach-omap2/board-tuna.c b/arch/arm/mach-omap2/board-tuna.c 
 index a022a43..7098227 100644 
 --- a/arch/arm/mach-omap2/board-tuna.c 
 +++ b/arch/arm/mach-omap2/board-tuna.c 
 @@ -1001,6 +1001,8 @@ static inline void __init board_serial_init(void) 
         omap_serial_init_port_pads(0, uart1_pads, uart1_pads_sz, NULL); 
         omap_serial_init_port_pads(1, tuna_uart2_pads, 
                 ARRAY_SIZE(tuna_uart2_pads), &tuna_uart2_info); 
 +         omap_serial_init_port_pads(2,tuna_uart3_pads, 
 +                 ARRAY_SIZE(tuna_uart3_pads), NULL); 
         omap_serial_init_port_pads(3, tuna_uart4_pads, 
                                    ARRAY_SIZE(tuna_uart4_pads), NULL); 
  } 
 </pre> 
 * remove the FIQ debugger in the kernel configuration. 

 * change the CMDLINE trough the kernel configuration: 
 Use: 
 <pre>CONFIG_CMDLINE="console=ttyO2 androidboot.console=ttyO2 [...]"</pre> 
 Instead of: 
 <pre>CONFIG_CMDLINE="console=ttyFIQ0 androidboot.console=ttyFIQ0 [...]"</pre> 

 * Verify that you get the kernel messages. 

 * Then change the cmdline for kgdb 
 <pre> 
 CONFIG_CMDLINE="kgdboc=ttyO2,115200 console=ttyO2 androidboot.console=ttyO2 [...]" 
 </pre> 

 Don't add kgdbwait tough because it result in that: 
 <pre> 
 (gdb) set remotebaud 115200 
 (gdb) target remote /dev/ttyUSB0 
 /dev/ttyUSB0: Device or resource busy. 
 (gdb) target remote /dev/ttyUSB0 
 Remote debugging using /dev/ttyUSB0 
 kgdb_breakpoint () 
     at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/kernel/debug/debug_core.c:954 
 954 		 arch_kgdb_breakpoint(); 
 (gdb) c 
 Continuing. 

 Program received signal SIGSEGV, Segmentation fault. 
 __raw_spin_lock_irqsave (lock=0x288) 
     at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/kernel/spinlock.c:112 
 112 	 BUILD_LOCK_OPS(spin, raw_spinlock); 
 (gdb) bt 
 #0    __raw_spin_lock_irqsave (lock=0x288) 
     at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/kernel/spinlock.c:112 
 #1    0xc061aecc in _raw_spin_lock_irqsave (lock=0x288) 
     at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/kernel/spinlock.c:145 
 #2    0xc0098620 in try_to_wake_up (p=0x0, state=1611595795, wake_flags=1) 
     at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/kernel/sched.c:2681 
 #3    0xc009897c in wake_up_process (p=0x288) 
     at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/kernel/sched.c:2785 
 #4    0xc00e2090 in proc_dohung_task_timeout_secs (table=<value optimized out>, write=<value optimized out>,  
     buffer=<value optimized out>, lenp=<value optimized out>, ppos=0xc782bf70) 
     at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/kernel/hung_task.c:190 
 #5    0xc0174178 in proc_sys_call_handler (filp=<value optimized out>, buf=0x24808, count=1, ppos=0xc782bf70,  
     write=1) at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/fs/proc/proc_sysctl.c:158 
 #6    0xc01741b0 in proc_sys_write (filp=0x288, buf=0x600f0013 <Address 0x600f0013 out of bounds>, count=1,  
     ppos=0xc782a000) 
     at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/fs/proc/proc_sysctl.c:176 
 #7    0xc0126420 in vfs_write (file=0xc73be500, buf=0x24808 "0", count=<value optimized out>, pos=0xc782bf70) 
     at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/fs/read_write.c:377 
 #8    0xc0126590 in sys_write (fd=<value optimized out>, buf=0x24808 "0", count=1) 
     at /home/gnutoo/embedded/android/replicant-4.0/kernel/samsung/tuna/fs/read_write.c:429 
 #9    0xc0055a00 in ?? () 
 Cannot access memory at address 0x0 
 #10 0xc0055a00 in ?? () 
 Cannot access memory at address 0x0 
 Backtrace stopped: previous frame identical to this frame (corrupt stack?) 
 </pre> 

 * disable the watchdot timer. 

 At the end the cmdline should look like that: 
 <pre> 
 CONFIG_CMDLINE="kgdboc=ttyO2,115200 console=ttyO2 androidboot.console=ttyO2 mem=1G vmalloc=768M omap_wdt.timer_margin=0 no_console_suspend" 
 </pre> 

 then open a root console and do: 
 <pre> 
 echo g > /proc/sysrq-trigger 
 </pre>