WinCE CEDDK之地址映射函数

来源:互联网 发布:java waite() 编辑:程序博客网 时间:2024/06/11 23:49

作者:ARM-WinCE

 

CEDDK中提供了用于地址映射的函数,在CEDDK/ddk_map/ddk_map.c中。该模块中主要提供了两个函数用于物理地址到虚拟地址的映射与取消映射

 

1. PVOID MmMapIoSpace(PHYSICAL_ADDRESS PhysicalAddress, ULONG NumberOfBytes, BOOLEAN CacheEnable)

    PhysicalAddress        要被映射的物理起始地址

    NumberOfBytes        要被映射的字节数

    CacheEnable             是否使能Cache,如果是映射设备的寄存器,应该是FALSE

驱动中经常会用到该函数而且一般是在初始化的时候,从物理地址映射出虚拟地址,然后通过虚拟地址来操作设备。该函数实际上调用了VirtualAllocVirtualCopy函数来完成从物理地址到虚拟地址的映射,函数的返回值为映射后的虚拟地址。

 

2. VOID MmUnmapIoSpace(IN PVOID BaseAddress, IN ULONG NumberOfBytes)

    BaseAddress            指向被映射后的虚拟地址

    NumberOfBytes       被映射的字节数

该函数用于取消映射,是通过调用VirtualFree函数来实现。

 

在该模块中还可以看到TransBusAddrToVirtualTransBusAddrToStatic两个函数,这两个函数已经被CEDDKBus模块中的BusTransBusAddrToVirtualBusTransBusAddrToStatic两个函数所代替,这两个函数以前已经介绍过,这里不再重复了。