
LINUX驱动基础解析
文章平均质量分 64
蜗蜗前行
嵌入式软件
展开
-
linux驱动头文件解读
头文件位置#include <Linux/***.h> //是在linux-kernel/include/linux下面寻找源文件。#include <asm/***.h> //是在linux-kernel/arch/arm/include/asm下面寻找源文件。#include <mach/***.h>原创 2017-01-15 16:57:52 · 513 阅读 · 0 评论 -
字符设备驱动开发流程详解
字符驱动相关概念解析一、驱动初始化1.1分配设备描述结构1.2初始化设备描述结构1.3.注册设备描述结构1.4.硬件初始化二、实现设备操作2.1open2.2read2.3.write2.4.lseek2.5close2.6参数分析三、驱动注销**字符驱动相关概念解析1设备描述结构* 在任何一种驱动模型,字符、网卡驱动等,设备都会用内核的一种结构来描述。我们的字符设备在内核中使用struct cd原创 2016-08-03 11:08:29 · 1217 阅读 · 0 评论 -
设备驱动开发前奏
1.linux驱动分类字符设备、块设备、网络设备 字符设备是一种按字节来访问的设备,字符驱动负责驱动字符设备。最小访问和写入的数据量为字节,通过文件方式完成对字符设备的访问。 块设备以块(通常是512字节或者512字节的倍数)为最小传输单位的设备,块设备不接受字节处理数据 网络接口设备可以是硬件设备:eth0;也可以是纯粹的软件设备(L0+loop),网络接口负责发送和接收数据。 总线分类法原创 2016-08-03 10:44:24 · 434 阅读 · 0 评论 -
GPIO初始化及点亮LED
GPIO的配置##**GPIO的配置****linux中申请GPIO的头文件**include/linux/gpio.h**三星平台的GPIO配置函数头文件**arch/arm/plat-samsung/include/plat/gpio-cfg.h,其中包括三星所有处理器的配置函数。**三星平台EXYNOS系列平台,GPIO配置参数宏定义头文件**arch/arm/plat-samsun原创 2016-07-22 17:27:42 · 7325 阅读 · 0 评论 -
简单的应用调用驱动
应用调用驱动通过编写简单的C语言程序调用已经加载的驱动程序,测试驱动程序的功能。应用程序包含头文件有:1.```c#include <sys/types.h>```包含基本系统数据类型。系统的基本数据类型在32 编译环境中保持为32 位值,并会在64 编译环境中增长为64 位值原创 2016-07-21 20:11:11 · 1092 阅读 · 0 评论 -
生成设备节点
生成设备节点一部分驱动要和上层通信,都需要生成设备节点,上层应用通过一套标准的接口函数调用设备节点就可以控制底层以及和底层通信。最简单易用的杂项设备节点如何生成。##**为什么引入杂项设备**在exynos4412开发板,在超级终端中输入命令“cat /proc/misc”可以查看对应的杂项设备。主设备号只有256 个,设备又非常多,所以引入了子设备号。其中杂项设备的主设备号是10,在任何Linux 系统原创 2016-07-21 17:23:13 · 912 阅读 · 0 评论 -
exynos4412开发板设备注册与驱动注册剖析
exynos4412开发板设备注册与驱动注册剖析linux内核的主要组成部分由进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS),网络接口(NET),进程间通信(IPC)查看linux系统的总线ls /sys/bus查看linux系统的设备cat /proc/devices###**Linux驱动和设备的注册过程**Linux 内核会要求每出现一个设备就要向总线汇报,或者说注册,出现原创 2016-07-21 16:51:36 · 1272 阅读 · 0 评论 -
linux设备驱动之VFS虚拟文件系统
1.VFS虚拟文件系统 Linux 允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件系统的存在。虚拟文件系统,即VFS(Virtual File System)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat 提供接口机制。 Linux 有两个特性: a – 跨文件系统的文件操作 Lin原创 2017-01-16 15:44:51 · 1265 阅读 · 0 评论 -
linux字符设备驱动之file_operations结构体知识详解
struct file_operations在fs.h这个文件里面被定义的struct super_operations { struct inode *(*alloc_inode)(struct super_block *sb); void (*destroy_inode)(struct inode *); void (*dirty_inode) (struct inode原创 2017-01-15 20:27:45 · 971 阅读 · 0 评论 -
linux驱动之自动创建设备节点
利用cat /proc/devices查看申请到的设备名,设备号。 创建设备节点 1.使用mknod手工创建:mknod filename type major minor 2.自动创建设备节点:利用udev(mdev)来实现设备文件的自动创建,首先应保证支持udev(mdev),由busybox配置。在驱动用加入对udev 的支持主要做的就是:在驱动初始化的代码里调用class_create原创 2017-01-15 19:41:55 · 541 阅读 · 0 评论 -
Linux驱动之模块传参
一、module_param() 定义 通常在用户态下编程,即应用程序,可以通过main()的来传递命令行参数,而编写一个内核模块,则通过module_param() 来传参。 module_param()宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下:#define module_param(name,原创 2017-01-15 19:14:07 · 491 阅读 · 0 评论 -
字符设备控制技术
字符设备控制技术1.设备控制理论1.1作用1.2应用程序接口1.3设备驱动方法2.设备控制实现2.1定义命令2.2实现设备方法3实现字符设备控制1.1.控制理论作用大部分驱动程序除了需要提供读写设备的能力以外,还需要具备控制设备的能力。1.2应用程序接口在用户空间,使用ioctl系统调用来控制设备,原型如下: int ioctl(int fd,unsigned long cmd,…) fd:要控原创 2016-08-03 12:02:39 · 426 阅读 · 0 评论