zoukankan      html  css  js  c++  java
  • 第七章心得体会

    第七章主要学到控制发光二极管,在本章会完成一个真正意义上的 Linux 驱动。该Linux驱动用来控制开发版上的4个LED 小灯。也就是说通过向Linux 驱动发送数据可以控制LED小灯的开关。

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

    接着我们进行编写LED驱动,首先要创建LED驱动设备文件:

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

    第2步:指定设备号;

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

    第4步:使用class_create宏创建struct class;

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

    其次要设置寄存器和初始化LED驱动,在控制 LED 亮、灭之前必须要了解如何设置寄存器。ARM处理器有多个寄存器,通过设置不同寄存器的值,可以设置LED引脚的状态、打开或禁止上拉(pull-up)电路以及控制LED的亮和灭。然后控制LED灯,LED 驱动可以使用如下两种方式控制 LED

    1.通过字符串控制LED;

    2.通过I/O命令控制LED;

    要想使用上述两种方式控制LED,LED驱动必须要接收相应的数据,如果通过字符串控制LED,需要使用fif.e_operations.write函数,如果通过 I/0命令控制LED,需要使用file__operations.iocd函数。

    然后我便学习到了LED驱动的相关代码,再次不一一赘述。

    最后进行LED驱动的测试,可以编写测试I/O控制命令的通用程序测试,也可以使用NDK测试LED驱动,还可以使用Java测试LED驱动。

    所以对于本章来说,我了解到LED 驱动是本书第一个真正和硬件打交道的 Linux驱动。虽然LED驱动并不复杂,只是控制了4个LED,"但LED驱动已经包括了Linux驱动所有必要的部分。一个完整的Linux驱动主要由内部处理和与硬件交互降部分组成。其中内部处理主要是指Linux驱动的装载、卸载、与设备文件相关的动作处理(读写设备文件、向设备文件发送I/O命令等动作〉以及业务逻辑等。与硬件交互主要是指通过iowrite32、ioread32等函数与硬件中的寄存器进行数据交互。 

  • 相关阅读:
    HDU 1097
    HDU 1045
    HDU 1039 -Easier Done Than Said?
    HDU 1038
    HDU 1037 - Keep on Truckin'
    HDU 1036 - Average is not Fast Enough!
    hdu 1701 ACMer
    hdu 1711 Number Sequence(kmp)
    hdu 2087 剪花布条
    字符串匹配-KMP算法学习笔记
  • 原文地址:https://www.cnblogs.com/renxinye/p/5560135.html
Copyright © 2011-2022 走看看