zoukankan      html  css  js  c++  java
  • Android深度探索第七章

      linux驱动直接与硬件交互,但并不是linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。每一个连接Linux的硬件在I/O内存中都会有映射首地址。任何现代的操作系统主机插入硬件时都会检测到该硬件,但硬件被检测只能说明在内核空间中建立了I/O内存,要想用户空间的程序可以访问硬件,还必须安装可与I/O内存交互的驱动程序。

      读者可以根据下面的步骤创建一个设备文件:

        (1)使用cdev_init函数初始化cdev;

        (2)指定设备号,可以直接在代码中指定也可以动态分配;

        (3)使用cdev_add函数将字符设备添加到内核中的字符设备数组中;

        (4)使用class_create宏创建struct class;

        (5)使用device_create函数创建设备文件;

      卸载linux驱动的设备文件稍微简单一些,需要依次调用device_destroy,class_destroy和unregister_chrdev_region方法。

      在控制LED亮灭之前必须了解如何设置寄存器。ARM处理器有多个寄存器,通过设置寄存器的值,可以设置LED引脚的状态,打开或禁止上拉电路以及控制LED的亮灭。其中,LED有两个引脚,控制LED需要通过三个寄存器来完成,每一个寄存器可以使用4个字节,使用GPMCON寄存器的低16位将LED的两个端口的属性设为Output。使用GPMDAT寄存器的低4位控制4个LED的亮灭,使用GPMPUD寄存器的低8位分别打开4个LED的上拉电路。

  • 相关阅读:
    猜数字和楼层扔鸡蛋问题
    python+selenium+unittest----skip(跳过用例)
    python+selenium+unittest----常用属性详解(框架属性详解)
    php----等比缩放图片
    Vue----生命周期
    js----定义变量的几种方式
    quartz(7)-源码分析
    quartz(6)--集群
    quartz(5)--作业管理和存储
    quartz(4)--quartz.properties文件
  • 原文地址:https://www.cnblogs.com/swjlinux/p/5558383.html
Copyright © 2011-2022 走看看