程式語言 - GNU - C/C++ - Write Framebuffer



參考資訊:
https://stackoverflow.com/questions/32082248/how-to-display-something-on-screen-through-linux-framebuffer

main.c

#include <fcntl.h>
#include <linux/fb.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    int x = 0;
    int y = 0;
    int fd = 0;
    uint16_t *fbp = 0;
    uint32_t size = 0;
    struct fb_var_screeninfo vinfo = {0};
    struct fb_fix_screeninfo finfo = {0};

    fd = open("/dev/fb0", O_RDWR);
    ioctl(fd, FBIOGET_FSCREENINFO, &finfo);
    ioctl(fd, FBIOGET_VSCREENINFO, &vinfo);

    size = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;
    fbp = (uint16_t*)mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
    for (y = 0; y < 240; y++) {
        for (x = 0; x < 320; x++) {
            *fbp++ = 0xf800;
        }
    }
    munmap(fbp, size);
    close(fd);
    return 0;
}