• LDD3 第15章 内存映射和DMA

    时间:2023-12-05 15:40:24

    本章内容分为三个部分:第一部分讲述了mmap系统调用的实现过程。将设备内存直接映射到用户进程的地址空间,尽管不是所有设备都需要,但是能显著的提高设备性能。如何跨越边界直接访问用户空间的内存页,一些相关的驱动程序需要这种能力。在很多情况下,内核执行了该种映射,而无需驱动程序的参与。直接内存访问(DMA...

  • ldd3学习之十一(2):Linux设备模型---总线、设备、驱动

    时间:2022-11-15 16:59:23

    随着技术的不断进步,系统拓扑接口越来越复杂,对智能电源管理、热插拔支持要求也越来越高,为适应这些需求,2.6内核提供了全新的内核设备模型。设备模型三元素:总线、设备、驱动。另:采用总线模型,极大的提高程序可移植性。1.总线总线就是处理器与设备(包括SOC设备,比如SPI控制器)之间的通道,在设备模型...

  • [LDD3]Block Driver:编译sbull驱动,你用的是什么Kernel版本

    时间:2022-06-16 09:20:27

    - 尝试编译Linux Device Driver 3th里面的sbull驱动(Chapter16), 结果,发现编译不能通过。 log提示无法找到头文件:linux/config.h 以及,无法解析未知的函数 不知道大家在编译sbull demo,有没有遇到这个状况? 期望能够分享一下 Need ...

  • LDD3学习笔记《三》第四章

    时间:2022-06-16 04:01:52

    一、printk的用法例:  printk(KERN_ALERT "Hello,World!\n");   printk的用法与printf的用法差不多, 上面的例子改为printf:     printf("Hello,World!\n");   两个的不同点在于:一、printk有个表...

  • LDD3 第10章 中断处理

    时间:2021-09-01 04:02:15

    各种硬件和处理器打交道的周期不同,并且总是比处理器慢。必须有一种可以让设备在产生某个事件时通知处理器----中断。 中断仅仅是一个信号,如果硬件需要,就可以发送这个信号。Linux处理中断方式和用户空间的信号是一样的。 注册一个中断,需要处理时,调用函数处理。 中断处理例程和其他代码并发运行,这样处...

  • LDD3 读书笔记之 第 5 章 并发和竞争情况

    时间:2021-09-01 04:02:03

    本章已介绍了很多符号给并发的管理. 最重要的这些在此总结: #include <asm/semaphore.h>     //定义信号量和其上操作的包含文件.   信号量的定义和初始化 (1)静态定义及初始化 DECLARE_MUTEX(n...

  • LDD3 读书笔记 之 第 3 章 字符驱动

    时间:2021-09-01 04:01:57

       本章介绍了下面符号和头文件. struct file_operations 和 struct file 中的成员的列表这里不重复了. #include <linux/types.h> dev_t dev_t 是...

  • LDD3 阅读理解问题

    时间:2021-09-01 04:01:51

    对于设备驱动而言: insmod ***.ko 表示将驱动加载进内核=======类似于c++中类 mknod /dev/*** 表示添加设备=============类似于c++中对象(/dev/***只是name无实际意义,只要设备号对的就可以 ) 请问这样理解可以吗?5 个解决方案 ...

  • LDD3构建内核树

    时间:2021-09-01 04:01:45

    作者:胡乃全 写在前面 作者一直支持GPL的精神。允许任何人*使用、转载、复制和再分发,但必须保留作者署名,必须保证全文完整转载,包括完整的版权声明。 由于作者水平有限,因此不能保证文章内容准确无误,请批判阅读。如果你发现任何错误或对文章内容有任何建议,欢迎你与我联系:Email: hu...

  • 对LDD3前七章的一个小节

    时间:2021-08-06 15:13:56

    本文载自网络,内容不错,值得学习!最近又重读了LDD3(Linux Device Driver, 3rd Edition) , 对LDD的前面一部分, 即如何写一个字符设备进行了一个小结. 希望能够对初学者有用. 对于下面这一段代码, 演示了如何创建一个字符设备, 涉及到如下知识点: 1. 如何创建...

  • LDD3 笔记: 第3章 字符设备的驱动

    时间:2021-02-11 04:02:19

    第3章 字符设备驱动 一些重要的数据结构以及引用关系: 第一步:MAJOR设备编号的动态分配 int register_chrdev_region(dev_t first, unsigned int count, char *name); int alloc_chrdev_region(dev_...

  • LDD3 第9章 与硬件通信

    时间:2021-02-11 04:02:07

    一、I/O端口和I/O内存 每种外设都通过读写寄存器进行控制。大部分外设都有几个寄存器,不管是在内村地址空间还是在I/O地址空间,这些寄存器的访问地址都是连续的。 在硬件层,内存区域和I/O区域没有区别:都是地址总线和控制总线发送电平信号进行访问,再通过数据总线读写数据 I/O寄存器和常规内存 I/...

  • LDD3 第15章 内存映射和DMA

    时间:2021-02-11 04:02:01

    本章内容分为三个部分: 第一部分讲述了mmap系统调用的实现过程。将设备内存直接映射到用户进程的地址空间,尽管不是所有设备都需要,但是能显著的提高设备性能。 如何跨越边界直接访问用户空间的内存页,一些相关的驱动程序需要这种能力。在很多情况下,内核执行了该种映射,而无需驱动程序的参与。 直接内存访...

  • LDD3 读书笔记 之 第 2 章 建立和运行模块

    时间:2021-02-02 04:01:17

    模块参数       驱动需要知道的几个参数因不同的系统而不同. 从使用的设备号( 如我们在下一章见到的 )到驱动应当任何操作的几个方面. 例如, SCSI 适配器的驱动常常有选项控制标记命令队列的使用, IDE 驱动允许用户控制 DMA 操作. 如果你的驱动控制老的硬件, 还需要被明确告知哪里去找...

  • LDD3源码分析之阻塞型I/O

    时间:2021-02-02 04:01:05

    作者:刘昊昱  博客:http://blog.csdn.net/liuhaoyutz 编译环境:Ubuntu 10.10 内核版本:2.6.32-38-generic-pae LDD3源码路径:examples/scull/pipe.c  examples/scull/main.c   本文分析...