Linux Framebuffer驱动框架、接口实现和使用

编程入门 行业动态 更新时间:2024-10-26 20:26:07

Linux Framebuffer驱动<a href=https://www.elefans.com/category/jswz/34/1770644.html style=框架、接口实现和使用"/>

Linux Framebuffer驱动框架、接口实现和使用

Linux 驱动-Frame Buffer代码分析

  • Framebuffer
  • fbmem.c部分代码分析
    • 初始化

Framebuffer


  对于驱动开发人员来说,其实只需要针对具体的硬件平台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的注册和bind:
fbcon总结

更多推荐

Linux Framebuffer驱动框架、接口实现和使用

本文发布于:2023-11-16 18:02:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1630365.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:框架   接口   Linux   Framebuffer

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!