一.字符设备驱动程序介绍 app里面用 open.read.write等等函数出来操作底层硬件.驱动程序中也有对应的xxx_open等函数.怎么找到驱动程序中的函数依赖于驱动程序框架. 二.搭建驱动程序框架 2.1 初步框架 2.1.1 Makefile 2.1.2 jz2440_led.c #include <linux/module.h> #include <linux/of.h> #include <linux/of_device.h> #include <…
一.裁剪内核 1.1 第一次修改 现在的内核大小为2.8M左右,要裁剪到2.0M以下,毕竟给内核分区就只有2.0M. 这两个设备我们没有,裁剪掉. 进入make menuconfig中,搜索mousedev: 进入里面按需要进行裁剪. 搜索 lp: hostname修改: 文件系统再此修改: 去掉如下选项: 再次进入device driver,->input device->touch creen 配置上 去掉: 修改完后,保存.然后编译执行,查看uImage的大小 裁剪出来的大小为2.66M…
一.环境搭建 源码包下载:git clone https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.10.8.tar.gz 或者直接去kernel.org上面进行下载. 交叉编译工具链制作: 这个已经在u-boot移植中已经做过了:http://www.cnblogs.com/kele-dad/p/6910040.html 二.内核启动过程 2.1 Windows 和 Linux 系统的启动区别 由bootloader确定启动哪块单板. 2.2…
一.初步裁剪 在内核根目录下 执行: make menuconfig 1.1 system type裁剪 选择 SAMSUNG S3C24XX SoCs Support 进入其中,这里是配置我们的单板,取消与2440无关的配置: 1.2 文件系统裁剪 以模块加入的可以保留,其他的看情况进行裁剪. 1.3 device driver裁剪 里面有些驱动不是我们所需要的,我们的目标板根本不支持那些的功能就可以裁剪掉: 1.3.1 Network device support USB适配器我们并不支持,…
一.设备驱动的分类 1.字符设备 字符设备是指那些能一个字节一个字节读取数据的设备,如LED灯.键盘.鼠标等.字符设备一般需要在驱动层实现open().close().read().write().ioctl()等函数. 2.块设备 块设备与字符设备类似,一般是像磁盘一样的设备.在块设备中还可以容纳文件系统,并存储大量的信息.在linux系统中,进行块设备读写时,每次只能传输一个或者多个块.linux也可以让应用程序像访问字符设备一样访问块设备,一次只读取一个字节. 3.网络设备 网络设备主要负…
原文:Linux内核分析(五)----字符设备驱动实现 Linux内核分析(五) 昨天我们对linux内核的子系统进行简单的认识,今天我们正式进入驱动的开发,我们今后的学习为了避免大家没有硬件的缺陷,我们都会以虚拟的设备为例进行学习,所以大家不必害怕没有硬件的问题. 今天我们会分析到以下内容: 1.      字符设备驱动基础 2.      简单字符设备驱动实现 3.      驱动测试 l  字符设备基础 1.       字符设备描述结构 在linux2.6内核中,使用cdev结构体描述一…
1.一般情况下,对每一种设备驱动都会定义一个软件模块,这个工程模块包含.h和.c文件,前者定义该设备驱动的数据结构并声明外部函数,后者进行设备驱动的具体实现. 2.典型的无操作系统下的逻辑开发程序是:这种三层的裸机驱动模型是足够满足低耦合.高内聚的特点的. 3.当有操作系统存在时,设备驱动成为了连接硬件和内核的桥梁,这时候的设备驱动对外表现为操作系统的API,与直接裸机开发不同,裸机开发时的设备驱动是应用工程师的API.如果设备驱动都按照操作系统给出的独立于设备的接口而设计,应用程序将可以使用统…
文章从上层应用访问字符设备驱动开始,一步步地深入分析Linux字符设备的软件层次.组成框架和交互.如何编写驱动.设备文件的创建和mdev原理,对Linux字符设备驱动有全面的讲解.本文整合之前发表的<Linux字符设备驱动剖析>和<Linux 设备文件的创建和mdev>两篇文章,基于linux字符设备驱动的所有相关知识给读者一个完整的呈现. 一.从最简单的应用程序入手 1.很简单,open设备文件,read.write.ioctl,最后close退出.如下: 二./dev目录与文件…
转载自:http://www.kancloud.cn/yueqian_scut/emlinux/106829 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术.对于初学者来说会非常困惑,甚至对Linux有一定基础的工程师而言,能够较好理解这些相关技术也相对不错了.要深刻理解其中的原理需要非常熟悉设备驱动相关的框架和模型代码.网络上有关这些技术的文章不少,但多是对其中的某一点进行阐述,很难找到对这些技术进行比较和关联的分析.对于开发者…
深入浅出:Linux设备驱动之字符设备驱动 一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面向流的设备,常见的字符设备有鼠标.键盘.串口.控制台和LED设备等. 块设备:是指可以从设备的任意位置读取一定长度数据的设备.块设备包括硬盘.磁盘.U盘和SD卡等. 每一个字符设备或块设备都在/dev目录下对应一个设备文件.linux用户程序通过设备文件(或称…