Xilinx授权:公开全部源代码的 PCIe DMA 引擎


这个DMA引擎在Xilinx 65nm的V5器件的PCIe IP上测试通过;已经在ML506 和ML555板上测试通过,欢迎大家下载使用和学习
资源截图
代码片段和文件信息
/*++

Copyright (c) Microsoft Corporation.  All rights reserved.

    THIS CODE AND INFORMATION IS PROVIDED “AS IS“ WITHOUT WARRANTY OF ANY
    KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
    PURPOSE.

Module Name:

    Init.c

Abstract:

    Contains most of initialization functions

Environment:

    Kernel mode

--*/

#include “precomp.h“

#include “Init.tmh“

#include 


#ifdef ALLOC_PRAGMA
#pragma alloc_text (PAGE PCIEInitializeDeviceExtension)
#pragma alloc_text (PAGE PCIEPrepareHardware)
#pragma alloc_text (PAGE PCIEInitializeDMA)
#pragma alloc_text (PAGE PCIEInitWrite)
#pragma alloc_text (PAGE PCIEInitRead)
#endif

void PCIEWait(int ms);


VOID PCIEIOCtrlCode(
    IN WDFQUEUE      Queue
    IN WDFREQUEST    Request
    IN size_t        OutputBufferLength
    IN size_t        InputBufferLength
    IN ULONG         IoControlCode
    );

NTSTATUS
PCIEInitializeDeviceExtension(
    IN PDEVICE_EXTENSION DevExt
    )
/*++
Routine Description:

    This routine is called by EvtDeviceAdd. Here the device context is
    initialized and all the software resources required by the device is
    allocated.

Arguments:

    DevExt     Pointer to the Device Extension

Return Value:

     NTSTATUS

--*/
{
    NTSTATUS    status;
    ULONG       dteCount;
    WDF_IO_QUEUE_CONFIG  queueConfig;

    PAGED_CODE();

    DevExt->MaximumTransferLength = PCIE_MAXIMUM_TRANSFER_LENGTH;    
    DevExt->BufferSystemVirtualAddress  = NULL;
    DevExt->BufferUserVirtualAddress    = NULL;
    DevExt->BufferMdl                   = NULL;
    
    DevExt->Buffer2SystemVirtualAddress = NULL;
    DevExt->Buffer2UserVirtualAddress   = NULL;    
    DevExt->Buffer2Mdl                  = NULL;

    //
    // Setup a queue to handle only IRP_MJ_WRITE requests in Sequential
    // dispatch mode. This mode ensures there is only one write request
    // outstanding in the driver at any time. framework will present the next
    // request only if the current request is completed.
    // Since we have configured the queue to dispatch all the specific requests
    // we care about we don‘t need a default queue.  A default queue is
    // used to receive requests that are not preconfigured to goto
    // a specific queue.
    //
    WDF_IO_QUEUE_CONFIG_INIT ( &queueConfig
                              WdfIoQueueDispatchSequential);

    queueConfig.EvtIoDeviceControl = PCIEIOCtrlCode;

    status = WdfIoQueueCreate( DevExt->Device
                                &queueConfig
                                WDF_NO_object_ATTRIBUTES
                                &DevExt->IOCtrlQueue );

    if(!NT_SUCCESS(status)) {
        TraceEvents(TRACE_LEVEL_ERROR DBG_PNP
                    “WdfIoQueueCreate failed: %!STATUS!“ status);
        return status;
    }


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     548807  2007-11-13 03:09  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5docpcie_blk_plus_ds551.pdf

     文件     343188  2007-11-13 03:09  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5docpcie_blk_plus_gsg343.pdf

     文件    2485883  2007-11-13 03:09  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5docpcie_blk_plus_ug341.pdf

     文件       6989  2007-11-07 15:58  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designBMD.v

     文件        138  2007-08-08 23:22  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designBMD_64.v

     文件      13914  2007-11-17 13:46  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designBMD_64_RX_ENGINE.v

     文件      21728  2007-11-17 15:03  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designBMD_64_TX_ENGINE.v

     文件      13780  2007-11-17 14:34  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designBMD_EP.v

     文件      11237  2007-11-18 04:09  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designBMD_EP_MEM.v

     文件       9400  2007-11-17 15:05  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designBMD_EP_MEM_ACCESS.v

     文件      10219  2007-11-17 15:06  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designBMD_INTR_CTRL.v

     文件       2413  2007-08-08 22:00  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designBMD_TO_CTRL.v

     文件      64245  2007-11-13 03:05  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designEP_MEM.v

     文件       8332  2007-11-13 03:05  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designpci_exp_1_lane_64b_ep.v

     文件      12002  2007-11-13 03:11  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designpci_exp_64b_app.v

     文件      17972  2007-11-13 03:05  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designxilinx_pci_exp_1_lane_ep.v

     文件        426  2007-11-13 03:05  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designxilinx_pci_exp_1_lane_ep_product.v

     文件       8725  2007-11-11 06:23  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5example_designxilinx_pci_exp_blk_plus_1_lane_ep-XC5VLX50T-FF1136-1_ES.ucf

     文件        984  2007-11-11 04:38  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implementackup_implement.sh

     文件       2315  2007-11-11 07:11  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implementcoregen.log

     文件        803  2007-11-11 04:39  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implementendpoint_blk_plus_v1_5_top.bld

     文件       1003  2007-11-13 03:43  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implementimplement.sh

     文件        176  2007-11-13 02:03  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implementmake_ace.sh

     文件      25385  2007-11-13 03:51  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implement
ovas.rc

     文件        239  2007-08-08 22:00  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implementpcie_ace.cmd

     文件    1769956  2007-11-18 08:30  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implementpcie_x1_plus_v1_5es_imp.ace

     文件       5093  2007-11-18 08:23  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implement
esultsmapped.map

     文件     130357  2007-11-18 08:23  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implement
esultsmapped.mrp

     文件     793571  2007-11-18 08:23  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implement
esultsmapped.ncd

     文件     309239  2007-11-18 08:21  DMA_Freewarepcie_ml505esx1_prjml505cgendpoint_blk_plus_v1_5implement
esultsmapped.pcf

............此处省略327个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)