lcd 드라이버제작에 대한 질문입니다. 도움좀...

houngguy의 이미지

이런 질문을 여기에 올려두 답변을 받을수 있을지 모르겠네요..

우선 제가 하려고 하는 일은

보드에 lcd 드라이버를 올리려고 합니다.

제가 쓰고 있는 보드는 ln2410 이라는 보드이구요 cpu s3c2410 arm cpu 를 사용하고
lcd는 LP35 모델 320 * 240 16bpp 를 사용하고 있습니다.

여기에 os 가 일반적인 linux 나 ce 가 올라가는 것은 아니구요.

마이크로커널 개념의 l4 + iguana + wombat 이라는 다소 생소한 os를 사용하고 있습니다.

우선 lcd 드라이버 만드는 과정을 공부를 하고 linux 에서 제공하는 드라이버 소스를 참고해서 작성을 하고 있습니다.

현재 lcd 초기화를 하는 과정을 거치고 나면 lcd 화면에 하얀 불이 들어옵니다.

그리고서 frame buffer 에 내용을 써서 직선을 하나 그려보려고 하는데 아무리 해도 점이 찍히지가 않습니다.

초기화 과정 부분만 간략히 보여드리면 (주위 : 소스상에 왼쪽 비트 연산자 꺽쇠가 게시판에서 이상하게 표시 되어서 ,, (콤마)로 바꾸어 놓았습니다.)

// LCD CLOCK ENABLE
CLOCK_OFFSET |= (1,,5);

rGPCUP=0xFFFFFFFF; // Disable Pull-up register

rGPCCON &= 0x0000FC03;
rGPCCON=0xAAAAAAAA; // Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND

rGPDUP=0xFFFFFFFF; // Disable Pull-up register
rGPDCON=0xAAAAAAAA; // Initialize VD[23:8]

//GPB setting 이거 끝나면서 불이 켜짐니다.
rGPBDAT|=0x1; // LP35 PWREN

//이부분은 왜 설정하는지 잘 모르겠는데 리눅스 소스상에 있어서 설정을 해보았습니다.
tmp = rGPBCON;
tmp &= ~(0x3,,18);
tmp |= (1,,18); //18-19번비트를 01로 설정 output
rGPBCON=tmp;


rGPBDAT|=(0x1 ,, 9);

/* rLCDCON 1 ~ 5 번까지의 설정 */
rLCDCON1=(1,,8)|(0,,7)|(3,,5)|(12,,1)|0;
// 16bpp TFT, ENVID=off

rLCDCON2=((32-1),,24)|((height-1),,14)|((11-1),,6)|((2-1),,0);
rLCDCON3=((48-1),,19)|((width-1),,8)|((16-1),,0);
rLCDCON4=(13,,8)|((96-1),,0);
rLCDCON5=(1,,11)|(1,,9)|(1,,8)|(1,,0); // FRM 5:6:5,HSYNC and VSYNC are inverted
// BPP24BL:x,FRM565:x,INVVCLK:x,INVVLINE:x,INVVFRAME:x,INVVD:x,
// INVVDEN:x,INVPWREN:x,INVLEND:x,PWREN:x,ENLEND:x,BSWP:x,HWSWP:x

/* frame buffer 에 대한 메모리 번지 레지스터 등록 vram_addr 주소는 frame buffer 메모리 주소로 할당 받아논 주소입니다. */
rLCDSADDR1=(((uint32_t)vram_addr>>22),,21 )|M5D((uint32_t)vram_addr>>1);
rLCDSADDR2=M5D( ((uint32_t)vram_addr+(virtual_width*height*2))>>1 );
rLCDSADDR3=(((virtual_width-width)/1),,11)|(width/1);

rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rLPCSEL&=(~7); // Disable LPC3600
rTPAL=0; // Disable Temp Palette

/* 아래 설정은 power 에 대한 설정으로 메뉴얼에 나온 설정대로 세팅을 해 둔 것입니다. 그런데 power 는
아래 설정은 영향을 안 미치고 rGPBDAT|=0x1; 이거 설정으로 화면을 끄고 키고가 가능합니다. */
//GPG4 is setted as LCD_PWREN
rGPGUP|=(1,,4); // Pull-up disable
rGPGCON|=(3,,8); // GPG4=LCD_PWREN
//Enable LCD POWER ENABLE Function
rLCDCON5|=(1,,3); // PWREN
rLCDCON5&=~(1,,5); // INVPWREN

rLCDCON1|=1; // ENVID=ON
//rLCDCON1&=0X3FFE; //envid = off
rGPBDAT&=~(1); // LP35 PWREN

위와 같이 세팅을 모두 마치고 끝나자 마자 직선을 하나 그어 보기 위해서 아래의 테스트 코드를 실행합니다.

static inline void
lcd_pp(int x, int y, int color)
{
unsigned int addr;
//ln2410sbc_lcd_fb 은 frame buffer의 시작 주소 입니다.
addr=ln2410sbc_lcd_fb+(x+y*SCR_XSIZE)*2;
*(volatile short *)(addr)=color;
}

for (i=0; i , 240; i++) lcd_pp(i, i, 150);

아직 제가 드라이버에 대해서 깊은 지식은 없습니다.
잘못 한 부분이 있는지 확인해 봐야 할 부분이 있다면 말씀해 주시면 찾아보겠습니다.
지금 현재로써는 해볼만한 방법은 다 해봤는데 잘 안되네요.

장문의 질문 봐 주세서 감사합니다. ^^

houngguy의 이미지

for (i=0; i < 240; i++) lcd_pp(i, i, 150);

아직 제가 드라이버에 대해서 깊은 지식은 없습니다.
잘못 한 부분이 있는지 확인해 봐야 할 부분이 있다면 말씀해 주시만 찾아보겠습니다.
지금 현재로써는 해볼만한 방법은 다 해봤는데 잘 안되네요.

장문의 질문 봐 주세서 감사합니다. ^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.