深圳网站建设 卓越迈,重庆网站设计中心,wordpress设置固定链接后,网站编辑怎么做内容分类Linux 驱动-Frame Buffer代码分析 Framebufferfbmem.c部分代码分析初始化 Framebuffer 对于驱动开发人员来说#xff0c;其实只需要针对具体的硬件平台SOC和具体的LCD#xff08;通过焊接连接到该SOC引脚上的LCD#xff09;来进行第一部分的寄存器编程#xff08;红色部分其实只需要针对具体的硬件平台SOC和具体的LCD通过焊接连接到该SOC引脚上的LCD来进行第一部分的寄存器编程红色部分。而第二、三、四部分内容绿色部分已经被抽象并实现在linux driver源码中了LCD驱动开发人员只需要理解framebuffer内部的框架和接口使用即可。 其源代码位于fbmem.c文件
fbmem.c部分代码分析
初始化
首先是看驱动的入口函数module_init()
static int __init
fbmem_init(void)
{int ret;if (!proc_create_seq(fb, 0, NULL, proc_fb_seq_ops))return -ENOMEM;ret register_chrdev(FB_MAJOR, fb, fb_fops);if (ret) {printk(unable to get major %d for fb devs\n, FB_MAJOR);goto err_chrdev;}fb_class class_create(THIS_MODULE, graphics);if (IS_ERR(fb_class)) {ret PTR_ERR(fb_class);pr_warn(Unable to create fb class; errno %d\n, ret);fb_class NULL;goto err_class;}fb_console_init();return 0;err_class:unregister_chrdev(FB_MAJOR, fb);
err_chrdev:remove_proc_entry(fb, NULL);return ret;
}在/proc文件下创建fb目录 利用proc_create_seq()函数创建
在使用cat命令查看该文件时显示的为
注册字符设备 使用注册字符设备的套路调用register_chrdev()函数 这里的read与write都是对像素点进行操作创建类 调用class_create()函数在这并没有设备绑定在创建的类下在有具体的设备驱动注册时会调用register_framebuffe()函数来创建帧缓冲设备使之与fbmem关联并绑定在该类下帧缓冲区控制台初始化 然后调用fb_console_init()函数
void __init fb_console_init(void)
{int i;console_lock();fb_register_client(fbcon_event_notifier);fbcon_device device_create(fb_class, NULL, MKDEV(0, 0), NULL,fbcon);if (IS_ERR(fbcon_device)) {printk(KERN_WARNING Unable to create device for fbcon; errno %ld\n,PTR_ERR(fbcon_device));fbcon_device NULL;} elsefbcon_init_device();for (i 0; i MAX_NR_CONSOLES; i)con2fb_map[i] -1;fbcon_start();console_unlock();
}对于fbcon参考以下文章 fbcon的注册和bindhttps://blog.csdn.net/tiantao2012/article/details/71514346 fbcon总结