안 드 로 이 드 디 스 플레이 구조 분석 3 - 커 널 공간 디 스 플레이 구조 소개
위의 그림 에서 보 듯 이 상부 의 그래 픽 응용 프로그램 을 제외 하고 Kernel 공간 과 관련 된 것 은 Linux FB 장치 층 과 구체 적 인 HW 와 관련 된 구동 층 을 포함 하고 해당 하 는 소스 파일 은 각각 fb 이다.mem.c、msm_fb.c、mddi_toshiba.c。다음은 일일이 소개 하 겠 습 니 다.fb_mem. c 함수 와 데이터 구조 소개
이 파일 은 Linux Fb 장치 의 모든 인 터 페 이 스 를 포함 하고 있 습 니 다. 주요 함수 인터페이스 와 데이터 구 조 는 다음 과 같 습 니 다.
A. Fb 장치 의 파일 조작 인터페이스
B. 3 개의 중요 한 데이터 구조
FrameBuffer 에는 3 개의 중요 한 구조 체 가 있 는데 fb. h 에서 정 의 된 것 은 다음 과 같다.
1) 、frame_var_screeninfo
이 구조 체 는 디 스 플레이 카드 의 일부 가 변 적 인 특성 을 정의 합 니 다. 이러한 특성 은 프로그램 이 실행 되 는 동안 응용 프로그램의 동적 변화 에 의 해 변 경 될 수 있 습 니 다. 예 를 들 어 xrex 와 yres 는 디 스 플레이 에 표 시 된 실제 해상도, 표 시 된 bit 수 등 전형 적 인 구조 체 user space 에 접근 할 수 있 습 니 다.
2) 、frame_fix_screeninfo
이 구조 체 는 그래 픽 카드 의 고정 적 인 특성 을 정의 합 니 다. 이러한 특성 은 하드웨어 가 초기 화 될 때 변 경 될 수 없 도록 정의 되 었 습 니 다.그 중 가장 중요 한 멤버 는 smemlen 과 smemstart, 전 자 는 디 스 플레이 의 크기 (현재 프로그램 에서 정 의 된 디 스 플레이 크기 는 전체 화면 데이터 RGB 565 크기 의 2 배) 를 표시 하고 후 자 는 디 스 플레이 의 물리 적 주 소 를 제시 합 니 다.이 구조 체 user space 는 접근 할 수 있 습 니 다.
Note:smem_start 는 물리 적 주소 입 니 다. 프로그램 에 직접 접근 할 수 없습니다. fb 를 통 해ops 의 mmp 함수 가 가상 주소 로 매 핑 된 후에 야 응용 프로그램 이 접근 할 수 있 습 니 다.
3) 、fb_info
FrameBuffer 에서 가장 중요 한 구조 체 는 커 널 공간 에서 만 접근 할 수 있 습 니 다.내부 정의 fbops 구조 체 (일련의 FrameBuffer 조작 함수, Open / read / write, 주소 맵 등 포함).
C, 기타
1) 중요 한 전역 변수
struct fb_info *registered_fb[FB_MAX];
이 변 수 는 모든 fb 를 기록 합 니 다.info 구조의 인 스 턴 스, fbinfo 구조 설명 그래 픽 카드 의 현재 상태, 모든 장치 에 대응 하 는 fbinfo 구 조 는 이 배열 에 저 장 됩 니 다. FrameBuffer 장치 가 시스템 에 자신 을 등록 할 때 해당 하 는 fbinfo 구 조 는 이 구조 에 추 가 됩 니 다. 동시에 numregistered_fb 는 자동 으로 1 을 추가 합 니 다.
2) 、 등록 framebuffer 함수
1
2
register_framebuffer(struct fb_info *fb_info);
unregister_framebuffer(struct fb_info *fb_info);
이 두 가 지 는 하층부 FrameBuffer 장치 에 구동 되 는 인터페이스 로 장치 구동 은 이 두 함 수 를 통 해 시스템 에 등록 하거나 로그아웃 합 니 다.거의 바 텀 장치 구동 이 해 야 할 모든 일 은 fb 를 채 우 는 것 입 니 다.info 구조 다음 시스템 에 등록 하거나 로그아웃 합 니 다.
원본 링크:http://hi.baidu.com/leowenj/blog/item/76411bf6237dc429bc31099f.html
Tags:
Android Android 디 스 플레이 구조 분석 Android - displayAndroid - tutorfbmem.cKernel Space Display
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.