![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
wince5.0函数介绍
josh915
这个作者很懒,什么都没留下…
展开
-
OEMAddressTable介绍
一般在ARM架构的CPU上,物理地址都是统一编址的,寻址空间为4GB(32Bit CPU)。也就是说,针对一个ARM的处理器,它可以访问的物理空间是4GB。在WinCE中,ARM中的4GB物理地址空间将被映射为512MB的虚拟内存空间。OEMAddressTable就是一个4GB物理地址空间到WinCE Kernel中的512MB虚拟地址空间的映射表。 在BSP中,会定义OEMAddre转载 2009-01-08 15:49:00 · 669 阅读 · 0 评论 -
LOCALALLOC和GLOBALLOC有什么区别? 全局内存和局部内存有什么区别?(转)
在16位Windows中是有区别的,因为在16位windows用一个全局堆和局部堆来管理内存,每一个应用程序或dll装入内存时,代码段被装入全局堆,而系统又为每个实例从全局堆中分配了一个64kb的数据段作为该实例的局部堆,用来存放应用程序的堆栈和所有全局或静态变量。而LocalAlloc/GlobalAlloc就是分别用于在局部堆或全局堆中分配内存。 由于每个进程的局部堆很小,所以在局部堆中分配内转载 2009-02-25 15:33:00 · 779 阅读 · 0 评论 -
函数WaitForMultipleObjects整理
DWORD WaitForMultipleObjects( DWORD nCount, const HANDLE* lpHandles, BOOL bWaitAll, DWORD dwMilliseconds);其中参数 nCount 句柄的数量 最大值为MAXIMUM_WAIT_OBJECTS(64)HANDLE 句柄数组的指针。HANDLE 类型可以为(Event转载 2009-02-25 17:22:00 · 596 阅读 · 0 评论 -
动态映射和静态映射
先说VirtualAlloc 和VirtualCopy VirtualAlloc 首先会从我们的虚拟地址空间中申请(或者说预留)一块虚拟空间,准备接下来要用它。注意此时,可用的物理内存并没有减少,只是虚拟地址少了一块可用的区域。真正把这块之前reserved的虚拟空间映射到物理的内存区域就是由VirtualCopy来干的,此时,MMU的页表就会增加一个entry,来表示物理--虚拟的映射关系。转载 2010-04-29 10:52:00 · 3900 阅读 · 0 评论 -
wince地址映射过程
首先要理解 windows CE 下的地址映射机制。 wince有两种地址:物理地址和虚拟地址.不同架构的 CPU 硬件上的区别导致地址映射也不同。MIPS和SH x 处理器,不采用MMU,直接在CPU和内核里定义 1G 的物理地址;而X86和ARM带有 MMU 单元,在 OEMAddressTable 中定义物理地址到虚拟地址间的映射关系或者是OS启动后调用 CreateStaticMappin转载 2010-04-29 16:20:00 · 680 阅读 · 0 评论 -
wince下的地址映射知识点滴
1.如果是在bootloader中打开MMU之前,程序访问设备寄存器,可以直接操作物理地址,无需虚实映射。2.wince启动后,硬件上ARM和X86体系的处理器启动了MMU,操作系统只能访问到虚拟地址,不能直接操作物理内存了。但是如果是X86的CPU,由于它的外设I/O端口和存储器空间分开编址,可以直接嵌入汇编或者使用宏read_port_xxx,write_port_xxx来读写设备寄存器的物理转载 2010-04-29 10:37:00 · 412 阅读 · 0 评论 -
VirtualAlloc和VirtualCopy的蕴含知识点
1.VirtualAlloc用来在进程的虚拟地址空间中保留(reserve)或者提交(commit)页。在保留时以64KB为粒度,即保留空间以64K为单位。而提交虚拟地址时,则以页(典型大小为4KB)为单位。2.VirtualCopy用来绑定一块物理内存到当前进程虚拟地址空间。参数里的lpvSrc既可以是内核段的虚拟地址也可以是物理地址(用page_physical来标记)。同时要注意lpvSrc转载 2010-04-29 10:39:00 · 588 阅读 · 0 评论 -
KernelIoControl和OEMIoControl的分析和使用(作者:wogoyixikexie@gliet)
对于KernelIoControl这个函数我们并不陌生,在2440 5.0BSP当中,这个函数在很多驱动中出现了,主要是用来申请中断,比如下面BOOL RetVal = KernelIoControl( IOCTL_HAL_REQUEST_SYSINTR, &Irq,转载 2010-05-05 10:24:00 · 860 阅读 · 1 评论 -
WinCE CEDDK之DMA相关函数
<br />CEDDK提供了DMA的相关函数,在CEDDK/DDK_DMA/ddk_dma.c中定义。实际上里面最有用的就两个函数,HalAllocateCommonBuffer(..)和HalFreeCommonBuffer(..)分别用于为DMA申请和释放<br /> 首先介绍一下会用到的DMA适配器结构,在ceddk.h中定义,如下:<br />typedef struct _DMA_ADAPTER_OBJECT_<br />{<br /> USHORT ObjectSize; //转载 2010-06-12 15:45:00 · 387 阅读 · 0 评论