Linxu S3C2440 LCD驱动 测试程序
主机:VM - RedHat 9.0
开发板:FL2440,linux-2.6.12
arm-linux-gcc:3.4.1
- #include <unistd.h>
- #include <stdio.h>
- #include <fcntl.h>
- #include <linux/fb.h>
- #include <sys/mman.h>
- #define RED_COLOR565 0x0F100
- #define GREEN_COLOR565 0x007E0
- #define BLUE_COLOR565 0x0001F
- int main(void)
- {
- int fd_fb = 0;
- struct fb_var_screeninfo vinfo;
- struct fb_fix_screeninfo finfo;
- long int screen_size = 0;
- short *fbp565 = NULL;
- int x = 0, y = 0;
- fd_fb = open("/dev/fb0", O_RDWR);
- if (!fd_fb)
- {
- printf("Error: cannot open framebuffer device.\n");
- exit(1);
- }
- // Get fixed screen info
- if (ioctl(fd_fb, FBIOGET_FSCREENINFO, &finfo))
- {
- printf("Error reading fixed information.\n");
- exit(2);
- }
- // Get variable screen info
- if (ioctl(fd_fb, FBIOGET_VSCREENINFO, &vinfo))
- {
- printf("Error reading variable information.\n");
- exit(3);
- }
- // the size of the screen in bytes
- screen_size = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;
- printf("%dx%d, %dbpp, screen_size = %d\n", vinfo.xres, vinfo.yres, vinfo.bits_per_pixel, screen_size );
- // map framebuffer to user memory
- fbp565 = (short *)mmap(0, screen_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd_fb, 0);
- if ((int)fbp565 == -1)
- {
- printf("Error: failed to map framebuffer device to memory.\n");
- exit(4);
- }
- if(vinfo.bits_per_pixel == 16)
- {
- printf("16 bpp framebuffer\n");
- // Red Screen
- printf("Red Screen\n");
- for(y = 0; y < vinfo.yres/3; y++)
- {
- for(x = 0; x < vinfo.xres ; x++)
- {
- *(fbp565 + y * vinfo.xres + x) = RED_COLOR565;
- }
- }
- // Green Screen
- printf("Green Screen\n");
- for(y = vinfo.yres/3; y < (vinfo.yres*2)/3; y++)
- {
- for(x = 0; x < vinfo.xres; x++)
- {
- *(fbp565 + y * vinfo.xres + x) =GREEN_COLOR565;
- }
- }
- // Blue Screen
- printf("Blue Screen\n");
- for(y = (vinfo.yres*2)/3; y < vinfo.yres; y++)
- {
- for(x = 0; x < vinfo.xres; x++)
- {
- *(fbp565 + y * vinfo.xres + x) = BLUE_COLOR565;
- }
- }
- }
- else
- {
- printf("warnning: bpp is not 16\n");
- }
- munmap(fbp565, screen_size);
- close(fd_fb);
- return 0;
- }
测试结果,由上往下颜色分别为红、绿、蓝,图像有色差。
相关推荐
IT之家 2020-03-11
graseed 2020-10-28
zbkyumlei 2020-10-12
SXIAOYI 2020-09-16
jinhao 2020-09-07
impress 2020-08-26
liuqipao 2020-07-07
淡风wisdon大大 2020-06-06
yoohsummer 2020-06-01
chenjia00 2020-05-29
baike 2020-05-19
扭来不叫牛奶 2020-05-08
hxmilyy 2020-05-11
黎豆子 2020-05-07
xiongweiwei00 2020-04-29
Cypress 2020-04-25
冰蝶 2020-04-20