博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【嵌入式操作系统】驱动程序编写
阅读量:2356 次
发布时间:2019-05-10

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

一 字符驱动设备

  • dev_t类型是32位数据类型,其中高12位表示主设备号,低20位表示次设备号。
  • MAJOR和MINOR从dev_t分别获得主设备号和次设备号。
  • MKDEV 组合主设备号和次设备号而获得dev_t类型设备号。
  • 静态分配设备号:在事先知道主设备号的情况下使用register_chrdev_region()函数
  • 动态分配设备号:在事先不知道在事先不知道主设备号的情况下,使用alloc_chrdev_region()
  • 释放已分配的设备号:unregister_chrdev_region(),无论是静态分配还是动态分配都使用它。
  • 在这里插入图片描述
  • 通过内核注册字符设备:
    在这里插入图片描述
  • 打开设备及其设备的读写
    在这里插入图片描述
  • 数据交换
  • 在这里插入图片描述
  • 配置和控制
    在这里插入图片描述
  • 申请内存
  • 以字节为单位获取内存kmalloc(),长度是2的整次方,并且不会对所获取的内存空间清零。
  • 以页为单位分配内存的函数如下所示:
     get_zeroed_page():获得一个已清零页面。
     get_free_page():获得一个或几个连续页面。
     get_dma_pages():获得用于DMA传输的页面。
    与之相对应的释放内存用也有kfree()或free_page函数族。
  • 打印信息内核空间要用函数printk(),printk()还可以定义打印消息的优先级
    在这里插入图片描述
  • 伪文件系统,/proc存在于内存之中而不是在硬盘上,获取有关系统和进程的有用信息,在运行时通过改变内核参数来改变设置。ls查看其内容。

二、块设备驱动程序

  • 块设备驱动程序的编写流程同字符设备驱动程序的编写流程很类似,也包括了注册和使用两部分。但与字符驱动设备所不同的是,块设备驱动程序包括一个request请求队列。
  • 可以通过cat /proc/devices查看已经使用了的设备号。
  • 手动创建设备节点:# mknod /dev/led c 231 0
    在这里插入图片描述

三、UDEV设备管理方法

  • udev根据sysfs系统提供的设备信息实现对/dev目录下设备节点的动态管理,包括设备节点的创建、删除等。
  • 是用户空间的设备管理器
  • sysfs是2.6内核引入的用于管理设备的一种虚拟文件系统,挂载在/sys目录下。
    在这里插入图片描述

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

你可能感兴趣的文章
iOS 截屏的总结,AVplayer的截屏,当前屏幕的截屏,截屏后导航栏不见的情况
查看>>
定时帧
查看>>
我的第一个用OC实现冒泡算法的程序
查看>>
一篇文章详解iOS之AutoResizing、AutoLayout、sizeClass来龙去脉
查看>>
pod
查看>>
ASIHTTPRequest 使用
查看>>
ASINetworkQueue 与 NSOperationQueue区别
查看>>
GCD介绍(一): 基本概念和Dispatch Queue
查看>>
GCD介绍(二): 多核心的性能
查看>>
GCD介绍(三): Dispatch Sources
查看>>
GCD介绍(四): 完结
查看>>
GCD实战一:使用串行队列实现简单的预加载
查看>>
微信开放平台创建应用时应用官网的问题
查看>>
协议与委托(Protocol and Delegate)实例解析
查看>>
生日礼物codeGift
查看>>
应用市场
查看>>
iOS审核马甲包被拒4.3的解决方案
查看>>
c++的一点小总结
查看>>
来源于 一般提问 分类 关于tableViewcell中套collectionview 崩溃
查看>>
微信着手封堵 Universal Link
查看>>