LCD frame buffer 白屏 (熄灭)

有大侠在讨论,主题“qpe运行10分钟后界面自动熄灭?”

不过这里没给出相信信息。

 

通过增加堆栈跟踪信息(添加dump_stack调用),发现白屏的时候,内核的调用情况如下:

[<c008c5f4>] (dump_backtrace+0x0/0x114) from [<c039db50>] (dump_stack+0x18/0x1c) r7:c2001000 r6:00000000 r5:00000000 r4:00000000 [<c039db38>] (dump_stack+0x0/0x1c) from [<c02bbb9c>] (_davinci_disp_disable_layer+0x14/0x98) [<c02bbb88>] (_davinci_disp_disable_layer+0x0/0x98) from [<c02bc360>] (davinci_disp_disable_layer+0x60/0x90) r5:00000000 r4:20000013 [<c02bc300>] (davinci_disp_disable_layer+0x0/0x90) from [<c0217690>] (davincifb_blank+0x70/0x78) r7:c2001000 r6:00000001 r5:c2083400 r4:00000000 [<c0217620>] (davincifb_blank+0x0/0x78) from [<c020641c>] (fb_blank+0x44/0x70) r5:c2083400 r4:c2083400 [<c02063d8>] (fb_blank+0x0/0x70) from [<c020d62c>] (fbcon_blank+0xf4/0x204) r5:c2083400 r4:c04f27d4 [<c020d538>] (fbcon_blank+0x0/0x204) from [<c022ea0c>] (do_blank_screen+0x1c0/0x268) [<c022e84c>] (do_blank_screen+0x0/0x268) from [<c022f878>] (console_callback+0xec/0x11c) r7:c04bcccc r6:c20003a0 r5:c04f27d4 r4:c04f27d4 [<c022f78c>] (console_callback+0x0/0x11c) from [<c00aff88>] (worker_thread+0x138/0x1f8) r7:c2034000 r6:c20003a0 r5:c04bcd00 r4:c04bcd04 [<c00afe50>] (worker_thread+0x0/0x1f8) from [<c00b3a8c>] (kthread+0x88/0x90) [<c00b3a04>] (kthread+0x0/0x90) from [<c00a0d88>] (do_exit+0x0/0x668) r7:00000000 r6:00000000 r5:00000000 r4:00000000

调用关系

do_exit -> kthread ->  worker_thread -> console_callback -> do_blank_screen -> fbcon_blank -> fb_blank -> 
 davincifb_blank -> davinci_disp_disable_layer -> _davinci_disp_disable_layer -> dump_stack (跟踪点)
 

也就是说console模块(callback)调用了

fbcon.c 中的 fbcon_blank

 

看到达芬奇论坛上有人回复如何解决问题的:

 

 

1.      setterm -blank 0 > /dev/vc/0

如出错(在嵌入式设备上出错概率太大了,本人不推荐,未尝试-_- ~!):

首先检查/dev/vc/0 是否存在,或者试试'setterm -initialize'

运行env命令测试 TERM 变量是否设置 linux

或者使用echo -n -e "//033[9;0]" >/dev/vc/0

2.      配置内核去掉framebuffer console

最好不要使用此方法,否则内核启动时,logo无法显示

 

3.      最好的办法是(linux-2.6.32.17

修改drivers/char/vt.c

    static int blankinterval = 10*60;   

    static int Blankinterval = 0;

 

 

 

 

你可能感兴趣的:(thread,c,嵌入式,buffer,callback,layer)