博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
嵌入式Linux设备驱动编程(1):基础
阅读量:6391 次
发布时间:2019-06-23

本文共 921 字,大约阅读时间需要 3 分钟。

参考书籍:《从实践中学嵌入式linux应用程序开发》(华清远见嵌入式学院)

资料下载:

参考链接:

设备驱动概念:

Linux的一个重要特点就是将所有的设备都当做文件进行处理,这一特殊文件就是设备文件(位于/dev目录下)。
设备分为3类:字符设备、块设备和网络设备。

设备驱动程序的特点:

  1. 内核代码:设备驱动程序是内核的一部分,如果设备程序出错,则可能导致系统崩溃;
  2. 内核接口:设备驱动程序必须为内核或者其子系统提供一个标准接口;
  3. 内核机制和服务:设备驱动程序使用一些标准的内核服务;
  4. 可装载:大多数Linux操作系统设备驱动程序都可以在需要是装载进内核,在不需要是从内核中卸载;
  5. 可设置:系统编译时根据需要设置把其中的某一部分集成到内核中;
  6. 动态性:

Linux内核模块:

lsmod 列出当前系统中加载的模块;

rmmod 卸载当前模块;

insmod 或 modprobe 用于加载当前模块;

Linux内核模块主要由以下及部分组成:

  1. 模块加载函数(必须):module_init(函数名);
  2. 模块卸载函数(必须):module_exit(函数名);
  3. 模块许可证声明(必须):
  4. 模块参数(可选):module_param(参数名,参数类型,参数读/写权限);
  5. 模块导出符号(可选):EXPORT_SYMBOL(符号名);
  6. 模块作者等信息声明(可选):MODULE_AUTHOR(author);MODULE_DESCRIPTION(description);MODULE_VERSION(version);MODULE_ALIAS(alias);……

模块的编译:

make –C /内核源代码目录/  M=/源程序和Makefile所在目录/  modules

字符设备驱动编程:

重要的数据结构:file_operation、file 和 inode。

设备号

主设备号:表示设备类型,对应于确定的驱动程序

次设备号:标志具体的物理设备。

#include
MAJOR(dev_t dev);//获得主设备号MINOR(dev_t dev);//获得次设备号MKDEV(int major,int minor);

转载地址:http://pbsha.baihongyu.com/

你可能感兴趣的文章
javascript获取url参数和script标签中获取url参数
查看>>
CF359D:Pair of Numbers(数论)
查看>>
进制转换展示
查看>>
张泉灵:做投资这半年哭过的时间比前十年都多
查看>>
c++将bool变量以文字形式打印
查看>>
洛谷P1111 修复公路 并查集 图论 最小生成树
查看>>
微名汇-微信公众平台功能开发(微信聊天机器人)
查看>>
A2W和W2A :很好的多字节和宽字节字符串的转换宏
查看>>
我个人的javascript和css命名规范
查看>>
android ANR产生原因和解决办法
查看>>
kylin的安装与配置
查看>>
Android Intent的setClass和setClassName的区别
查看>>
php-fpm nginx 使用 curl 请求 https 出现 502 错误
查看>>
西宁海关首次对外展示截获500余件有害生物标本
查看>>
泸州移动能源产业园首片薄膜电池组件成功下线
查看>>
韩国瑜会见陆委会主委陈明通:别给高雄念紧箍咒
查看>>
交通部:加大人工售票力度保障农民工春运出行
查看>>
物联网的学术层、应用层和行为层的基本介绍
查看>>
初探github(一)
查看>>
源码分析之 LinkedList
查看>>