강좌 & 팁
글 수 2,412
2012.11.24 15:25:21 (*.52.177.29)
58756
이 글은 kernel 소스의 Documentation/fb/framebuffer.txt 파일의 내용을 번역 입니다. ( 오역이 있을 수 있습니다. )
원문은 http://lxr.linux.no/linux+v3.6.6/Documentation/fb/framebuffer.txt 을 참고 하시기 바랍니다.
Maintained by Geert Uytterhoeven <geert@linux-m68k.org> Last revised: May 10, 2001
2. 프로그래머 관점에서 /dev/fb*
이미 알다시피, 프레임 버퍼 장치는 /dev/mem 과 같은 메모리 장치와 동일한 기능을 가집니다.
mmap() (주로 사용하는) 을 한 후에 읽고 쓰기는 것을 할 수 있고, 어떠한 위치 이동 할 수 있습니다. 차이점은 특수 파일에 나타나는 메모리가 전체 메모리를 사용 할 수는 없으며, 일부 비디오 하드웨어의 프레임 버퍼 메모리에서만 동작 됩니다.
/dev/fb* 또한, 거기에 여러 ioctls를 허용하며, 하드웨어에 대한 많은 정보들에 대하여 쿼리 및 설정할 수 있습니다. 또한, 색상 맵에 대해서도 ioctls를 통해 처리 합니다. ioctls에 대한 자세한 내용 및 작업을 위한 데이터 구조는 <linux/fb.h> 파일을 살펴보면 확인 할 수 있습니다. 여기에서 간단한 개요을 볼 수 있습니다 :
당신은 이름, 화면 메모리의 주소(판넬, 픽셀, …)와 화면 메모리 길이와 같이 하드웨어의 변경 불가능한 정보를 요청할 수 있습니다.
보여지는 그리고 가상의 지오메트리, 깊이, 색상 맵 형식, 타이밍 및 같은 하드웨어에 대한 변수 정보를 요청하고 변경할 수 있습니다. 만일 정보를 변경하려고 하면 드라이버는 아마도 하드웨어의 기능을 충족 할 값을 반올림합니다. ( 불가능 하다면 EINVAL을 리턴 합니다. )
색상 맵의 일부 값을 얻고, 설정할 수 있습니다. 통신은 기존의 모든 하드웨어를 지원하는 16 비트 (적색, 녹색, 청색, 투명) 컬러값으로 이루어 집니다. 드라이버가 하드웨어에 적용하기 위해 필요한 모든 계산을 수행 합니다.
이 모든 하드웨어 추상화는 응용 프로그램의 구현보다 쉬우며 이동성이 용이 합니다. 예를 들면 X 서버는 /dev/fb* 에 완전하게 동작 하므로 프레임 버퍼에 대하여 알 필요가 없습니다. 예를 들어, 구체적으로 하드웨어의 색상 레지스터를 구성 하게 됩니다. XF68_FBDev는 비트 맵에 대한 일반적인 X 서버입니다. 비디오 하드웨어를 가속하지 않습니다. 직접 프레임 버퍼 이미지 데이터 에서 작동하기 때문에, 응용 프로그램에 내장 할 수 있습니다.
앞으로 프레임 버퍼 그래픽 카드 드라이버와 같이 런타임에 로드되는 커널 모듈로 구현 될 예정입니다. 이러한 드라이버는 register_framebuffer()를 호출과 일부 기능을 제공합니다.
커널에서 독립적으로 이러한 드라이버를 작성 배포하는 것은 아마도 많은 문제가 야기될 것 같습니다.