• 第七章


    尽管Linux驱动直接与硬件打交道,但并不是Linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存(I/O Memory,位于内核空间)进行交互。所谓IO内存是通过各种接口(PCI,USB,蓝牙,以太网接口等)连接到主机的硬件在主机内存中的映射。

    Linux内核提供了多个与I/O内存交互的函数。Linux内核的内存管理模块杜泽同步I/O内存与硬件中的数据。

    每一个连接Linux的硬件在I/O内存中都会有映射首地址。在使用ioread32,等函数时需要制定这些首地址。

    LED灯驱动以动态驱动模块的(.KO文件)的形式提供。

    我们创建一个设备文件需要以下步骤,

    1,使用cdev_init函数初始化cdev

    2,制定设备号

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

    4,使用class_create红创建struct class

    5,使用device_creatr函数创建设备文件

    控制LEDLED驱动可以使用如下两种方式控制LED

    通过字符串控制LED,使用I/O命令控制LED

    一个完整的Linux驱动程序主要由内部处理和硬件两部分组成,其中内部处理主要是指Linux驱动的装载,卸载,与设备问价相关动作的处理以及业务逻辑等。与硬件交互主要是指通过函数等与硬件中的寄存器进行数据交互。Linux在不同的平台上移植也是这两部分。

  • 相关阅读:
    虹软人脸识别在 linux中so文件加载不到的问题
    tomcat 控制台乱码问题
    sourceTree git 空目录从远程仓库克隆代码出现warning: templates not found
    springboot项目更改代码后实时刷新问题
    spring 3.0 整合redis
    随笔
    Centos 7 安装 FFmpeg
    Postgresql 查看当前数据库所有的触发器
    oracle只导出触发器
    oracle 批量删除触发器
  • 原文地址:https://www.cnblogs.com/sun-123/p/5560962.html
Copyright © 2020-2023  润新知