s3c2410test.c
#include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <fcntl.h> #include <linux/fb.h> #include <sys/mman.h> #include <sys/ioctl.h> extern const unsigned char tu1_320240[]; int main() { int fbfd = 0; struct fb_var_screeninfo vinfo; struct fb_fix_screeninfo finfo; long int screensize = 0; char *fbp = 0; int x = 0, y = 0; long int location = 0; int p=0; unsigned short c; // Open the file for reading and writing fbfd = open("/dev/fb0", O_RDWR); if (fbfd == -1) { perror("Error: cannot open framebuffer device"); exit(1); } printf("The framebuffer device was opened successfully.\n"); // Get fixed screen information if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo) == -1) { perror("Error reading fixed information"); exit(2); } // Get variable screen information if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo) == -1) { perror("Error reading variable information"); exit(3); } printf("%dx%d, %dbpp\n", vinfo.xres, vinfo.yres, vinfo.bits_per_pixel); // Figure out the size of the screen in bytes screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8; // Map the device to memory fbp = (char *)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fbfd, 0); if ((int)fbp == -1) { perror("Error: failed to map framebuffer device to memory"); exit(4); } printf("The framebuffer device was mapped to memory successfully.\n"); // Figure out where in memory to put the pixel for (y = 0; y < 240; y++) for (x = 0; x < 320; x++) { location = (x) * (vinfo.bits_per_pixel/8) + (y+vinfo.yoffset) * finfo.line_length; c=tu1_320240[p+1]|(tu1_320240[p]<<8); *((unsigned short int*)(fbp + location)) =c ; p+=2; } munmap(fbp, screensize); close(fbfd); return 0; }JAkILL_LOGO.h
extern const unsigned char tu1_320240[];JAKILL_LOGO.C
/*BMP C file converted from BMP file*/ #include "pic.h" const unsigned char pic[] = { /* image header, 20 bytes */ /* scan line 1 */ #ifdef WIN32 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
.......
....
arm-linux-gcc -static -o jakilltest s3c2410lcdtest.c JAKILL_LOGO.H JAKILL_LOGO.C
生成的 jakiiltest 在板子在上执行 ./jakilltest
会看到出现一个美女哦
前提:
s3c244 开发板,已经安装linux2.6.30.6,LCD驱动也完好
下一节,linux下的lcd驱动