Digilent Embedded Linux User Manual
Page 21

Using Zynq with Linux
www.digilentinc.com
page 21 of 23
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
GDB will show where the kernel is hanging up. Example 21 shows that the kernel hangs at function
xuart_console_wait_tx. You can back trace the function call procedure with the command
backtrace.
Example 21.
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
0xc01ea030 in xuartps_console_wait_tx (port=0xc0b84d78) at
drivers/tty/serial/xilinx_uartps.c:944
944
while ((xuartps_readl(XUARTPS_SR_OFFSET) & XUARTPS_SR_TXEMPTY)
(gdb) backtrace
#0 0xc01ea030 in xuartps_console_wait_tx (port=0xc0b84d78) at
drivers/tty/serial/xilinx_uartps.c:944
#1 0xc01ea05c in xuartps_console_putchar (port=0xc0b84d78, ch=91) at
drivers/tty/serial/xilinx_uartps.c:958
#2 0xc01e6e4c in uart_console_write (port=0xc0b84d78, s=
drivers/tty/serial/serial_core.c:1680
#3 0xc01ea1d8 in xuartps_console_write (co=
s=0xc0731df9 "[ 2.140000] usb 1-1.2: new low-speed USB device number 3
using xusbps-ehci\n WARNING: at arch/arm/mm/dma-mapping.c:198
consistent_init+0x78/0x10c()\n<4>[ 0.430000] Modules linked in:\n<4>[
0.430"..., count=78)
at drivers/tty/serial/xilinx_uartps.c:985
#4 0xc00226bc in __call_console_drivers (start=20840, end=20918) at
kernel/printk.c:520
#5 0xc0022760 in _call_console_drivers (start=
end=20918, msg_log_level=
#6 0xc0022f70 in call_console_drivers () at kernel/printk.c:654
#7 console_unlock () at kernel/printk.c:1275
#8 0xc0023564 in vprintk (fmt=
kernel/printk.c:964
#9 0xc039d8bc in printk (fmt=0xc04a7dad "%s%s %s: %pV") at
kernel/printk.c:756
#10 0xc020b5b8 in __dev_printk (level=0xc049befa "<6>", dev=0xd93f8468,
vaf=0xd847be74) at drivers/base/core.c:1846
#11 0xc020b60c in _dev_info (dev=
USB device number %d using %s\n") at drivers/base/core.c:1895
#12 0xc02581f4 in hub_port_init (hub=0xd93fae00, udev=0xd93f8400, port1=2,
retry_counter=0) at drivers/usb/core/hub.c:2935
#13 0xc025abf0 in hub_port_connect_change (__unused=
drivers/usb/core/hub.c:3329
#14 hub_events (__unused=
#15 hub_thread (__unused=
#16 0xc0042b94 in kthread (_create=0xd805befc) at kernel/kthread.c:121
#17 0xc000e820 in kernel_thread_helper ()
Backtrace stopped: frame did not save the PC
(gdb) l
939
**/
940
static void xuartps_console_wait_tx(struct uart_port *port)
941
{
942
//
unsigned int timeout = 10000;
943
944
while ((xuartps_readl(XUARTPS_SR_OFFSET) & XUARTPS_SR_TXEMPTY)
945
!= XUARTPS_SR_TXEMPTY)
946
//
!= XUARTPS_SR_TXEMPTY && --timeout)
947
barrier();
948
}