• 控制发光二极管


    将驱动编译进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等函数与硬件中的寄存器进行数据交互。

  • 相关阅读:
    真正的Java学习从入门到精通
    Java学习从入门到精通(1) [转载]
    Java Learning Path(三)过程篇
    Java Learning Path(五)资源篇
    Java Learning Path(四) 方法篇
    浅析Java语言中两种异常的差别
    JDK,JRE,JVM区别与联系
    JAVA敏捷开发环境搭建
    谈谈WEB开发中的苦大难字符集问题
    java读取clob字段的几种方法
  • 原文地址:https://www.cnblogs.com/sleepywei/p/5561509.html
Copyright © 2020-2023  润新知