在使用windriver进行驱动开发时,不可避免地会使用到内存分配的功能,这里先介绍下jungo公司的技术手册
https://www.jungo.com/st/support/windriver-technical-documents/
其他的相关文档在juno官网上都可以搜索到,非常重要。
这里的功能在technical-docunments(简称TD)手册的第1.3节中有具体说明
Technical Document #3: Preallocating contiguous DMA buffers on Windows
; Host-to-device DMA buffer:
HKR,, "DmaToDeviceCount",0x00010001,0x04 ; Number of preallocated DMA_TO_DEVICE buffers
HKR,, "DmaToDeviceBytes",0x00010001,0x100000 ; Buffer size, in bytes
HKR,, "DmaToDeviceOptions",0x00010001,0x41 ; DMA flags (0x40=DMA_TO_DEVICE
; + 0x1=DMA_KERNEL_BUFFER_ALLOC)
; Device-to-host DMA buffer:
HKR,, "DmaFromDeviceCount",0x00010001,0x04 ; Number of preallocated DMA_FROM_DEVICE buffers
HKR,, "DmaFromDeviceBytes",0x00010001,0x100000 ; Buffer size, in bytes
HKR,, "DmaFromDeviceOptions",0x00010001,0x21 ; DMA flags (0x20=DMA_FROM_DEVICE
; + 0x1=DMA_KERNEL_BUFFER_ALLOC)
这里想说明的是关于HKR的配置:
配置一:
DmaToDeviceCount指的是需要分配的内存数目,0x00010001是校验位,0x4是具体的分配数目
配置二:
DmaToDeviceBytes指的是需要分配的内存大小,后面的0x100000,这里0x表示16位,即1048576比特,约100MB的大小
配置一:
DmaFromDeviceOptions指的是分配的内存的h使用方向,0x41表示的是从主机到设备,0x21表示从设备到主机