前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Framebuffer 驱动程序框架

Framebuffer 驱动程序框架

作者头像
Jasonangel
发布2024-01-31 15:17:58
970
发布2024-01-31 15:17:58
举报

本文参考百问网-韦东山驱动大全

1. 怎么编写字符设备驱动程序

  • 主设备号
  • 构造 file_operations 结构体,填充 open/read/write 等成员函数
  • 注册驱动:register_chrdev(major, name, &fops)
  • 入口函数
  • 出口函数

2. Framebuffer 驱动程序框架

分为上下两层:

  • fbmem.c:承上启下
    • 实现、注册 file_operations 结构体
    • 把 APP 的调用向下转发到具体的硬件驱动程序
  • xxx_fb.c:硬件相关的驱动程序
    • 实现、注册 fb_info 结构体
    • 实现硬件操作

调用关系:

代码语言:javascript
复制
例子1:
app:  open("/dev/fb0", ...)   主设备号: 29, 次设备号: 0
--------------------------------------------------------------
kernel:
   fb_open
    int fbidx = iminor(inode);
    struct fb_info *info = = registered_fb[0];


例子2:
app:  read()
---------------------------------------------------------------
kernel:
  fb_read
   int fbidx = iminor(inode);
   struct fb_info *info = registered_fb[fbidx];
   if (info->fbops->fb_read)
      return info->fbops->fb_read(info, buf, count, ppos);
   src = (u32 __iomem *) (info->screen_base + p);
   dst = buffer;
   *dst++ = fb_readl(src++);
   copy_to_user(buf, buffer, c)          

3. 怎么编写 Framebuffer 驱动程序

核心结构体:

  • 分配 fb_info
    • framebuffer_alloc
  • 设置 fb_info
    • var
    • fbops
    • 硬件相关操作
  • 注册 fb_info
    • register_framebuffer

4. 阅读源码

阅读 Android 和 Linux kernel 源码:

http://aospxref.com/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式Linux系统开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 怎么编写字符设备驱动程序
  • 2. Framebuffer 驱动程序框架
  • 3. 怎么编写 Framebuffer 驱动程序
  • 4. 阅读源码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档