zoukankan      html  css  js  c++  java
  • 嵌入式Linux设备驱动编程(1):基础

    参考书籍:《从实践中学嵌入式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类:字符设备、块设备和网络设备。

    设备驱动程序的特点:

    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<linux/kdev.h>
    MAJOR(dev_t dev);//获得主设备号
    MINOR(dev_t dev);//获得次设备号
    MKDEV(int major,int minor);
    作者:快乐出发0220 ;Android群:151319601 ; Linux群:96394158 ;转载请注明出处 http://klcf0220.cnblogs.com/ !!!
  • 相关阅读:
    狼人杀BETA阶段计划简介
    Werewolf流程分析
    Alpha阶段项目Postmortem
    Alpha阶段项目展示
    龙威零式_团队项目例会记录_24
    数据获取以及处理系统 --- 功能规格说明书V2.0
    项目Postmortem
    龙威零式_团队项目例会记录_23
    Alpha版本发布说明
    Alpha版本项目展示
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3071766.html
Copyright © 2011-2022 走看看