不知道大家使用丰宝/zlg LPC3250开发板没有,他们自带的linux配置了高速串口,hsuart1/2/7之后,如果此时高速串口上有许多数据发送过来,同时在应用上调用usleep,sleep之以及条件等待这些时间方面之类的函数,就会导致系统崩溃,产生oops错误。
1、Backtrace:
[<c006e80c>] (scheduler_tick+0x0/0xc8) from [<c007bf04>] (update_process_times+0x4c/0x58)
r6:00000062 r5:c037905c r4:00000000
[<c007beb8>] (update_process_times+0x0/0x58) from [<c008fd48>] (tick_periodic+0xe8/0x108)
r5:243d5800 r4:c037a184
[<c008fc60>] (tick_periodic+0x0/0x108) from [<c008fd84>] (tick_handle_periodic+0x1c/0x108)
r6:00000000 r5:00000000 r4:c037a184
[<c008fd68>] (tick_handle_periodic+0x0/0x108) from [<c005d0a4>] (lpc32xx_timer_interrupt+0x28/0x90)
[<c005d07c>] (lpc32xx_timer_interrupt+0x0/0x90) from [<c0097b50>] (handle_IRQ_event+0x44/0x84)
[<c0097b0c>] (handle_IRQ_event+0x0/0x84) from [<c00992b0>] (handle_level_irq+0xd0/0x160)
2、Backtrace:
[<c017dee4>] (tty_schedule_flip+0x0/0x78) from [<c019a2a8>] (serial_lpc32xx_interrupt+0x1c8/0x2ac)
r4:c038c448
[<c019a0e0>] (serial_lpc32xx_interrupt+0x0/0x2ac) from [<c007ab50>] (handle_IRQ_event+0x44/0x84)
[<c007ab0c>] (handle_IRQ_event+0x0/0x84) from [<c007c2b0>] (handle_level_irq+0xd0/0x160)
我分析是高速串口中的中断bottom half,底半部处理是可被中断打断的,所以我怀疑是数据互斥未处理好。但为什么会是在调用时间等待函数时,会有这问题呢?不调用时间相关函数的时候一切都好。
不知道有没有朋友遇到过这问题呢?能否帮忙分析一下? |