zoukankan      html  css  js  c++  java
  • 第七章 I/O

    尽管Linux驱动直接与硬件打交道,但是并不是Linux驱动直接向硬件的内存写数据,而是与本机的I/O进行交互。所谓I/O内存是通过各种接口连接到主机的内存中的映射。

    Linux内核提供了多个与I/O内存交互的函数。每个连接Linux的硬件在I/O内存中都会有映射首地址。

    创建LED驱动的设备文件:

    第一步:使用cdev_init 函数初始化cdev

    第二步:指定设备号

    第三步:使用cdev_init函数将字符设备添加到内核中的字符设备数组中

    第四步:使用class_create宏创建struct class

    第五步:使用device_create函数创建设备文件

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

    LED驱动有两种与设备文件交互的方式:直接写入字符串数据和I/O控制命令。直接向设备文件写入数据可以使用命令行方式来完成,也可以通过write函数完成。

    NDK程序测试和可执行程序测试差不多。只不过NDK Library 可以被Java程序调用,而在Android系统中测试Linux驱动,最直接的方法就是使用NDK。

    一个完整的Linux驱动主要由内部处理和与硬件交互两部分组成。其中内部处理主要是指Linux驱动的装载、卸载、与设备文件相关的运动处理以及业务逻辑等。

  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/redknot/p/5560555.html
Copyright © 2011-2022 走看看