zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155225 实验四 外设驱动程序设计

    2017-2018-1 20155225 实验四 外设驱动程序设计

    《嵌入式Linux应用程序开发标准教程》第十一章学习

    Lsmod列出当前系统加载的模块

    Rmmod卸载当前模块

    Insmod/modprobe加载当前模块

    Linux系统的设备分为3类:字符设备、块设备和网络设备

    设备号是设备的标志,一个设备文件(设备节点)可以通过mknod命令创建,其中指定了主设备号(标明设备的类型,与一个确定的驱动程序对应)和次设备号(标明不同的属性)

    设备驱动程序位内核提供了一个I/O接口。

    字符设备驱动编程:

    程序入口:init_module()函数,在该函数中完成对设备的注册

    模块卸载的入口函数cleanup_module()。

    设备驱动程序主要组成:

    (1) 早期版本的字符设备注册

    (2) 设备号相关函数

    (3) 最新版本的字符设备注册

    (4) 打开设备

    (5) 释放设备

    (6) 读写设备

    (7) Ioctl函数,提供配置和控制等非读写操作机制

    (8) 获取内存,以字节或页面为单位

    (9) 打印信息

    /proc是一个伪文件系统,是内核和内核模块用来向进程发送信息的机制。

    块设备驱动编程,包括一个request请求队列,设备驱动描述符和块设备驱动的编写流程。

    中断编程,以编写完整的按键驱动程序为例。

    test试验

    在虚拟设备驱动源码目录下编译并加载驱动模块。

    make clean;make

    ./test_drv_load

    编译并运行测试程序

    gcc –o test test.c

    ./test

    卸载驱动程序

    ./test_drv_unload

    通过 dmesg 命令可以查看内核打印的信息

    dmesg|tail –n 10

    ……

    The major of the test device is 250

    This is open operation

    This is release operation

    Test device uninstalled

    image

    image

    image

  • 相关阅读:
    vs2005新控件演示系列之 向导《Wizard》
    搬家、钱、欲望、环境与命运
    母版页里面查找Repeater内控件,并构造URL
    恭喜哦!我在这里排名到250了!)(*&^%$#
    sql查询语言[我是网管论坛转载的精华贴]
    WCF 3.5对HTTP编程的增强
    WCF基础知识问与答
    印第安人的灵魂——敏捷回顾
    元数据交换绑定的秘密
    “轻松掌握WCF 帮你找到入门砖”访谈实录
  • 原文地址:https://www.cnblogs.com/clever-universe/p/7967802.html
Copyright © 2011-2022 走看看