00181: static inline void Writeb(unsigned char b,volatile void iomem *addr) 00182: 00183: *(volatile unsigned char_force *)addr =b; 00184: 00185: 00186: static inline void Writew(unsigned short b,volatile void iomem*addr) 00187: 00188: *(volatile unsigned short__force *)addr b; 00189: 00190: 00191: static inline void writel(unsigned int b,volatile void_iomem *addr) 00192: 00193: *(volatile unsigned int force *)addr b; 00194: 、.once and technol 嵌入式系统实验室 2023/7/14 Linux OS Analysis 27/105 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 27/105
00201: static inline void 00202: memset io(volatile void iomem *addr,unsigned char val,int count) 00203: 00204: memset((void_force *)addr,val,count); 00205: 00206: 00207: static inline void 00208: memcpy_fromio(void *dst,const volatile void __iomem *src,int count) 00209: 00210: memcpy(dst,(const void force *)src,count); 00211: 00212: 00213: static inline void 00214: memcpy tolo(volatile void__iomem *dst,const void *src,int count) 00215: 00216: memcpy((void __force *)dst,src,count); 00217: cience and Tech0人 嵌入式系统实验室 2023/7/14 Linux OS Analysis 28/105 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 28/105
DMA(直接存诸器访▣,Direct Memory Access ?所有的PC都包含一个DMAC(DMA控制器 ) >一种辅助处理器 >用来控制在RAM和I/O设备之间传送数据 ●设置并激活DMAC ●DMAC自行传送数据 ●数据传送结束后,DMAC发出一个中断请求 >当CPU和DMAC并发访问同一个存储单元时,通过存 储器仲裁器解决冲突 冬使用者:慢速设备 >如,磁盘驱动器 ULK3上还有关于DMA的更多的内容 2023/7/14 Linux OS Analysis 29/105 嵌入式系统实验室 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 29/105 DMA(直接存储器访问,Direct Memory Access) ❖所有的PC都包含一个DMAC(DMA控制器) ➢一种辅助处理器 ➢用来控制在RAM和I/O设备之间传送数据 ⚫设置并激活DMAC ⚫DMAC自行传送数据 ⚫数据传送结束后,DMAC发出一个中断请求 ➢当CPU和DMAC并发访问同一个存储单元时,通过存 储器仲裁器解决冲突 ❖使用者:慢速设备 ➢如,磁盘驱动器 ❖ULK3上还有关于DMA的更多的内容
设备驱动程序模型 冬现在,硬件设备往往具有相似的功能,例如 >电源管理 >即插即用 >热插拔 Linux2.6试图为硬件设备的驱动程序 subsystem 开发者提供一 xlanchen@xlanchen-kubuntu 种统一的模型 xlanchen@xlanchen-kubuntu subsystem block class devices f bus dev firmware kset ?设备驱动程序模型 >Sysfs kobject >Kobject kset subsystem Tec 2023/7/14 Linux OS Analysis 30/105 new-id attribute
2023/7/14 Linux OS Analysis 30/105 设备驱动程序模型 ❖现在,硬件设备往往具有相似的功能,例如 ➢电源管理 ➢即插即用 ➢热插拔 ❖Linux2.6试图为硬件设备的驱动程序 开发者提供一 种统一的模型 ❖设备驱动程序模型 ➢Sysfs ➢Kobject,kset,subsystem
?kobject是驱动程序模型中的一个核心数据结构 与sysfs文件系统自然的邦定在一起: >每个kobject>对应sysfs文件系统中的一个目录 kobject往往被嵌入到设备驱动程序模型中的组件 中,如总线、设备和驱动程序的描述符 冬Kobject的作用是,为所属“容器”提供 >引用计数器 >维持容器的层次列表或组 >为容器的属性提供一种用户态查看的视图 ence and Tec 嵌入式系统实验室 2023/7/14 Linux OS Analysis 31/105 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 31/105 ❖kobject是驱动程序模型中的一个核心数据结构, 与sysfs文件系统自然的邦定在一起: ➢每个kobject对应sysfs文件系统中的一个目录 ❖kobject往往被嵌入到设备驱动程序模型中的组件 中,如总线、设备和驱动程序的描述符 ❖Kobject的作用是,为所属“容器”提供 ➢引用计数器 ➢维持容器的层次列表或组 ➢为容器的属性提供一种用户态查看的视图