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

  • 相关阅读:
    【Python3】操作文件,目录和路径
    Python中的文件和目录操作实现
    【Python 2 到 3 系列】 此整型非彼整型
    【Python 2 到 3 系列】 print 是函数
    css网页中设置背景图片的方法详解
    (转)开源项目miaosha(下)
    (转)开源项目miaosha(上)
    (转)开源项目t-io
    (转)WebSocket学习
    缓存问题参考
  • 原文地址:https://www.cnblogs.com/clever-universe/p/7967802.html
Copyright © 2011-2022 走看看