摘要:
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
阅读(175)
评论(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
阅读(389)
评论(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
阅读(627)
评论(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
阅读(171)
评论(0)
推荐(0)
摘要:
本节继续framebuffer应用编程,使用framebuffer更改分辨率等操作,最后讲述如何去写字、画图等。 5.7.4.1、设置分辨率 (1)实验失败,实验结果是只能修改虚拟分辨率,不能修改可视分辨率。原因要去驱动里找。 (2)正确的做法是在驱动中去修改参数,然后重新编译运行,才能解决。 5. 阅读全文
posted @ 2018-07-01 18:26
Ocean&Star
阅读(148)
评论(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
阅读(148)
评论(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
阅读(142)
评论(0)
推荐(0)
摘要:
本节介绍framebuffer的概念和来源、设计思想,fb设备的应用层接口等,为下节使用framebuffer应用编程打基础。 5.7.1.1、什么是framebuffer (1).裸机中如何操作LCD Soc里面有CPU,LCD控制器;外部有LCD的驱动器,驱动器后面带着屏幕,驱动器和控制器之间使 阅读全文
posted @ 2018-07-01 18:22
Ocean&Star
阅读(324)
评论(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
阅读(1037)
评论(0)
推荐(0)
摘要:
/ 待整理 / 1、在注册驱动程序的时候,根据主设备号分配的file_operations结构体放到内核的数组里面。我们在用户空间open打开设备的方式是这样的:根据名字找到设备节点,设备节点会对应主设备号,根据主设备号就找到了file_operations结构体。所以我们还需要创建设备节点:mkn 阅读全文
posted @ 2018-07-01 16:06
Ocean&Star
阅读(210)
评论(0)
推荐(0)
摘要:
1. 建立动态映射 requset_mem_region:向内核申请需要映射的内存资源 ioremap:实现映射,传给物理地址返回虚拟地址 2. 销毁动态映射 iounmap: release_mem_region: 阅读全文
posted @ 2018-07-01 16:02
Ocean&Star
阅读(123)
评论(0)
推荐(0)
摘要:
1. 静态映射: 不同版本内核中静态映射表位置,文件名可能不同 不同SoC的静态映射表位置,文件名可能不同 所谓映射表其实就是头文件的宏定义 2. 三星版本内核中的静态映射表 主映射表:F:\winshare\kernel\jiuding_kernel\arch\arm\plat s5p\inclu 阅读全文
posted @ 2018-07-01 16:01
Ocean&Star
阅读(127)
评论(0)
推荐(0)
摘要:
1. 不变: 硬件原理不变 硬件操作接口(寄存器)不变 硬件操作代码不变 寄存器地址不变:裸机直接用物理地址,现在用虚拟地址。 编程习惯不变:裸机用函数指针操作寄存器,现在用封装好的IO读写函数来操作寄存器。 2. 内核的虚拟地址映射方法(MMU) 两种方法: 静态映射: 在内核移植时就以代码方式硬 阅读全文
posted @ 2018-07-01 16:00
Ocean&Star
阅读(162)
评论(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
阅读(123)
评论(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
阅读(130)
评论(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
阅读(196)
评论(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
阅读(101)
评论(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
阅读(122)
评论(0)
推荐(0)
摘要:
本节讲解了register_chrdev函数,并且重点讲解了内核内部对字符设备驱动的管理机制。 5.2.7.1、register_chrdev( include ) (1)作用,驱动向内核注册自己的file_operations。驱动自己通过调用内核提供的register_chrdev函数向内核注册 阅读全文
posted @ 2018-07-01 15:40
Ocean&Star
阅读(167)
评论(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
阅读(241)
评论(0)
推荐(0)
摘要:
set gatewapip 192.168.1.1 tftp下载zImage set bootcmd 'tftp 0x30008000 zImage;bootm 0x30008000' nfs方式挂载rootfs setenv bootargs root=/dev/nfs nfsroot=192.1 阅读全文
posted @ 2018-07-01 15:27
Ocean&Star
阅读(226)
评论(0)
推荐(0)
摘要:
1. printk:printk内核态,printf用户态(没什么用) 打印级别内核把级别比命令行低的所有消息显示在终端(console)上。但是所有信息都会记录在printk的“ring buffer”中。 cat /proc/sys/kernel/printk(4 4 1 7)(比4小的能显示) 阅读全文
posted @ 2018-07-01 15:25
Ocean&Star
阅读(169)
评论(0)
推荐(0)
摘要:
本节主要讲解了模块的卸载过程、MODULE_LICENSE等信息添加宏和__init、__exit宏。 1. static 声明函数,全局变量,则它们不能被其它文件函数调用 声明静态局部变量,具有记忆功能。它与其他普通局部变量区别:static局部变量只被初始化一次,下一次的运算依据上一次的结果值。 阅读全文
posted @ 2018-07-01 15:17
Ocean&Star
阅读(146)
评论(0)
推荐(0)
摘要:
本节主要是讲述并且实践示范驱动开发的环境搭建、构建内核源码树、常用模块安装卸载命令等 5.2.1.1、驱动开发的准备工作 正常运行linux系统的开发板。要求开发板中的linux的zImage必须是自己编译的,不能是别人编译的。 经过配置编译的内核源码树 nfs挂载的rootfs 主机ubuntu中 阅读全文
posted @ 2018-07-01 15:09
Ocean&Star
阅读(185)
评论(0)
推荐(0)
摘要:
转载:https://blog.csdn.net/tangtang_yue/article/details/51036598 kobject,kset是设备模型的基本结构体,设备模型使用这两个结构体来过程设备的层次关系,但在实际的设备驱动编写中,我们基本用不到kobject,kset这些结构体,是因 阅读全文
posted @ 2018-07-01 15:04
Ocean&Star
阅读(1396)
评论(0)
推荐(0)
摘要:
1、设备驱动 https://blog.csdn.net/fivedoumi/article/details/50913615 linux设备驱动分3种,包括字符设备驱动,块设备驱动和网络设备驱动。 字符设备驱动智能按字节流先后顺序访问设备内存,不能随机访问。鼠标,触摸屏,LCD等实时字符设备的代表 阅读全文
posted @ 2018-07-01 14:05
Ocean&Star
阅读(509)
评论(0)
推荐(0)
摘要:
1、基础概念 几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器,状态寄存器和数据寄存器三大类。外设的寄存器通常被连续的编址。根据CPU体系结构的不同,CPU对IO端口的编制方式有两种。 I/O映射方式(I/O mapped) 典型的,如x86处理器为外设专门实现了一个单独的地址空 阅读全文
posted @ 2018-07-01 13:42
Ocean&Star
阅读(1169)
评论(0)
推荐(0)
摘要:
解析完 open、close、read、write 四个函数后,终于到我们的 ioctl() 函数了一、 什么是ioctl ioctl是设备驱动程序中对设备的IO通道进行管理的函数。所谓对IO通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率,马达的转速等。 函数名: ioctl 功 阅读全文
posted @ 2018-07-01 13:27
Ocean&Star
阅读(605)
评论(0)
推荐(1)
摘要:
我们在前面讲到了file_operations,其是一个函数指针的集合,用于存放我们定义的用于操作设备的函数的指针,如果我们不定义,它默认保留为NULL。其中有最重要的几个函数,分别是open()、read()、write()、ioctl(),下面分别对其进行解析 一、 打开和关闭设备函数a 打开设 阅读全文
posted @ 2018-07-01 13:19
Ocean&Star
阅读(611)
评论(0)
推荐(0)
摘要:
https://blog.csdn.net/zqixiao_09/article/details/50850004 下图描述了linux中虚拟文件系统,一般的设备文件与设备驱动程序间的函数调用关系 上图展现了一个应用程序调用字符设备驱动的过程,在设备驱动程序的设计中,一般而言,会关心 file 和 阅读全文
posted @ 2018-07-01 13:03
Ocean&Star
阅读(440)
评论(0)
推荐(0)
浙公网安备 33010602011771号