摘要: 5.7.8.1、fb的mode (1)什么是mode (2)fb_var_to_videomode (3)fb_add_videomode 5.7.8.2、注册登记该fb设备 (1)registered_fb[i] = fb_info; (2)结合fb_read等函数中对fb_info的使用 / d 阅读全文
posted @ 2018-07-01 20:17 Ocean&Star 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 5.7.7.1、register_framebuffer (1)fb驱动框架开放给驱动编写着的注册接口 linux提供了register_framebuffer和unregister_framebuffer函数分别注册和注销帧缓冲设备 对于register_framebuffer而言,如果注册的帧缓 阅读全文
posted @ 2018-07-01 20:11 Ocean&Star 阅读(339) 评论(0) 推荐(0) 编辑
摘要: http://www.mamicode.com/info detail 1209620.html 5.7.6.1、fbmem_init函数[driver/video/fbmem.c] (1) ifdef MODULE (2)fb_proc_fops和fb在proc文件系统中的表现 (3)regist 阅读全文
posted @ 2018-07-01 19:21 Ocean&Star 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 参考http://www.cnblogs.com/EaIE099/p/5175979.html 本节对内核的framebuffer驱动框架做整体介绍,各部分涉及哪些文件,每个文件是谁写的,具体功能是什么,详细的代码分析在后面。 5.7.5.1、驱动框架部分 (1)drivers/video/fbme 阅读全文
posted @ 2018-07-01 18:32 Ocean&Star 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 本节继续framebuffer应用编程,使用framebuffer更改分辨率等操作,最后讲述如何去写字、画图等。 5.7.4.1、设置分辨率 (1)实验失败,实验结果是只能修改虚拟分辨率,不能修改可视分辨率。原因要去驱动里找。 (2)正确的做法是在驱动中去修改参数,然后重新编译运行,才能解决。 5. 阅读全文
posted @ 2018-07-01 18:26 Ocean&Star 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 本节继续framebuffer应用编程,使用framebuffer在LCD上显示背景色. 5.7.3.1、mmap做映射 做完了mmap后fb在当前进程中就已经就绪了,随时可以去读写LCD显示器了。 5.7.3.2、fb显示之刷背景 阅读全文
posted @ 2018-07-01 18:25 Ocean&Star 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 本节基于framebuffer编写应用程序进行显示,主要是打开设备文件及获取设备的关键硬件信息、进行显存映射等。 5.7.2.1、打开设备 ls /dev/fb 5.7.2.2、获取设备信息 (1)不可变信息FSCREENINFO,使用ioctl的FBIOGET_FSCREENINFO名 (2)可变 阅读全文
posted @ 2018-07-01 18:23 Ocean&Star 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 本节介绍framebuffer的概念和来源、设计思想,fb设备的应用层接口等,为下节使用framebuffer应用编程打基础。 5.7.1.1、什么是framebuffer (1).裸机中如何操作LCD Soc里面有CPU,LCD控制器;外部有LCD的驱动器,驱动器后面带着屏幕,驱动器和控制器之间使 阅读全文
posted @ 2018-07-01 18:22 Ocean&Star 阅读(279) 评论(0) 推荐(0) 编辑
摘要: https://blog.csdn.net/tigerjibo/article/details/6412469 大部分驱动程序操作都涉及到三个重要的内核数据结构,分别是file_operations、file和inode,它们定义在 1、file_operations:是一个函数指针的集合 1 应用 阅读全文
posted @ 2018-07-01 16:20 Ocean&Star 阅读(932) 评论(0) 推荐(0) 编辑
摘要: / 待整理 / 1、在注册驱动程序的时候,根据主设备号分配的file_operations结构体放到内核的数组里面。我们在用户空间open打开设备的方式是这样的:根据名字找到设备节点,设备节点会对应主设备号,根据主设备号就找到了file_operations结构体。所以我们还需要创建设备节点:mkn 阅读全文
posted @ 2018-07-01 16:06 Ocean&Star 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 1. 建立动态映射 requset_mem_region:向内核申请需要映射的内存资源 ioremap:实现映射,传给物理地址返回虚拟地址 2. 销毁动态映射 iounmap: release_mem_region: 阅读全文
posted @ 2018-07-01 16:02 Ocean&Star 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 1. 静态映射: 不同版本内核中静态映射表位置,文件名可能不同 不同SoC的静态映射表位置,文件名可能不同 所谓映射表其实就是头文件的宏定义 2. 三星版本内核中的静态映射表 主映射表:F:\winshare\kernel\jiuding_kernel\arch\arm\plat s5p\inclu 阅读全文
posted @ 2018-07-01 16:01 Ocean&Star 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 1. 不变: 硬件原理不变 硬件操作接口(寄存器)不变 硬件操作代码不变 寄存器地址不变:裸机直接用物理地址,现在用虚拟地址。 编程习惯不变:裸机用函数指针操作寄存器,现在用封装好的IO读写函数来操作寄存器。 2. 内核的虚拟地址映射方法(MMU) 两种方法: 静态映射: 在内核移植时就以代码方式硬 阅读全文
posted @ 2018-07-01 16:00 Ocean&Star 阅读(156) 评论(0) 推荐(0) 编辑
摘要: copy_from_user返回值:成功复制返回0,不成功复制则返回没有成功复制剩下的字节数 ./app [ 298.706261] test_chrdev_open [ 298.707817] test_chrdev_write [ 298.710645] copy_from_user succe 阅读全文
posted @ 2018-07-01 15:59 Ocean&Star 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 1. ./app 如果app只使用了write(fd, "hellowrite", 10);没有read的话,./app没有反应 error:如果该写了驱动,则应该重新安装驱动 lsmod Module Size Used by Not tainted module_test 1087 0 cat 阅读全文
posted @ 2018-07-01 15:58 Ocean&Star 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 1. 设备文件在/dev下 ls /dev/ (里面每一个文件代表一个硬件) 设备文件是用来索引驱动的(根据major) major相当于数组的下标 设备号=主设备号(决定设备种类如led)+次设备号(led1,led2) 2. 创建设备文件:mknod /dev/xxx c 主设备号 次设备号(c 阅读全文
posted @ 2018-07-01 15:48 Ocean&Star 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 1. F:\winshare\kernel\jiuding_kernel\include\asm generic\errno base.h定义了很多错误码 2. 用register_chrdev注册设备但是没有用unregister_chrdev注销函数 3. 加上unregister_chrdev 阅读全文
posted @ 2018-07-01 15:44 Ocean&Star 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 本节开始字符设备驱动的编码实践,首先把整体框架理顺,然后构建了file_operations结构体变量,并且填充了open和close方法。 5.2.8.1、准备 (1)目的:给空模块添加驱动壳子 (2)核心:file_operations及其元素填充、注册驱动 5.2.8.2、如何动手写驱动代码 阅读全文
posted @ 2018-07-01 15:41 Ocean&Star 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 本节讲解了register_chrdev函数,并且重点讲解了内核内部对字符设备驱动的管理机制。 5.2.7.1、register_chrdev( include ) (1)作用,驱动向内核注册自己的file_operations。驱动自己通过调用内核提供的register_chrdev函数向内核注册 阅读全文
posted @ 2018-07-01 15:40 Ocean&Star 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 5.2.6.1、系统整体工作原理 (1)硬件 设备驱动(实现open,read等) API 应用层 模块是驱动的雏形 驱动:软件控制硬件 (2)API:open、read、write、close等 (3)驱动源码中提供真正的open、read、write、close等函数实体 5.2.6.2、fil 阅读全文
posted @ 2018-07-01 15:34 Ocean&Star 阅读(220) 评论(0) 推荐(0) 编辑