嵌入式linux中Framebuffer 驱动程序框架分析

简介: 嵌入式linux中Framebuffer 驱动程序框架分析

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

   本文参考百问网驱动大全

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

2. Framebuffer 驱动程序框架

分为上下两层:

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

调用关系:

例子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/

目录
打赏
0
0
0
0
44
分享
相关文章
PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘
本文详细介绍了 Realtek RTL8125B PCIe 以太网芯片的规格以及在 Linux 中的驱动安装和配置方法。通过深入分析驱动源码,可以更好地理解其工作原理和优化方法。在实际应用中,合理配置和优化驱动程序可以显著提升网络性能和稳定性。希望本文能帮助您更好地使用和管理 RTL8125B,以满足各种网络应用需求。
55 33
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
101 15
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
92 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
2月前
|
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
64 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
63 7
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
122 13
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
linux下的framebuffer显示图片
<p>void  showbmp2()<br>  {<br>      int x,y;<br>      unsigned char *p;<br>      int index=0; <br>      struct fb_var_screeninfo vinfo;  <br>      struct fb_fix_screeninfo finfo;  </p> <p> 
1840 0
|
10天前
|
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
50 23
Linux系统之whereis命令的基本使用
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
354 8
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等