zoukankan      html  css  js  c++  java
  • 第七章感想

         本章学习控制发光二极管,通过直接与硬件交互完成,控制开发板上的四个小灯。

         LED驱动的实现原理可以开始编写led驱动了,与上一章步骤类似,通过命令和读写文件实现。首先创建led驱动的设备文件,可以使用cdev_init,register_chrdev_region,cdev_add等建立主设备号的设备文件。步骤如下:1使用cdev_init初始化cdev2指定设备号3使用cdev_add函数将字符设备添加到内核中的字符设备组中4使用class_creat宏创建struct class5使用device_creat函数创建设备文件

    然后卸载led驱动的设备文件

    {Device_destroy(leds_class,dev_number);

    If(leds_class)

    Class_destroy(leds_class);

    Unregister_chrdev_region(dev_number,DEVICE_NUMBER);

    Return;}

    Static void leds_exit(void)

    {

    Leds_destroy_device();

    Printk(DEVICE_NAME” ext! ”);

    }

    Module_exit(leds_exit);

    然后设置寄存器与初始化led驱动,arm处理器有多个寄存器,通过设置不同寄存器的值,设置led引脚状态、打开或禁止上拉电路以及控制led的亮和灭。Led有两个引脚,GPB0GPB1控制led需要通过三个寄存器完成每一个寄存器可以使用4个字节使用GPMCON寄存器的低16位将led的两个端口属性设为output使用GPMDAT寄存器的低4位控制4led的亮灭。使用GPMPUD寄存器的低八位分别打开四个led的上拉电路。然后就是比较重要的控制led,要想完成这一过程,led驱动就必须接受相应的数据。如果通过字符串控制,需要使用file_operations.write。如果通过I/O命令控制led,需要使用file_operations.ioctl函数。编写时需要了解几点:4led的状态用一个长度为4char数组存储。如果写入的字符串长度小于4,直接写入,如果大于4,只写前4个。如果写入的字符串小于4,相当于后面的都是。GPNMDAT寄存器写入数据之前最好先读取GPMDAT当前值。最后进行测试led驱动,方法有一下几种:编写控制命令的通用程序:led驱动有两种与设备文件交互的方式:直接写入字符串数据和I/O控制命令。使用NDK测试led驱动,使用java测试led驱动。Led驱动是第一个真正和硬件打交道的linux驱动,虽然这个驱动并不复杂,只是控制了4led,但是已经包括了linux驱动所有必要的部分。

         有积极进取的态度去学习Android软件,才会从中找到我们学习得乐趣与前进的动力。

  • 相关阅读:
    Html禁止粘贴 复制 剪切
    表单标签
    自构BeanHandler(用BeansUtils)
    spring配置中引入properties
    How Subcontracting Cockpit ME2ON creates SD delivery?
    cascadia code一款很好看的微软字体
    How condition value calculated in sap
    Code in SAP query
    SO Pricing not updated for partial billing items
    Javascript learning
  • 原文地址:https://www.cnblogs.com/cwbblogs/p/5561157.html
Copyright © 2011-2022 走看看