간단한 프레임버퍼 테스트 코드인데 에러가 나네요..
글쓴이: hanna / 작성시간: 월, 2005/04/25 - 10:38오후
리눅스 프레임버퍼 프로그래밍 튜토리얼(http://www.sm5sxl.net/~mats/src/unix/graphics/fbtest/framebuffer.html)에 있는 소스 코드를 컴파일하고 실행하는데.. 에러가 나네요.. 머가 문제일지 모르겠습니다.. 참고로 데비안 우디를 사용하고 있고, 처음 부팅할때 펭귄그림 나오면 프레임버퍼를 지원하는 커널이라는데..
#include <unistd.h> #include <stdio.h> #include <fcntl.h> #include <linux/fb.h> #include <sys/mman.h> int main() { int fbfd = 0; struct fb_var_screeninfo vinfo; struct fb_fix_screeninfo finfo; long int screensize = 0; char *fbp = 0; fbfd = open("/dev/fb0", O_RDWR); if (!fbfd) { printf("Error: cannot open framebuffer device.\n"); exit(1); } printf("The framebuffer device was opened successfully.\n"); if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo)) { printf("Error reading fixed information.\n"); exit(2); } if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo)) { printf("Error reading variable information.\n"); exit(3); } screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8; fbp = (char *)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fbfd, 0); [b] if ((int)fbp == -1) { /* ** 이 부분에서 에러입니다.. ** */ printf("Error: failed to map framebuffer device to memory.\n"); exit(4); }[/b] printf("The framebuffer device was mapped to memory successfully.\n"); munmap(fbp, screensize); close(fbfd); return 0; }
Forums:
mmap 할당을 못하나 보네요...우선 screensize가 어떠
mmap 할당을 못하나 보네요...
우선 screensize가 어떠한 값이 나오는지 채크해보시고,
mmap 할당해서 사용할 수 있는 권한이 있는지도
확인해보세요...(이를테면 root)
댓글 달기