in imx53 , sometimes when android system boot up, kernel hung up in mxcuart_rx_chars function.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

in imx53 , sometimes when android system boot up, kernel hung up in mxcuart_rx_chars function.

872 Views
潘紫东
Contributor III

<1> was linux kernel   print before it hung up;

<2>  which instruction execution   case kernel dead;

<3>  i use objdump tool,find which line in mxcuart_rx_chars case kernel dead.

this is too odd.

<1>
modules linked in:
CPU: 0    Not tainted  (2.6.35.3-01262-g5adda37-dirty #203)
PC is at mxcuart_rx_chars+0x38/0x228
LR is at mxcuart_int+0x74/0x20c
pc : [<c022eda0>]    lr : [<c022f228>]    psr: 20000193
sp : d3029c50  ip : 00000000  fp : 00000000
r10: d3029c5f  r9 : 00000004  r8 : d3029c5e
r7 : 00000100  r6 : c06e23ac  r5 : 00000100  r4 : c0669be8
r3 : d5112000  r2 : 0000408d  r1 : c0669be8  r0 : c0669be8
Flags: nzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 10c5387d  Table: 832ec019  DAC: 00000015
Process init (pid: 1, stack limit = 0xd30282e8)
Stack: (0xd3029c50 to 0xd302a000)

<2>

[<c022eda0>] (mxcuart_rx_chars+0x38/0x228) from [<c022f228>] (mxcuart_int+0x74/0x20c)

[<c022f228>] (mxcuart_int+0x74/0x20c) from [<c00a1798>] (handle_IRQ_event+0x24/0xe4)

[<c00a1798>] (handle_IRQ_event+0x24/0xe4) from [<c00a3a34>] (handle_level_irq+0xd4/0x16c)

[<c00a3a34>] (handle_level_irq+0xd4/0x16c) from [<c003906c>] (asm_do_IRQ+0x6c/0x8c)

[<c003906c>] (asm_do_IRQ+0x6c/0x8c) from [<c0039a8c>] (__irq_svc+0x4c/0xcc)

<3>

static void mxcuart_rx_chars(uart_mxc_port *umxc)

{

        volatile unsigned int ch, sr2;

        unsigned int status, flag, max_count = 256;

        sr2 = readl(umxc->port.membase + MXC_UARTUSR2);

        while (((sr2 & MXC_UARTUSR2_RDR) == 1) && (max_count-- > 0)) {

c022ed98:       ea000072        b       c022ef68 <mxcuart_rx_chars+0x200>

                ch = readl(umxc->port.membase + MXC_UARTURXD);

c022ed9c:       e5943004        ldr     r3, [r4, #4]

c022eda0:       e5933000        ldr     r3, [r3]

c022eda4:       f57ff05f        dmb     sy

c022eda8:       e58d3008        str     r3, [sp, #8]

Labels (2)
0 Kudos
4 Replies

716 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello,Pan,

      Please send your complete boot log to me ! My Email : weidong.sun@freescale.com

Weidong

0 Kudos

716 Views
潘紫东
Contributor III

hello,weidong

       i had send the complete boot log to  you!  thank you!

0 Kudos

716 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello,Pan,

      The issue you met should be from settings in init.rc. please modify all UART rights in init.rc and try !

chmod 777 /dev/ttymxc0

chmod 777 /dev/ttymxc1

chmod 777 /dev/ttymxc2

chmod 777 /dev/ttymxc3

chmod 777 /dev/ttymxc4

Then try to boot your board.

Weidong

0 Kudos

716 Views
潘紫东
Contributor III

hellp .weidong

         i don't think the problem is relate with the uart  limits of authority.  because in my android system. ,/dev/ttymxc0-4 all   have 777 mode .   if  /dev/ttymxc* don't have rx  mode,  in the user space  can't access  uart  device driver.

        why device driver  read uart rx  register , it go wrong,

        did you see the context in the log.

             Kernel panic - not syncing: Fatal exception in interrup

        it happen fatal ececption in the irq_function.

         it was caused by  ch = readl(umxc->port.membase + MXC_UARTURXD);

                         the   instruction cause  c022eda0:       e5933000        ldr     r3, [r3]

       

          

0 Kudos