|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/linux-device-drivers-communicating-with-hardware/
课程评论:没有评论
**Coursera 课程总结:Linux 设备驱动 - 与硬件通信** 本课程深入探讨了 Linux 内核如何与硬件进行交互,重点介绍了两种主要的通信模式:**IO 映射 IO (I/O Mapped I/O)** 和 **内存映射 IO (Memory Mapped I/O)**。 **课程内容概览:** * **IO 映射 IO**: * 学习如何编写内核驱动/模块来控制这类硬件,涉及的设备包括扬声器 (Speaker)、实时时钟 (RTC) 和键盘 (Keyboard)。 * 掌握用于 IO 映射 IO 的关键 API 和宏,如 `inb`, `outb`, `inw`, `outw`, `inl`, `outl` 以及它们的“缓冲”版本 (`inb_p` 等)。 * **内存映射 IO**: * 学习如何编写内核驱动/模块来控制这类硬件,涉及的设备包括硬件随机数生成器 (Hardware Random Generator)(假设是此类型)、GPIO 和 UART。 * 掌握内存映射 IO 的关键 API 和宏,如 `ioread8`, `ioread16`, `ioread32`, `iowrite8`, `iowrite16`, `iowrite32`,以及 `ioport_map`, `ioport_unmap`。 * **用户空间访问**: * 学习如何从用户空间访问 IO 映射 IO 和内存映射 IO。 * 了解 `ioperm`, `iopl`, `geteuid` 等函数在用户空间权限控制中的作用。 * **资源管理**: * 学习如何使用 `struct resource`, `request_region`, `release_region` 来管理 IO 端口资源的分配和释放。 * 学习如何使用 `request_mem_region`, `release_mem_region`, `ioremap`, `iounmap` 来管理内存区域的映射。 * **硬件信息探测与交互**: * 学习如何使用 `mmap` 将硬件内存区域映射到用户空间。 * 了解 `/dev/port` 和 `/dev/mem` 这两个特殊文件在直接硬件访问中的作用。 * 探索 `/proc/iomem` 和 `/proc/ioports` 文件,用于查看系统中的 IO 端口和内存映射信息。 * 学习使用一系列命令行工具来与硬件交互和探测硬件信息,包括: * `hwclock`:与硬件时钟交互 * `date`:显示/设置系统时间 * `showkey`:显示按键码 * `hexdump`:以十六进制或 ASCII 格式显示文件内容 * `strings`:在二进制文件中查找可打印字符串 * `dd`:转换和复制文件 * `lspci`:显示 PCI 设备信息 * `biosdecode`:解码 BIOS 信息 * `dmidecode`:解码 DMI/SMBIOS 表中的信息 **通过本课程,学员将掌握与各种硬件设备进行编程通信的关键技术,为开发和理解 Linux 系统底层运作打下坚实基础。**
What you will learn in this course:Two modes of communication with hardware - IO Mapped IO and Memory Mapped IOKernel Drivers/Modules for IO Mapped IO - Speaker, RTC, KeyboardKernel Drivers/Modules for Memory Mapped IO - Hardware Random Generator, GPIO, UARTAccessing IO Mapped IO and Memory Mapped IO from user spacePCI and SMBIOSAPI's/Macros/Structuresinb, outb, inw, outw, inl, outlinb_p, outb_p, inw_p, outw_p, inl_p, outl_pstruct resource, request_region, release_regionioperm, iopl, geteuidrequest_mem_region, release_mem_region, ioremap, iounmap, ioread8, ioread16, ioread32, iowrite8, iowrite16, iowrite32ioport_map, ioport_unmap,mmapFiles: /dev/port, /dev/mem, /proc/iomem, /proc/ioportsCommandshwclockdateshowkeyhexdumpstringsddlspcibiosdecodedmidecode