간단한 프레임버퍼 테스트 코드인데 에러가 나네요..

hanna의 이미지

리눅스 프레임버퍼 프로그래밍 튜토리얼(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;
}
익명 사용자의 이미지

mmap 할당을 못하나 보네요...

우선 screensize가 어떠한 값이 나오는지 채크해보시고,

mmap 할당해서 사용할 수 있는 권한이 있는지도
확인해보세요...(이를테면 root)