[Q] 리눅스 커널에서 Frame Buffer를 위한 LCD Controller 값 설정 방법

lovelyphy07의 이미지

리눅스 커널을 제가 사용하는 보드에 포팅하려고 수정하고 있습니다. (PXA270)
Frame Buffer를 위해서 LCD Controller 설정을 하려고 합니다.
그런데 설정이 잘못되어서 그런지, 화면이 나오기는 하는데 왼쪽부분이 짤리고,
약 13분 뒤에 화면이 꺼져버리는 기현상이 발생합니다....
아니 왜 잘 나오다가 꺼져버리는 것일까요.. 화면도 짤리고 ㅠ

이런 경우에는 어떤값을 바꾸어야 하는지 궁금합니다 ㅠ

커널 버젼은 2.6.28이고요, linux/arm/arch/mach-pxa/lpd270.c를 수정하고 있습니다.
아래 코드 중에서 주석문 뒤에 있는 숫자는, 시도해본 값들이고요, 즉 총 4번의 시도를 해본 것이지요.
아래 값중에서 특이할만하다 싶은 것은 오직 hsync_len에서 96값이 잘못되었다고 dmesg에서 나온 것 뿐입니다.
많은 분들의 관심 부탁드립니다 ㅠ

static struct pxafb_mode_info robot_lcd_mode __initdata = {
	.pixclock       = 25000,
        .xres           = 670,
        .yres           = 500,
        .bpp            = 16,
        .hsync_len      = 5,    //96, 5, 5
        .left_margin    = 24,   //24, 24, 30
        .right_margin   = 6,   //40, 6, 10
        .vsync_len      = 2,    //2, 2, 2
        .upper_margin   = 8,    //10, 8, 8
        .lower_margin   = 23,   //33, 23, 23
        .sync           = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
};

static struct pxafb_mach_info robot_lcd_mach = {
	.modes 		=	&robot_lcd_mode,
	.num_modes	=	1,
 
	.lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL | LCD_ALTERNATE_MAPPING,
 
	.lccr0	= LCCR0_LDDALT | LCCR0_OUC | LCCR0_PAS,
	.lccr3	= LCCR3_PCP,
 
};
drinkme의 이미지

저 값들은요
사용하시는 LCD마다 달라요.

사용하시는 LCD 모듈의 문서를 참고하세요.

lovelyphy07의 이미지

문제는.. 화면이 나오긴 하는데, 몇분 뒤에 꺼진다는 겁니다...

화면이 잘 안나오다가 꺼진다든지, 아예 안나온다든지 하면 이해가 되는데, 잘 나오다가 꺼지다니요.. ㅠㅠ

값은 tinyvga에서 제공하는 640x480@60Hz 값을 해보았습니다.

혹시 menuconfig에서 따로 또 추가해줘야하는 것이 있는지요? 2.6.28 버젼에서 Device Driver / Graphic Driver/ 아래 PXA관련항목은 거의다 체크하였습니다.

bushi의 이미지

fb 콘솔 상태에서는 화면보호기(?)가 작동합니다.
짐작하신바와는 달리 매우 정상적으로 작동하고 있는 상태라는 겁니다.

자세한 것은... 화면 제대로 나오게 만들고 난 뒤에 알아보고 궁리하셔도 늦지 않습니다.
(아마도 궁리할 필요가 없을 지도 모릅니다. 뭘 올리려고 하시는 지 몰라도... 대부분의 툴킷에서 이 정도 쯤은 자체해결합니다.)

OTL

lovelyphy07의 이미지

말씀하신 바가 맞는듯 하옵니다.

화면은 당연히 제대로 나오고 있고요.. 그래서 지금 궁리하고 있답니다 ^^

툴킷을 말씀하셨는데, 저는 지금 fb를 메모리 매핑하여 직접 뿌리고 있는 실정입니다. 어떤 툴킷을 이용하여 화면보호기를 해제할 수 있는지요?

bushi의 이미지

툴킷이라 언급한 것은 GDI framework 을 제공하는 라이브러리(들)을 뜻합니다.
보통 HID framework 까지 같이 제공됩니다.

SDL 의 경우,
http://www.libsdl.org/cgi/viewvc.cgi/trunk/SDL/src/video/fbcon/SDL_fbevents.c?revision=4211&view=markup
에서 graphic mode 진입 코드를 확인하실 수 있습니다.
Android 는
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=libs/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp;h=1d09f84dca840be28ae8aaba1bfbb2ddcdb275b0;hb=HEAD#l147
다른 툴킷에서도 대동소이한 일이 벌어집니다.

저런 식으로 했을 때 얻어지는 시각적인 효과는 세 가지입니다.
fb 콘솔의 화면보호기 해제.
fb 콘솔의 커서 깜빡임 해제.
fb 콘솔로의 출력 해제.

마지막을 제외한 나머지 두가지는 커널 vc가 제공하는 vt 에뮬을 통해 escape sequence 로도 해결할 수 있습니다.
http://lxr.linux.no/#linux+v2.6.32/drivers/char/vt.c#L1388
http://lxr.linux.no/#linux+v2.6.32/drivers/char/vt.c#L1458

보통... 이렇게(심지어 이것보다 더 장황하게) 글을 올리면,
대부분 삽질포기하고 커널 소스코드를 수정해버리시더군요.

아무거나 마음에 드는 것으로 선택해서 열심히 파고들어 보세요.

OTL

lovelyphy07의 이미지

=_=;; 마지막 말씀보고 깜짝 놀랐습니다..

답변이 언제 올라올지 몰라서 그냥 커널에서 fb console을 해제시켜버렸거든요;;;

이제 사용하면서 화면보호기도 해제할 수 있게되었습니다! 감사합니다 +_+

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.