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

    将驱动编译进Linux内核进行测试

    一个完整的linux驱动主要由内部处理和与硬件交互两部分组成。其中内部处理主要是指linux驱动的装载、卸载、与设备文件相关的动作处理以及业务逻辑等。与硬件交互主要是指通过ioweite、ioread32等函数与硬件中的寄存器进行数据的交互。Linux驱动在不同平台的移植也是处理这两部分。如果在不同Linux内核版本之间的移植,主要是移植第1部分,如果在不同硬件平台的移植,主要是移植第二部分。

    我们在控制LED亮、灭之前必须会寄存器了如指掌:包括LED有两个引脚线、控制LED需要通过3个寄存器来完成、每个寄存器可以使用4个字符、使用GPMDAT寄存器的低4位来控制4个LED灯的亮灭。

    LED驱动可以使用两种方法控制驱动:1、通过字符串控制LED;2、通过I/O命令控制LED

    卸载驱动的设备文件:依次调用device_destroy  class_destroy  unregister_chrdev_region方法

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

    执行ioctl命令的语法格式:ioctl <设备文件> <cmd> <arg>  (命令行参数必须至少有三个)

    一个完整的Linux驱动主要由内部处理和硬件交互两部分组成,其中内部处理只要指Linux驱动的装载卸载、与设备文件相关的动作处理。与硬件交互主要是指通过iowrite32、ioread32等函数与硬件中的寄存器进行数据交互。

  • 相关阅读:
    PHP 上传文件限制
    vim设置golang语法高亮 (Centos)
    linux下安装配置go语言环境
    Vim升华之树形目录插件NERDTree安装图解(ubuntu)
    linux下配置Node.js环境
    RabbitMQ的使用(二)- RabbitMQ服务在单机中做集群
    RabbitMQ的使用(一)- RabbitMQ服务安装
    Exceptionless(二)
    Exceptionless
    SQL Server2012如何打开2016的profiler文件
  • 原文地址:https://www.cnblogs.com/sleepywei/p/5561509.html
Copyright © 2011-2022 走看看