论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
数据库
›
Oracle
›
【Linux】内核驱动学习条记(二)
【Linux】内核驱动学习条记(二)
张裕
论坛元老
|
2025-4-3 19:37:04
|
显示全部楼层
|
阅读模式
楼主
主题
1416
|
帖子
1416
|
积分
4248
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
7、framebuffer驱动详解
7.1、什么是framebuffer
(1)裸机中怎样操纵LCD
(2)OS下操纵LCD的难点
(3)framebuffer帧缓冲(简称fb)是linux内核中虚拟出的一个装备
(4)framebuffer向应用层提供一个
统一标准接口
的
显示装备
(5)从驱动来看,
fb是一个典型的字符装备
,而且创建了一个类/sys/class/graphics
framebuffer的使用:
(1)装备文件 /dev/fb0
(2)获取装备信息 #include <linux/fb.h>
(3)mmap做映射
(4)添补framebuffer
7.2、framebuffer应用编程实践
1、打开装备
2、获取装备信息
(1)不可变信息FSCREENINFO,使用ioctl的FBIOGET_FSCREENINFO名
(2)可变信息VSCREENINFO,使用ioctl的FBIOGET_VSCREENINFO名
3、mmap做映射
做完了mmap后fb在当前进程中就已经就绪了,随时可以去读写LCD显示器了。
4、fb显示之刷背景
5、设置分辨率
(1)实验失败,
实验结果是只能修改虚拟分辨率,不能修改可视分辨率
。缘故原由要去驱动里找。
(2)精确的做法是在驱动中去修改参数,然后重新编译运行,才气解决。
6、写字、画线、图片显示等
7.3、framebuffer驱动框架总览
7.3.1、framebuffer驱动框架部门
(1)drivers/video/fbmem.c
。主要任务:1、创建graphics类、注册FB的字符装备驱动、提供register_framebuffer接口给具体framebuffer驱动编写着来注册fb装备的。本文件相对于fb来说,地位和作用和misc.c文件相对于杂散类装备来说一样的,结构和分析方法也是类似的。
(2)drivers/video/fbsys.c
。这个文件是处理fb在/sys目录下的一些属性文件的。
(3)drivers/video/modedb.c
。这个文件是管理显示模式(譬如VGA、720P等就是显示模式)的
(4)drivers/video/fb_notify.c
7.3.2、framebuffer驱动部门
(1)drivers/video/samsung/s3cfb.c,驱动主体
(2)drivers/video/samsung/s3cfb_fimd6x.c,里面有很多LCD硬件操纵的函数
(2)arch/arm/mach-s5pv210/mach-x210.c,负责提供platform_device的
(3)arch/arm/plat-s5p/devs.c,为platform_device提供一些硬件形貌信息的
7.3.3、怎样分析
(1)履历
(2)
分析menuconfig、Makefile、Kconfig
等
(3)内核编译后检查编译结果中的.o文件
7.3.3.1、framebuffer驱动框架分析
1、
fbmem_init函数
(1)#ifdef MODULE
(2)fb_proc_fops和fb在proc文件体系中的体现
(3)register_chrdev注册fb装备
(4)class_create创建graphics类
(5)fbmem_exit的对应
2、
fb_fops函数
(1)read/write/mmap/ioctl
(2)registered_fb和num_registered_fb
(3)struct fb_info
3、
register_framebuffer
(1)fb驱动框架开放给驱动编写着的注册接口
(2)fb_check_foreignness
(3)remove_conflicting_framebuffers
(4)device_create
(5)fb_init_device
4、
fb在sysfs中的接口
(1)device_attrs
(2)dev_set_drvdata和dev_get_drvdata
5、
fb的mode
(1)什么是mode
(2)fb_var_to_videomode
(3)fb_add_videomode
6、
注册登记该fb装备
(1)registered_fb
= fb_info;
(2)结合fb_read等函数中对fb_info的使用
(3)关键点:数据怎样封装、数据由谁预备由谁消费、数据怎样传递
7、
fb_notifier_call_chain
7.3.3.2、framebuffer驱动分析
1、
s3cfb.c
(1)注意目录结构的构造
(2)s3cfb_driver
2、
s3c_device_fb
(1)mach-x210.c中,被使用
(2)devs.c中
(3)resource的定义和作用
3、
probe函数分析
(1)struct s3c_platform_fb 这个结构体是fb的platform_data结构体,这个结构体变量就是platform装备的私有数据,这个数据在platform_device.device.platform_data中存储。在mach文件中去预备并添补这些数据,在probe函数中通过传参的platform_device指针取出来。
(2)struct s3cfb_global 这个结构体主要作用是在驱动部门的2个文件(s3cfb.c和s3cfb_fimd6x.c)的函数中做数据传递用的。
(3)struct resource
(4)regulator
4、
platform_data的传递过程
(1)to_fb_plat
(2)s3cfb_set_platdata
(3)smdkc110_machine_init
5、struct s3cfb_lcd
6、pdata->cfg_gpio
7、pdata->clk_on
8、resource的处理
(1)platform_device中提供resource结构体数组
(2)probe中platform_get_resource取出resource并且按FLAG分头处理
9、一些硬件操纵
(1)s3cfb_set_vsync_interrupt
(2)s3cfb_set_global_interrupt
(3)s3cfb_set_clock
(4)s3cfb_set_window
(5)s3cfb_display_on
10、s3cfb_init_global
11、向框架注册该fb装备
(1)s3cfb_alloc_framebuffer
(2)s3cfb_register_framebuffer
12、驱动中处理中断
(1)platform_get_irq
(2)request_irq
13、logo显示
14、backlight点亮
7.4、应用层为何不能设置分辨率
1、题目形貌
(1)在上文《7.2、framebuffer应用编程实践》节时试图在应用层设置分辨率失败了,缘故原由何在?
(2)定位题目:肯定是驱动的事儿
(3)进一步驱动中定位:ioctl部门的事儿
2、fb的ioctl部门
(1)fb是典型的字符装备驱动
(2)
ioctl分为2部门
,在
驱动框架部门
和
驱动部门
各有一半
(3)一起追踪找题目
7.5.折腾内核的启动logo
1、让logo显示在屏幕中央
2、自定义内核启动logo
后来发现CSDN也有小伙伴总结,而且带图的,可以直接查看如下博客链接:
framebuffer驱动详解-from big_C
8、input子体系
input子体系驱动详解-from big_C
9、块装备驱动先容
块装备驱动先容_genhd.c blkdev.h-CSDN博客
10、网络装备驱动先容
网络装备驱动先容_ppp驱动ifnamsiz-CSDN博客
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
张裕
论坛元老
这个人很懒什么都没写!
楼主热帖
AI绘画Stable Diffusion Lora模子的利 ...
什么时候用C而不消C++?
049-WEB攻防-文件上传&存储安全&OSS对 ...
Linux安装最新版Docker完整教程(建议 ...
这所985超燃,中科院院士10天发四篇Nat ...
Docker 容器 mysql 配置主从
在 Kubernetes 中部署 Alertmanager ...
京准电钟:GPS北斗卫星时钟同步系统行 ...
【数据结构初阶】单链表经典算法题十道 ...
高性能序列化:Protobuf与Avro
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
虚拟化与私有云
运维.售后
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表