博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OK6410A 开发板 (八) 53 linux-5.11 OK6410A mmap的实例 基于 fb
阅读量:4285 次
发布时间:2019-05-27

本文共 1417 字,大约阅读时间需要 4 分钟。

按照 初始化顺序 	1. 内核 fb core 侧	2. 内核驱动侧(此时fb_mmap没跑)	3. 应用侧(应用侧运行的时候fb_mmap开始跑)
  • 内核 fb core 侧
drivers/video/fbdev/core/fbmem.c	static const struct file_operations fb_fops = {
.mmap = fb_mmap, } fbmem_init register_chrdev(FB_MAJOR, "fb", &fb_fops); fb_mmap // start:51600000,len:7f800 vm_iomap_memory(vma, start, len);
  • 内核驱动侧
fb 驱动 mmap 的代码 来自于 https://github.com/lisider/linux/tree/ok6410a-linux-5.11
drivers/video/samsung/s3cfb.cs3cfb_probe	 s3cfb_map_video_memory(&s3cfb_info[index]);	 	fbi->map_cpu_f1 = dma_alloc_wc(fbi->dev, fbi->map_size_f1, &fbi->map_dma_f1, GFP_KERNEL);	 	// dma=51600000 cpu=(ptrval) size=0007f800	 	// 480 * 272 = 0x1 FE00 (个像素)	 	// 0x1 FE00 像素 * 4byte/像素 =  0007f800 Byte
  • 应用侧
fb write 的代码来自于 Linux设备驱动开发详解光盘 linux设备驱动开发详解光盘源码\linux设备驱动开发详解光盘源码\18\FRAMEBUFFER应用程序范例\fb_displayfb mmap 的代码来自 嵌入式C语言自我修养 P242
fb_mmap 执行的时候, 内核 fb_mmap 执行并调用 vm_iomap_memory 参数 为 		// start:51600000,len:7f800		vm_iomap_memory(vma, start, len);

总结

对应 https://blog.csdn.net/u011011827/article/details/117371188 中 驱动mmap实现的 第一种情况1.在file->f_op->mmap前已经分配了物理内存,file->f_op->mmap 只做了映射
lcd 包括	LCD 控制器		// 对于s3c6410 , lcd 控制器在片上	lcd 驱动器		// 在 lcd 模组上	lcd 屏幕			// 在 lcd 模组上	显示内存(ram) 	// 在 ddr 中					//写数据在ram中,会呈现在屏幕上s3cfb_init_registers s3cfb_set_fb_addr 写了 51600000  到 S3C_VIDW00ADD0B0 寄存器 // 这个寄存器就是 lcd 显示器的 显示内存首地址实际物理地址 addr 51600000 size7f800内核虚拟地址 addr d084b000 size 7f800进程虚拟地址 addr b6dfa000 size 7f800
你可能感兴趣的文章
EventBus 的简单使用
查看>>
Banner 浅析
查看>>
Android Crash框架Recovery
查看>>
限制 EditText 最多输入两位小数
查看>>
Android中attrs.xml文件的使用详解
查看>>
TabLayout 解析
查看>>
android获取屏幕尺寸、密度(判断手机屏幕类型)
查看>>
dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
查看>>
Android drawable 目录下不同精度 浅析
查看>>
Drawable 文件夹——xml文件
查看>>
OkHttp 新手上路
查看>>
Android 蓝牙如何使用
查看>>
自定义View三个方法的意义
查看>>
Java访问控制的作用
查看>>
横竖屏切换的生命周期
查看>>
广播的使用
查看>>
Python Requests库
查看>>
下载离线 Visual Studio 离线安装包
查看>>
Makefile Project 中 MSBuild MSB3073 error 不能正确检测字符串 “error:"
查看>>
Error Code 0x800F081F when Installing .NET Framework 3.5
查看>>