以下以图片的形式显示出LCD驱动中几个文件的关系:
对于framebuffer驱动的分析,建议看另外一篇文章:framebuffer驱动的分析
下面说一下应用程序对驱动的操作:
首先,用open函数打开设备,并用ioctl获得fb_var_screeninfo和fb_fix_screeninfo参数
fd = open(argv[1],O_RDWR);
if (fd <0){
printf("error opening %s\n",argv[1]);
exit(1);
}
/* Get fixed screen information */
if (ioctl(fd, FBIOGET_FSCREENINFO, &fb_fix)) {
printf("Error reading fb fixed information.\n");
exit(1);
}
/* Get variable screen information */
if (ioctl(fd, FBIOGET_VSCREENINFO, &fb_var)) {
printf("Error reading fb variable information.\n");
exit(1);
}
接下来可以像操作内存一般操作显示屏了:
fb_base_addr = (char *)fb_fix.smem_start;
/*blank */
memset(fb_base_addr,0x00,screensize);