기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

여기 와서 매번 질문을 드리네요.. ^^


LCD 디스플레이 관련 질문입니다.


LCD 디스플레이 화면을 조금 움직이고 싶은데


화면이 변화가 안됩니다.


<meta http-equiv="content-type" content="text/html; charset=utf-8">ftp://apple.mjc.ac.kr/%B1%E8%C3%B6/WinIDE%20Studio/OS_Win/example/draw/u_draw.c


여기 사이트에 참조 하게 되면


FB 의 가상 메모리에 직접 쓰기를 하여 컨트롤을 하게 되는 부분이 있는데


이 부분처럼 직접적인 FB 를 컨트롤 하여 화면을 시프트 시키고 싶습니다.


LCD 크기가 800x480 인데 실제 비디오 데이터는 720x480 입니다.


D1 급을 지원만 하기에 사이즈를 조절이 불가능한데


사진을 보시면 이해가 되시겠지만 720x480 에서 X축만 40정도 옮겨서


화면을 중간에 하고 싶다는 얘기 입니다.


----------------                            ------------------

|[       ]  |                           |  [       ]  | 

|[       ]  |                           |  [       ]  |

----------------                            -------------------


혹시 이해가 안되실수도 있으니 


소스랑 그림 첨부 하겠습니다.


시간 괜찮으시다면 팁이나 힌트 알려주시면 감사하겠습니다.LCD_image.jpg

</meta>


신현호

2011.09.01 02:14:14
*.66.95.30

실제 LCD의 resolution이 800x480 pixel이고, framebuffer도 800*480일테니..

 

비디오 장치가 framebuffer에 데이터를 뿌릴때 x_offset을 말씀하신것 처럼 40pixel을 주시고

 

stride 값을 LCD의 x width에 맞게 800에 맞춰주시면 말씀하신데로 화면을 구성하실수 있을겁니다.

funmoney

2011.09.02 19:32:13
*.169.251.167

일반적으로 Frame buffer driver 에서는 메모리만 할당받고 이것을 app 수준에서 직접 쓸수 있도록

인터페이스 까지만 열어 둡니다. ( 표준 인터페이스 방식 )

그러면 app 또는 graphic library 또는 GUI 를 포함한 OS 에서 /dev/fb 라는 device 파일을 통하여

그림을 그리게 됩니다.

이때 그림을 그릴때 사용되는 함수는 write() 또는 mmap() 등이 app 수준에서 호출되어 사용됩니다.

write() 함수를 사용한다면 이 함수는 자주 호출 될 것이고 mmap() 을 사용한다면 이 함수로부터 얻어진

frame buffer pointer 을 사용하여 app 이 직접 kernel 수준의 memory 에 쓰는 방식이 됩니다.

 

따라서, write() / mmap() 과 관련이 되는 driver 소스코드 부분을 분석해 보시면 될 듯 합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수sort

사용자 로그인