zoukankan      html  css  js  c++  java
  • ANDROID深度探索(卷1)HAL与驱动开发 第七章

    并不是 Linux 驱动直接向硬件中的内存写数据, 而是与 本机的 I/0 内存(I/O Memory,位于内核空间进行交互。所谓 1/0 内存是通过各种接口( PCIUSB、蓝牙、以太网口等〉连接到主机( PC、手机〉的硬件〈网卡、声卡、摄像头等〉在主机内 存中的映射。例如,在 Ubuntu Linux 上运行的驱动只需要访问运行 Ubuntu Linux 的主机中的 I/o 内存即可,然后 Linux 内核会利用 I/0 内存中的数据硬件交互。 Linux 内 核的内存管理模块负责同步 I/0 内存与硬件中的数据。

     LED 驱动并未使用 misc_register 建立设备文件,而是使用了更灵活的方式创建了设备 文件。LED 驱动还提供了两种交互方式:命令和读写设备文件。

    LED 驱动会建立一个dev/s3c64 l O _leds 设备文件,该 Linux 驱动可以控制 4 LED (在开发板 的银屯地旁边, 靠近电池的 LED 编号为 l,离电地最远的 LED编号为4。通过向/dev/s3c64 l O leds 发送长度为 1 4 的字符串可以控制这 4 LED 的开关。 l 表示开、 0表示关。如果字符串长度不 足 4 个,相当于后面补 0

    创建 LED 驱动的设备文件

    1 步:使用 cdev_init 函数初始化cdev

    2 步: 指定设备号 。

    3 步: 使用 cdev_add函数将字符设备添加到内核中的字符设备数组中 。

    4 步: 使用 class_create宏创建 struct class

    5 步: 使用 device::..create 函数创建设备文件。

  • 相关阅读:
    VTemplate模板引擎的使用--入门篇
    VTemplate模板引擎的使用--进阶篇
    装载当前页面的模板文档
    学习平台判断是否是手机端
    畜禽免疫系统使用LODOP打印
    关于.NET编译的目标平台(AnyCPU,x86,x64)(转)
    ConcurrentHashMap原理分析(1.7与1.8)
    Synchronized方法锁、对象锁、类锁区别
    谈谈线上CPU100%排查套路
    java-虚拟机-索引
  • 原文地址:https://www.cnblogs.com/wuxinxinxin/p/5561932.html
Copyright © 2011-2022 走看看