zoukankan      html  css  js  c++  java
  • 控制发光二极管

    Led驱动实现原理

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

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

    编写led驱动

    一:创建led驱动的设备文件

    1.使用cdev_init 函数初始化cdev

    2.指定设备号

    3.使用cdev_init函数将字符设备添加到内核中的字符设备数组中

    4.使用class_create宏创建struct class

    5.使用device_create函数创建设备文件

    二:卸载led驱动的设备文件

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

    三:设置寄存器与初始化led驱动

    通过设置不同寄存器的值,可恶意设置led引脚的状态、打开或禁止上拉电路以及控制led的亮和灭。

    四:控制led

    可以通过 1:字符串控制led;(file_oprations.write函数) 2 :I/O命令控制led(file_oprations.icoctl函数)

    五:led驱动的模块参数

    使用模块参数是为了装载led驱动时指定默认状态值

    测试led驱动

    编写测试I/O控制命令的通用程序

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

    使用NDK测试led驱动

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

    使用java测试led驱动

    Java只能通过发送控制字符测试led驱动

    Led驱动的移植

    在新的内核下重新编译即可

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

  • 相关阅读:
    171. Excel Sheet Column Number (Easy)
    349. Intersection of Two Arrays (Easy)
    453. Minimum Moves to Equal Array Elements (Easy)
    657. Judge Route Circle (Easy)
    CSS笔记
    保存页面状态
    UI开发总结
    ubuntu 下配置munin
    反向代理配置
    JavaScript 高级程序设计第二版
  • 原文地址:https://www.cnblogs.com/orange921/p/5560609.html
Copyright © 2011-2022 走看看