WINCE 对物理地址的访问
2010-08-26 14:16
225 查看
wince编程--对物理地址的访问
(1)IO接口是XSCale处理器的外部设备,对于一般的单片机,可以直接操作硬件,即通过直接读写IO端口来访问硬件.
而对于WICNE操作系统,它屏蔽了用户应用程序对硬件访问的权限,只有内核应用程序才可以访问硬件资源.如果要直接访问某一址的物理内存(对于ARM核的MCU,IO端口地址通常被映射到物理内存中,内存和IO统一编址)可以采用内存映射方法,将该硬件寄存器映射到普通的内存空间,像操作内存地址一样操作硬件寄存器.
WINCE提供了 VirtualAlloc()和VirtualCopy() 函数,
VirtualAlloc()负责在虚拟内存空间内保留一段虚拟内存,
VirtualCopy()负责把一段物理内存和虚拟内在绑定,
这样最终对物理内存的访问就可以通过虚拟地址来进行了.
(2)
首先使用VirtualAlloc 分配出一个虚拟的地址空间,代码如下:
pLightReg=(char*)VirtualAlloc(0,0x400,MEM_RESERVE,PAGE_READWRITE)
这样就分配出一个MEM_RESERVE类型的存储器空间,但它并没有占用实际内存空间,而是虚拟的地址空间.
接着将实际的硬件地址(例如LED的片选控制信号地址)映射到前面分配的虚拟地址空间,使用VirtualCopy函数建立起两个地址间的映射关系.代码如下:
VirtualCopy((PVOID)pLightReg,(PVOID)(pLightIoBaseAddress>>8),0x400,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL)
这里pLightReg是前面分配的虚拟地址空间,而pLightIoBaseAddress为实际的硬件地址,需要将它右移8位,因为在函数中存储器分配是以256位为单位的.而后面的选项则是指定了映射地址的属性—可读.不缓冲以及硬件物理地址.现在就可以使用虚拟地址访问原来不能直接访问的硬件地址了.
(1)IO接口是XSCale处理器的外部设备,对于一般的单片机,可以直接操作硬件,即通过直接读写IO端口来访问硬件.
而对于WICNE操作系统,它屏蔽了用户应用程序对硬件访问的权限,只有内核应用程序才可以访问硬件资源.如果要直接访问某一址的物理内存(对于ARM核的MCU,IO端口地址通常被映射到物理内存中,内存和IO统一编址)可以采用内存映射方法,将该硬件寄存器映射到普通的内存空间,像操作内存地址一样操作硬件寄存器.
WINCE提供了 VirtualAlloc()和VirtualCopy() 函数,
VirtualAlloc()负责在虚拟内存空间内保留一段虚拟内存,
VirtualCopy()负责把一段物理内存和虚拟内在绑定,
这样最终对物理内存的访问就可以通过虚拟地址来进行了.
(2)
首先使用VirtualAlloc 分配出一个虚拟的地址空间,代码如下:
pLightReg=(char*)VirtualAlloc(0,0x400,MEM_RESERVE,PAGE_READWRITE)
这样就分配出一个MEM_RESERVE类型的存储器空间,但它并没有占用实际内存空间,而是虚拟的地址空间.
接着将实际的硬件地址(例如LED的片选控制信号地址)映射到前面分配的虚拟地址空间,使用VirtualCopy函数建立起两个地址间的映射关系.代码如下:
VirtualCopy((PVOID)pLightReg,(PVOID)(pLightIoBaseAddress>>8),0x400,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL)
这里pLightReg是前面分配的虚拟地址空间,而pLightIoBaseAddress为实际的硬件地址,需要将它右移8位,因为在函数中存储器分配是以256位为单位的.而后面的选项则是指定了映射地址的属性—可读.不缓冲以及硬件物理地址.现在就可以使用虚拟地址访问原来不能直接访问的硬件地址了.
相关文章推荐
- WinCE下访问物理地址
- 转WINCE对物理地址的访问
- wince 如何访问物理地址
- Zynq-Linux移植学习笔记之15-用户APP直接访问PL物理地址
- WinCE如何响应硬件中断以及读写物理地址
- 程序访问物理地址之MmMapIoSpace 与 OALPAtoVA
- Linux 下面对物理地址的访问
- Windows 2000 下通过访问物理地址取主机唯一信息
- wince 中虛擬地址與物理地址的換算(非程序)
- 应用程序访问物理地址之MmMapIoSpace
- WINCE6.0物理地址和虚拟地址的换算
- WinCE如何响应硬件中断以及读写物理地址
- wince6.0下物理地址映射,寄存器访问介绍
- WinCE中的虚拟地址和实际的物理地址是如何对应
- 应用程序访问物理地址之MmMapIoSpace
- 应用程序访问物理地址之MmMapIoSpace
- (转)WINCE物理和虚拟地址的问题
- wince5.0物理地址访问与wince6.0对比
- WinCE下的地址映射以及寄存器访问
- 内核空间怎么访问物理地址