zoukankan      html  css  js  c++  java
  • Android深度探索--HAL与驱动开发第七章读后感

    本章主要在真正的意义上完成了一个Linux驱动,控制开发板上的LED灯,也就是说通过Linux驱动发送数据可以控制LED小灯的开关。

    简单的LED程序主要步骤如下:

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

    1.使用cdev_init函数初始化cdev

    2.指定设备号

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

    4.使用class_create宏创建struct_class

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

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

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

    四:控制LED(及所谓的代码编写——linuxC语言)

    举例一种实现方法,如下:

    混杂设备驱动中需要实现的是填充file_operations结构,然后设置miscdevices的各个字段值,然后注册到内核即可。详细流程如下:

    1.编写ioctl接口函数

    2.填充file_operations结构,主要是将ioctl函数注册进去

    3.填充miscdevice结构,主要是次设备号、fops和设备名称。

    4.编写要提供给module_init宏使用的初始化代码,设置LED端口为输出,注册到内核

    5.编写要提供给module_exit宏使用的注销代码,主要是注销掉初始化中注册到内核的miscdevice设备

    LED驱动虽然并不复杂,只是控制了4个LED,但LED驱动已经包括了Linux驱动所必要的部分。一个完整的Linux驱动主要是由内部处理和与硬件交互两部分组成。其中内部处理主要是指Linux驱动的装载、卸载、与设备文件相关的动作处理以及业务逻辑等。与硬件交互通过iowrite32、ioread32等函数与硬件中的寄存器进行数据交互。Linux在不同平台的移植也是处理这两部分。

  • 相关阅读:
    Emacs使用gnus收发邮件时nnfolder相关介绍
    emacs 播放mp3
    你真的会写二分查找吗?
    数独的经典case
    MySQL处理千万级数据查询、分页
    Mysql Replication 机制
    redis位图(bitmap)常用命令的解析
    由浅入深了解线程池之源码初探
    BlockingQueue家族成员一览
    由浅入深了解线程池之初识线程池
  • 原文地址:https://www.cnblogs.com/cui8171/p/5555505.html
Copyright © 2011-2022 走看看