Introduction This HardwareLibs project is meant as an example for using the DMA APIs. The following DMA APIs are demonstrated: - Initializing DMA - Memory to Memory Transfers - Zero to Memory Transfers Note: This example was tested against SoC EDS 18.0. ==== Limitations: - N/A ==== Target Boards: - Altera Arria10 SoC Development Board rev C. ===== Source Files The following are descriptions of the source and header files contained in this project: dma_demo.c Contains the functions demonstrating DMA APIs. ===== Building the Example Before running the example, the target executable first needs to be built. 1. In DS-5, build the application: 1a. Switch to the C/C++ Perspective if not already in that perspective by selecting the menu: Window >> Open Perspective >> C/C++. 1b. In the "Project Explorer" panel, right-mouse-click "Altera-SoCFPGA-HardwareLib-DMA-A10-GNU" and select "Build Project". The Console panel (bottom of the UI) should detail the progress of the build and report any warnings or errors. ===== Debugging the Example 1. Configure the FPGA with the A10 GHRD FPGA configuration file /embedded/examples/hardware/a10_soc_devkit_ghrd/output_files/ghrd_10as066n2.sof This can be achieved by running the following command from the Embedded Command Shell: quartus_pgm --no_banner --mode=jtag -o "p;$SOCEDS_DEST_ROOT/examples/hardware/a10_soc_devkit_ghrd/output_files/ghrd_10as066n2.sof" 2. Connect the USB to serial bridge to the host computer. 3. Connect the USB-BlasterII to the host computer. 4. Install the USB to serial bridge driver on the host computer if that driver is not already present. Consult documentation for the DevKit for instructions on installing the USB to serial bridge driver. 5. Install the USB-BlasterII driver on the host computer if that driver is not already present. Consult documentation for QuartusII for instructions on installing the USB-BlasterII driver. 6. In DS-5, configure the launch configuration. 6a. Select the menu: Run >> Debug Configurations... 6b. In the options on the left, expand "DS-5 Debugger" and select "Altera-SoCFPGA-HardwareLib-DMA-A10-GNU". 6c. In the "Connections" section near the bottom, click Browse. 6d. Select the appropriate USB-BlasterII to use. Multiple items will be presented if there is more than one USB-BlasterII connection attached to the host computer. 6e. Click "Apply" then "OK" to apply the USB-BlasterII selection. 6f. Click "Debug" run the example in the debugger. Connecting to the target takes a moment to load the Bootloader, run the Bootloader, load the executable, and run executable. After the debug connection is established, the debugger will pause the execution at the main() function. Users can then set additional break points, step into, step out of, or step one line using the DS-5 debugger. Consult documentation for DS-5 for more information on debugging operations. ===== Sample output The address and size of the test buffers are randomly generated for each test. INFO: System Initialization. INFO: Setting up Global Timer. INFO: Setting up DMA. INFO: Allocating DMA channel. INFO: Using random seed = 0x76cdbd2. INFO: Demo DMA memory to memory transfer. INFO: Copying from 0x001da3f7 to 0x002e4593 size = 95032 bytes. INFO: Waiting for DMA transfer to complete. INFO: Comparing source and destination buffers. INFO: Demo DMA memory to memory succeeded. INFO: Demo DMA zero to memory transfer. INFO: Zeroing buffer at 0x00225cd2, size = 977836 bytes. INFO: Waiting for DMA transfer to complete. INFO: Testing destination buffer for zero. INFO: Demo DMA zero to memory succeeded. INFO: System shutdown. RESULT: All tests successful.