Go find your dirties pair shoes, you may want to throw at me.
I have had some success with my other toy projects and learned quite a bit. A lot of the DMA related details were hidden, so I haven't had to deal with it.
So, continuing on, I want to do the data processing on the Windows system instead of this external device - Still using the pre-existing FPGA to DMA the data.
1. In my KMDF driver, I create a common buffer.
2. Using the logical address I get from WdfCommonBufferGetAlignedLogicalAddress, I create a list of logical addresses, using the same page-size as that of the external device.
-- I figured this was safe since the CommonBuffer allocation is contiguous in the logical addresses space.
-- Note: Physical Page addresses doesn't matter since my User SW will be using the virtual address while the FPGA DMA will be using the logical addresses.
3. I get the Kernel Virtual Address by calling WdfCommonBufferGetAlignedVirtualAddress.
My question (drum roll) How can I convert the Kernel virtual address to a User virtual address so that my User SW can gain access to the data?
Thank again everyone for your patience and continuing help.
It looks like you're new here. If you want to get involved, click one of these buttons!
|Upcoming OSR Seminars|
|Writing WDF Drivers||21 Oct 2019||OSR Seminar Space & ONLINE|
|Internals & Software Drivers||18 Nov 2019||Dulles, VA|
|Kernel Debugging||30 Mar 2020||OSR Seminar Space|
|Developing Minifilters||27 Apr 2020||OSR Seminar Space & ONLINE|