嵌入式Linux设备驱动编程(1):基础
2013-05-11 22:10
295 查看
参考书籍:《从实践中学嵌入式linux应用程序开发》(华清远见嵌入式学院)
资料下载:http://download.csdn.net/detail/klcf0220/5354013
http://download.csdn.net/detail/klcf0220/5354039
参考链接:http://blog.chinaunix.net/uid-28675954-id-3511554.html
设备驱动概念:
Linux的一个重要特点就是将所有的设备都当做文件进行处理,这一特殊文件就是设备文件(位于/dev目录下)。
设备分为3类:字符设备、块设备和网络设备。
设备驱动程序的特点:
内核代码:设备驱动程序是内核的一部分,如果设备程序出错,则可能导致系统崩溃;
内核接口:设备驱动程序必须为内核或者其子系统提供一个标准接口;
内核机制和服务:设备驱动程序使用一些标准的内核服务;
可装载:大多数Linux操作系统设备驱动程序都可以在需要是装载进内核,在不需要是从内核中卸载;
可设置:系统编译时根据需要设置把其中的某一部分集成到内核中;
动态性:
Linux内核模块:
lsmod 列出当前系统中加载的模块;
rmmod 卸载当前模块;
insmod 或 modprobe 用于加载当前模块;
Linux内核模块主要由以下及部分组成:
模块加载函数(必须):module_init(函数名);
模块卸载函数(必须):module_exit(函数名);
模块许可证声明(必须):
模块参数(可选):module_param(参数名,参数类型,参数读/写权限);
模块导出符号(可选):EXPORT_SYMBOL(符号名);
模块作者等信息声明(可选):MODULE_AUTHOR(author);MODULE_DESCRIPTION(description);MODULE_VERSION(version);MODULE_ALIAS(alias);……
模块的编译:
make –C /内核源代码目录/ M=/源程序和Makefile所在目录/ modules
字符设备驱动编程:
重要的数据结构:file_operation、file 和 inode。
设备号
主设备号:表示设备类型,对应于确定的驱动程序
次设备号:标志具体的物理设备。
资料下载:http://download.csdn.net/detail/klcf0220/5354013
http://download.csdn.net/detail/klcf0220/5354039
参考链接:http://blog.chinaunix.net/uid-28675954-id-3511554.html
设备驱动概念:
Linux的一个重要特点就是将所有的设备都当做文件进行处理,这一特殊文件就是设备文件(位于/dev目录下)。
设备分为3类:字符设备、块设备和网络设备。
设备驱动程序的特点:
内核代码:设备驱动程序是内核的一部分,如果设备程序出错,则可能导致系统崩溃;
内核接口:设备驱动程序必须为内核或者其子系统提供一个标准接口;
内核机制和服务:设备驱动程序使用一些标准的内核服务;
可装载:大多数Linux操作系统设备驱动程序都可以在需要是装载进内核,在不需要是从内核中卸载;
可设置:系统编译时根据需要设置把其中的某一部分集成到内核中;
动态性:
Linux内核模块:
lsmod 列出当前系统中加载的模块;
rmmod 卸载当前模块;
insmod 或 modprobe 用于加载当前模块;
Linux内核模块主要由以下及部分组成:
模块加载函数(必须):module_init(函数名);
模块卸载函数(必须):module_exit(函数名);
模块许可证声明(必须):
模块参数(可选):module_param(参数名,参数类型,参数读/写权限);
模块导出符号(可选):EXPORT_SYMBOL(符号名);
模块作者等信息声明(可选):MODULE_AUTHOR(author);MODULE_DESCRIPTION(description);MODULE_VERSION(version);MODULE_ALIAS(alias);……
模块的编译:
make –C /内核源代码目录/ M=/源程序和Makefile所在目录/ modules
字符设备驱动编程:
重要的数据结构:file_operation、file 和 inode。
设备号
主设备号:表示设备类型,对应于确定的驱动程序
次设备号:标志具体的物理设备。
#include<linux/kdev.h> MAJOR(dev_t dev);//获得主设备号 MINOR(dev_t dev);//获得次设备号 MKDEV(int major,int minor);
相关文章推荐
- 嵌入式linux设备驱动编程环境搭建
- Linux设备驱动程序——设备驱动编程基础
- linux网络设备应用与驱动编程学习笔记(2)——网络驱动基础
- Linux 音频设备驱动架构及应用编程
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】深入剖析Linux中断机制之目录
- Linux设备驱动编程之定时器
- 嵌入式Linux字符设备驱动模型详解
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux系统调用的实现机制分析
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】深入剖析Linux中断机制之三--Linux对异常和中断的处理
- 嵌入式linux系统开发概述之四----设备驱动(Drivers)
- Linux设备驱动开发详解--笔记3--Linux内核及内核编程
- Linux 字符设备驱动开发基础(三)—— read()、write() 相关函数解析
- 嵌入式Linux驱动学习之路(十七)驱动程序分层分离概念-平台设备驱动
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】中断服务下半部之tasklet详解
- 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)
- Linux嵌入式驱动初体验(七)--- LED驱动之字符设备篇
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux内核抢占实现机制分析
- Linux 字符设备驱动开发基础(二)—— 编写简单 PWM 设备驱动
- Linux USB 驱动开发(一)—— USB设备基础概念
- linux驱动基础开发1——linux 设备驱动基本概念