zoukankan      html  css  js  c++  java
  • Android深度探索——第七章读书笔记及心得

    控制发光二极管

    ——第七章读书笔记及心得

           通过本章的学习掌握了一个真正和硬件打交道的linux驱动程序。知道了一个完整的linux驱动只要由内部处理与硬件交互两部分组成。其中的内部处理指linux驱动的装载、卸载、与设备文件相关的动作处理以及业务逻辑。与硬件交互主要是指通过部分函数与硬件中的寄存函数进行数据交互。

           Linux驱动直接与硬件打交道,但是并不是linux启动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。每一个连接linux的硬件在I/O内存中都会有映射首地址。

           创建LED驱动的设备文件的步骤:

    1、使用cdev_init函数初始化cdev

    2、指定设备号

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

    4、使用class_create宏创建struct class

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

    卸载LED驱动的设备文件:

           void device_destory(sruct class *class,dev_t devt)

           void clss_dsetroy(struct class *class)

           void unregister_chrdex_region(dev_t from,unsigned count)

    设置寄存器与初始化LED驱动时了解到,LED有两个引脚:GPB0和GPB1。其中一个引脚连接到了ARM处理器的GPI0端口,另一个引脚经过一个限流电阻连接到电源。控制LED需要通过3个寄存器来完成,分别为GPMCON、GPMDAT、GPMPUD。每一个寄存器可以使用4个字节。使用GPMCON寄存器的低16位将LED两个端口的属性设置为Outpt。使用GPMDAT寄存器的低4位控制4个LED的亮、灭。

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

  • 相关阅读:
    webpack小知识点
    什么叫做webpack模块
    vue插槽的使用
    如何使用在 React Router v4 中以编程的方式进行导航
    react小知识点集合
    vue小知识点
    react更好的实现操作
    HTTP 协议 Host 请求头的作用
    包管理工具安装问题
    对象的方法
  • 原文地址:https://www.cnblogs.com/zhanghui9505/p/5560493.html
Copyright © 2011-2022 走看看