摘要: 1.概述 网卡驱动与硬件相关,主要负责收发网络的数据包,将上层协议传递下来的数据包以特定的媒介访问控制方式进行发送,并将接收到的数据包传递给上层协议。 网卡设备与字符设备,块设备不同,网络设备驱动程序不依赖与 /dev 或 /sys 来与用户空间通信,应用程序是通过网络接口(如作为第一个网络接口的e 阅读全文
posted @ 2019-02-22 12:08 朱果果 阅读(1980) 评论(0) 推荐(0) 编辑
摘要: Ctrl + C 终止 Ctrl + D 退出 Ctrl + S 挂起 Ctrl + Q 解挂 Ctrl + Z 强制结束 阅读全文
posted @ 2019-02-21 15:17 朱果果 阅读(8570) 评论(0) 推荐(0) 编辑
摘要: 一、MTD子系统概述 MTD(Memory Technology Device, 内存技术设备)是用于访问memory 设备 (ROM、FLASH)的Linux子系统。 主要目的是为了使新的memory设备的驱动更加简单,为此MTD在硬件和上层之间提供了一个抽象的接口。 Linux系统中,MTD设备 阅读全文
posted @ 2019-01-20 20:28 朱果果 阅读(694) 评论(0) 推荐(0) 编辑
摘要: 出处:23.Linux-块设备驱动(详解) 通过分析块设备驱动框架,学习如何写块设备驱动 字符设备驱动: 当我们的应用层读写(read()/write())字符设备驱动时,是按字节/字符来读写数据的,期间没有任何缓存区,因为数据量小,不能随机读取数据,例如:按键、LED、鼠标、键盘等 块设备: 块设 阅读全文
posted @ 2019-01-20 14:34 朱果果 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 由上一节 得出写个LCD驱动入口函数,需要以下4步: 1) 分配一个fb_info结构体: framebuffer_alloc(); 2) 设置fb_info 3) 设置硬件相关的操作 4) 使能LCD,并注册fb_info: register_framebuffer() 本节需要用到的函数: 分配 阅读全文
posted @ 2018-12-22 10:17 朱果果 阅读(525) 评论(1) 推荐(0) 编辑
摘要: 引言: 由LCD的硬件原理及操作(可参看韦哥博客:第017课 LCD原理详解及裸机程序分析) 我们知道只要LCD控制器的相关寄存器正确配置好,就可以在LCD面板上显示framebuffer中的内容。 若应用程序需要在LCD屏幕上显示文字或图像时,只需要把相应的显示内容以正确的格式写到Framebuf 阅读全文
posted @ 2018-12-22 09:33 朱果果 阅读(846) 评论(0) 推荐(0) 编辑
摘要: 参考:linux-platform机制实现驱动层分离(详解) platform驱动分离 本节目标: 学习platform机制,如何实现驱动层分离 1、回顾一下上一节的输入子系统 如上图,在输入子系统中,我们通过分层及通过核心层向设备驱动层,事件处理层提供各种接口,使各层都能专注于自己的事情。 对于设 阅读全文
posted @ 2018-12-19 10:32 朱果果 阅读(895) 评论(0) 推荐(0) 编辑
摘要: 由上一节的输入子系统的框架分析可知,其分三层:设备驱动层,核心层,事件驱动层 我们在为某种设备的编写驱动层,只需要关心设备驱动层,即如何驱动设备并获得硬件数据(如按下的按键数据),然后调用核心层提供的接口,核心层就会自动把数据提交给事件处理层。在输入子系统中,事件驱动是标准的,适用于所有输入类的。我 阅读全文
posted @ 2018-12-16 22:37 朱果果 阅读(593) 评论(0) 推荐(0) 编辑
摘要: ssize_t second_drv_read(struct file *file, char __user *buf, size_t size, loff_t *ppos) { } 这是一个文件读函数 ssize_t是signed size_t,size_t是标准C库中定义的,应为unsigned 阅读全文
posted @ 2018-12-16 17:14 朱果果 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 为什么要引入输入子系统? 在前面我们写了一些简单的字符设备的驱动程序,我们是怎么样打开一个设备并操作的呢? 一般都是在执行应用程序时,open一个特定的设备文件,如:/dev/buttons 但是实际上,一般的应用程序不会去打开这样设备文件“/dev/buttons”。一般打开的都是系统原有的文件, 阅读全文
posted @ 2018-12-16 14:27 朱果果 阅读(444) 评论(0) 推荐(0) 编辑