首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux系统驱动之结合APP分析LCD驱动程序

Linux系统驱动之结合APP分析LCD驱动程序

作者头像
韦东山
发布2021-12-08 10:30:55
发布2021-12-08 10:30:55
2.5K00
代码可运行
举报
文章被收录于专栏:韦东山嵌入式韦东山嵌入式
运行总次数:0
代码可运行

资料下载

coding无法使用浏览器打开,必须用git工具下载:

代码语言:javascript
代码运行次数:0
运行
复制
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git

视频观看

百问网驱动大全

结合APP分析LCD驱动程序

本节视频对应源码在GIT仓库中,位置如下(这2个文件是完全一样的):

代码语言:javascript
代码运行次数:0
运行
复制
doc_and_source_for_drivers\STM32MP157\source\A7\03_LCD\04_fb_test
或:
doc_and_source_for_drivers\IMX6ULL\source\03_LCD\04_fb_test

1. open

代码语言:javascript
代码运行次数:0
运行
复制
app:  open("/dev/fb0", ...)   主设备号: 29, 次设备号: 0
--------------------------------------------------------------
kernel:
         fb_open   // fbmem.c
         	struct fb_info *info;
         	info = get_fb_info(fbidx);
			
			if (info->fbops->fb_open) {
				res = info->fbops->fb_open(info,1);   // 硬件相关的驱动
				if (res)
					module_put(info->fbops->owner);
			}         	

2. 获得可变信息(含有分辨率等)

代码语言:javascript
代码运行次数:0
运行
复制
app:  	ioctl(fd, FBIOGET_VSCREENINFO, &fb_info->var);
-------------------------------------------------------------------------
kernel:
         fb_ioctl   // fbmem.c
         	struct fb_info *info = file_fb_info(file);

         	do_fb_ioctl(info, cmd, arg);
         		var = info->var;     // 硬件相关的驱动设置的
         		ret = copy_to_user(argp, &var, sizeof(var)) ? -EFAULT : 0;

3. 获得固定信息(含有显存信息)

代码语言:javascript
代码运行次数:0
运行
复制
app:  	ioctl(fd, FBIOGET_FSCREENINFO, &fb_info->fix);
-------------------------------------------------------------------------
kernel:
         fb_ioctl   // fbmem.c
         	struct fb_info *info = file_fb_info(file);

         	do_fb_ioctl(info, cmd, arg);
         		fix = info->fix;     // 硬件相关的驱动设置的
         		ret = copy_to_user(argp, &fix, sizeof(fix)) ? -EFAULT : 0;

4. mmap

代码语言:javascript
代码运行次数:0
运行
复制
app:void *ptr = mmap(0,
			fb_info->var.yres_virtual * fb_info->fix.line_length,
			PROT_WRITE | PROT_READ,
			MAP_SHARED, fd, 0);
-------------------------------------------------------------------------
kernel:
         fb_mmap   // fbmem.c
         	struct fb_info *info = file_fb_info(file);

         	start = info->fix.smem_start;
         	len = info->fix.smem_len;
         	return vm_iomap_memory(vma, start, len);

5. 绘制图片

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资料下载
  • 视频观看
  • 结合APP分析LCD驱动程序
    • 1. open
    • 2. 获得可变信息(含有分辨率等)
    • 3. 获得固定信息(含有显存信息)
    • 4. mmap
    • 5. 绘制图片
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档