• 第七章


    尽管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在不同的平台上移植也是这两部分。

  • 相关阅读:
    Codeforces Round #652 (Div. 2)
    Codeforces Round #651 (Div. 2)
    The 2017 China Collegiate Programming Contest, Qinhuangdao Site
    2017中国大学生程序设计竞赛-哈尔滨站
    Codeforces Global Round 8
    [CF768D] Jon and Orbs
    2020牛客暑期多校训练营(第一场)I
    2020牛客暑期多校训练营(第一场)F
    [HDU5769] Substring
    [PA2010] Riddle
  • 原文地址:https://www.cnblogs.com/sun-123/p/5560962.html
Copyright © 2020-2023  润新知