![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《Linux Device Driver》
文章平均质量分 89
《Linux Device Driver》
Neilo_chen
这个作者很懒,什么都没留下…
展开
-
LDD:USB驱动程序
1. 从拓扑上来看,一个USB子系统并不是以总线的方式来布置的;它是一棵由几个点对点的连接构建而成的树。这些连接是连接设备和集线器(hub)的四线电缆(地线、电源线和两根信号线)。2. USB主控制器负责询问每一个USB设备是否有数据需要发送,一个USB设备在没有主控制器要求的情况下是不能发送数据的。3. USB设备具有要求一个固定的数据传输带宽的能力,以可靠地支持视频和音频IO。另一个重要的特性是它只担当设备和主控制器之间通信通道的角色,对它所发送的数据没有任何特殊的内容和结构上的要求。4.原创 2021-01-23 20:17:35 · 208 阅读 · 1 评论 -
LDD:与硬件通信
I/O端口和I/O内存每种外设都通过读写寄存器进行控制。大部分外设都有几个寄存器,不管是在内存地址空间还是在I/O地址空间,这些寄存器的访问地址时连续的。在硬件层,内存区域和I/O区域没有概念上的区别:它们都通过向地址总线和控制总线发送电平信号(比如读写信号)进行访问,再通过数据总线读写数据。一些CPU制造厂商在它们的芯片中使用单一地址空间,而另一些则为外设保留了独立的地址空间,以便和...原创 2020-04-20 02:18:03 · 328 阅读 · 0 评论 -
LDD:分配内存
除了kmalloc和kfree,内核提供了更加丰富的内存分配原语集。kmalloc函数的内幕1.除非被阻塞,否则这个函数可运行得很快2.不对所获取的内存空间清零,也就是分配给它的区域仍然保持着原有的数据。3.它分配的区域在物理内存中也是连续的。flags参数kmalloc的第一个参数是要分配的块的大小,第二个参数是分配标志(flags),它能够以多种方式控制kmalloc的......原创 2020-04-19 23:05:57 · 250 阅读 · 0 评论 -
LDD:时间、延迟及延缓操作
现实中的设备驱动程序除了实现必需的操作外还要做更多的工作,如定时、内存管理,硬件访问等。原创 2020-04-19 13:29:15 · 243 阅读 · 0 评论 -
LDD:高级字符驱动程序操作
ioctl系统调用:用于设备控制的公共接口,通过设备驱动程序执行各种类型的硬件控制。系统调用原型:int ioctl(int fd, unsigned long cmd, ......)驱动程序的ioctl方法原型:int (*ioctl) (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long ar...原创 2020-04-06 00:12:55 · 228 阅读 · 0 评论 -
LDD:并发和竞态
并发的来源:1.正在运行的多个用户空间进程可能以一种令人惊讶的组合方式访问我们的代码。2.SMP系统甚至可在不同的处理器上同时执行我们的代码。3.内核是可抢占的,驱动程序代码可能在任何时候丢失对处理器的独占4.设备中断时异步事件,可能导致代码的并发执行5.内核还提供了许多可延迟代码执行的机制,比如workqueue、tasklet、timer等,这些机制使代码可在任何时候执行...原创 2020-04-05 17:22:26 · 122 阅读 · 0 评论 -
LDD:字符设备驱动程序
1.主设备号和次设备号主设备号标识设备对应的驱动程序(driver)。次设备号由内核使用,用于正确确定设备文件所指的设备。MAJOR(dev_t dev) MINOR(dev_t dev) MKDEV(int major, int minor)动态分配主设备号:alloc_chrdev_region三个重要的内核数据结构file_operations ...原创 2020-03-17 23:37:10 · 237 阅读 · 0 评论 -
LDD:分配内存
kmalloc除非被阻塞,否则运行很快,而且不对所获取的内存空间请零,这意味着我们要将内存显式地清空。 分配的区域在物理内存中也是连续的。原创 2020-01-15 22:28:39 · 116 阅读 · 0 评论 -
LDD:内存映射和DMA
地址类型用户虚拟地址 物理地址 总线地址 内核逻辑地址 内核虚拟地址用户虚拟地址用户空间程序所看到的常规地址。用户地址是32位或者64位的,这取决于硬件的体系结构。每个进程都有自己的虚拟地址空间。物理地址该地址在处理器和系统内存之间使用内核逻辑地址内核逻辑地址组成了内核的常规地址空间。该地址映射了部分或者全部内存,并经常被视为物理地址。逻辑地址使用硬件...原创 2019-08-24 13:14:14 · 7324 阅读 · 0 评论