设备内存
文章平均质量分 87
狂奔的蜗牛Alex
这个作者很懒,什么都没留下…
展开
-
IORESOURCE_IO和IORESOURCE_MEM
内核中有很多资源,但属于IO资源的有:#define IORESOURCE_IO 0x00000100 /* Resource type */#define IORESOURCE_MEM 0x00000200#define IORESOURCE_IRQ 0x00000400#define IORESOURCE_DMA 0x0000080原创 2012-08-21 13:58:04 · 1306 阅读 · 0 评论 -
Kmalloc和Vmalloc的区别
kmalloc()和vmalloc()介绍kmalloc()用于申请较小的、连续的物理内存1. 以字节为单位进行分配,在中2. void *kmalloc(size_t size, int flags) 分配的内存物理地址上连续,虚拟地址上自然连续3. gfp_mask标志:什么时候使用哪种标志?如下:———————————————————————————————-情形 相应标志—————————原创 2012-08-21 13:58:05 · 726 阅读 · 0 评论 -
linux设备模型之pci设备的I/O和内存(二)
回到pci_bus_size_bridges()中,经过pci_bridge_check_ranges()的处理过后,流程会转向pbus_size_io().从字面意思看这个函数是用来计算i/o的大小.主要是用来处理有待修正的pci bus.我们来思考一下,为什么pci bus的资源会有冲突呢?可能有两个原因:1:pci bus的起始地址冲突.在上层pci bus中,该区间已经被其它设备占用了.这原创 2012-08-21 13:58:04 · 2298 阅读 · 0 评论 -
linux设备模型之pci设备的I/O和内存(一)
------------------------------------------ 本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------Pci设备的I/O和内存是一个比较复杂的问题.如下的总线结构 在上图的总线结构中,ethernet设备和pci-pci br原创 2012-08-21 13:58:04 · 1710 阅读 · 0 评论 -
linux中的 IO端口映射和IO内存映射【转】
linux中的 IO端口映射和IO内存映射 CPU地址空间CPU地址空间(一)地址的概念 1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上 (如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。 物理地址空间,一部分给物理R原创 2012-08-21 13:58:04 · 580 阅读 · 0 评论 -
dma_addr_t与流式映射和一致性映射
DMA映射 一个DMA映射是要分配的DMA缓冲区与为该缓冲区生成的、设备可访问地址的组合。DMA映射建立了一个新的结构类型---dma_addr_t来表示总线地址。dma_addr_t类型的变量对驱动程序是不透明的,唯一允许的操作是将它们传递给DMA支持例程以及设备本身。 根据DMA缓冲区期望保留的时间长短,PCI代码有两种DMA映射:1)一致性映射2)流式DMA原创 2012-08-21 13:58:04 · 5378 阅读 · 1 评论 -
【引用】DMA内存申请--dma_alloc_coherent
在项目驱动过程中会经常用到dma传输数据,而dma需要的内存有自己的特点,一般认为需要物理地址连续,并且内存是不可cache的,在linux内核中提供一个供dma所需内存的申请函数dma_alloc_coheren. 如下所述:dma_alloc_coherent()dma_alloc_coherent() -- 获取物理页,并将该物理页的总线地址保存于dma_handle,返回该物理页的虚拟地址原创 2012-08-21 13:58:04 · 2943 阅读 · 0 评论 -
直接内存访问(DMA)【转】
1. 什么是DMA 直接内存访问是一种硬件机制,它允许外围设备和主内存之间直接传输它们的I/O原创 2012-08-21 13:58:04 · 498 阅读 · 0 评论 -
【引用】专家详解:内存工作原理及发展历程[1]
RAM(Random Access Memory)随机存取存储器对于系统性能的影响是每个PC用户都非常清楚的,所以很多朋友趁着现在的内存价格很低纷纷扩容了内存,希望借此来得到更高的性能。不过现在市场是多种内存类型并存的,SDRAM、DDR SDRAM、RDRAM等等,如果你使用的还是非常古老的系统,可能还需要EDO DRAM、FP DRAM(块页)等现在不是很常见的内存。 虽然RAM的类型非常原创 2012-08-21 13:58:04 · 539 阅读 · 0 评论 -
独立编址,统一编址,IO端口,IO内存,冯·诺伊曼,哈佛结构
独立编址,统一编址: I/O地址空间与内存地址空间编址方式是否统一?例如51为统一编址,I/O和存储器总计64K地址空间;X86为独立编址,分为I/O地址空间和存储器地址空间。 IO空间,内存空间 X86:支持内存空间,IO空间,独立编址。 ARM,MIPS,PowerPC只支持内存空间,即统一编址。 IO端口和IO内存:对于X86系统区别很大,例如,网卡接口,可以连接在IO的这一组地址总线上原创 2012-08-21 13:58:01 · 2679 阅读 · 0 评论 -
Linux内存管理-高端内存(二)
在支持MMU的32原创 2012-08-21 13:58:05 · 1120 阅读 · 0 评论 -
Linux物理内存管理概述
在内核态申请内存比在用户态申请内存要更为直接,它没有采用用户态那种延迟分配内存技术。内核认为一旦有内核函数申请内存,那么就必须立刻满足该申请内存的请求,并且这个请求一定是正确合理的。相反,对于用户态申请内存的请求,内核总是尽量延后分配物理内存,用户进程总是先获得一个虚拟内存区的使用权,最终通过缺页异常获得一块真正的物理内存。 1.物理内存的内核映射IA32架构中内核虚拟地址空间只有1GB大小(从原创 2012-08-21 13:58:05 · 1019 阅读 · 0 评论 -
Linux内存管理(上)
Linux内存管理(上) 摘要:原创 2012-08-21 13:58:04 · 373 阅读 · 0 评论 -
IO端口和IO内存
A.几乎每一种外设都是通过读写设备上的寄存器来进行的。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。而具体采用哪一种则取决于CPU的体系结构。 有些体系结构的原创 2012-08-21 13:58:04 · 266 阅读 · 0 评论 -
Linux内存管理-高端内存(一)
高端内存是指物理地址大于 896M 的内存。对于这样的内存,无法在“内核直接映射空间”进行映射。 为什么? 因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。 实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。 因此,Linux 规定“内核直接映射空间” 最多映射 89原创 2012-08-21 13:58:05 · 920 阅读 · 0 评论 -
Linux内核高端内存【转】
原创 2012-08-21 13:58:05 · 839 阅读 · 0 评论 -
Linux内存管理(下)
物理内存管理(页管理) Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数4k(在原创 2012-08-21 13:58:04 · 717 阅读 · 0 评论 -
linux高端内存和低端内存
首先给出它们的定义: 低端内存:存在逻辑地址的内存。 高端内存:是指那些不存在逻辑地址的内存。 在装有大量内存的32位系统中,内核逻辑地址和内核虚拟地址的不同将非常突出。由于使用32位地址最多同时能在4GB内存中寻址,因此直到最近,32位系统的linux仍被限制使用少于4GB的内存。 内核将4GB的虚拟地址空间分割为用户空间和内核空间,在二者的上下文中使用同样的原创 2012-08-21 13:58:04 · 631 阅读 · 0 评论 -
mmap详解【转】
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到原创 2012-08-21 13:58:05 · 710 阅读 · 0 评论