zoukankan      html  css  js  c++  java
  • 《Android深度探究HAL与驱动开发》学习笔记----第七章

    第七章 LED将为我闪烁:控制发光二极管

    Linux驱动是与I/O内存进行交互,所谓I/O内存是通过各种接口连接到主机的硬件在主机内存中的映射。Linux内核提供了多个与I/O内存交互的函数,Linux内核的内存管理模块负责同步I/O内存与硬件中的数据。

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

    1.使用cdev_init函数初始化cdev 

    2.指定设备号

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

    4.使用class_create宏创建struct_class

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

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

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

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

    详细流程如下:

    1.编写ioctl接口函数

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

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

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

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

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

    Don't part with your illusions. When they are gone you may still exist, but you have ceased to live. (Mark Twain, American writer) 不要放弃你的幻想。当幻想没有了以后,你还可以生存,但是你虽生犹死。((美国作家 马克·吐温)
  • 相关阅读:
    mysql data type <----> java data type (数值)
    line number is important in Exceptions.
    dom4j 使用原生xpath 处理带命名空间的文档
    dom4j 通过 org.dom4j.XPath 设置命名空间来支持 带namespace 的 xpath
    dom4j 创建一个带命名空间的pom.xml 文件
    xml to xsd ; xsd to xml
    sax 动态切换 抓取感兴趣的内容(把element当做documnet 处理)
    d3.js <一>
    python学习进阶一
    Java *字格
  • 原文地址:https://www.cnblogs.com/stilwaters/p/5561291.html
Copyright © 2011-2022 走看看