资源简介
sg-dma dma传输在nios中实现。
代码片段和文件信息
#include “stdio.h“
#include “stdlib.h“
#include “io.h“
#include “alt_types.h“
#include “altera_avalon_sgdma.h“
#include “sys/alt_cache.h“
/**********************************************************************************
* This function is responsible for allocating the data buffer for each *
* descriptor. A random buffer length will be generated if you set the minimum *
* and maximum buffer lengths to be different. To run a more controlled test set *
* the minimum and maximum buffer lengths to be equal. *
* *
* Returns 0 for sucess 1 for failure. *
**********************************************************************************/
alt_u32 create_test_data(alt_sgdma_descriptor * transmit_descriptors
alt_sgdma_descriptor * receive_descriptors
alt_u32 number_of_buffers
alt_u32 minimum_buffer_length
alt_u32 maximum_buffer_length)
{
alt_u32 buffer_counter contents_counter temp_length;
alt_u32 *transmit_ptr *receive_ptr;
alt_u8 *transmit_ptr_copy *receive_ptr_copy; // will use these to fill up the tx buffers and clear the rx buffers
alt_u32 temp_data = 0;
/* Initialization of the buffer memories and the transmit+receive descriptors */
for(buffer_counter = 0; buffer_counter < number_of_buffers; buffer_counter++)
{
/* Generate a random buffer length between within MINIMUM_BUFFER_LENGTH and MAXIMUM_BUFFER_LENGTH */
if(minimum_buffer_length == maximum_buffer_length) // if you don‘t want a random length set these equal
{
temp_length = minimum_buffer_length;
}
else
{
if(minimum_buffer_length > maximum_buffer_length)
{
printf(“Please set the maximum buffer length to be larger than\n“);
printf(“the minimum buffer length (in includes_and_settigns.h)\n“);
return 1;
}
temp_length = (rand() % (maximum_buffer_length - minimum_buffer_length)) + minimum_buffer_length;
}
transmit_ptr = (alt_u32 *)malloc(temp_length); // this descriptor will point at a buffer of length (temp_length)
if(transmit_ptr == NULL)
{
printf(“Allocating a transmit buffer region failed\n“);
return 1;
}
receive_ptr = (alt_u32 *)malloc(temp_length); // since the same contents will be received the length is the same
if(receive_ptr == NULL)
{
printf(“Allocating a receive buffer region failed\n“);
return 1;
}
/* This will populate sequential data (modulo 256) in each transmit buffer a byte at a time.
* The recieve buffers are also cleared with zeros so that each time this software is run
* the data can be reverified. Before this function returns a flush will be performed t
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2008-12-11 10:10 SG-DMA\7_1\
目录 0 2008-12-11 10:10 SG-DMA\7_1\CycloneII\
文件 3351 2007-05-02 13:19 SG-DMA\7_1\CycloneII\readme.txt
文件 910 2007-02-27 18:58 SG-DMA\7_1\CycloneII\SG-DMA.qpf
文件 12395 2007-05-02 14:00 SG-DMA\7_1\CycloneII\SG-DMA.qsf
文件 841106 2007-05-01 13:10 SG-DMA\7_1\CycloneII\SG-DMA.sof
文件 3100 2007-03-12 08:31 SG-DMA\7_1\CycloneII\SGDMA_Design.bsf
文件 134570 2007-05-01 13:03 SG-DMA\7_1\CycloneII\SGDMA_Design.ptf
文件 36049 2007-05-01 13:02 SG-DMA\7_1\CycloneII\SGDMA_Design.sopc
文件 15702 2007-05-01 11:14 SG-DMA\7_1\CycloneII\SG_DMA.bdf
目录 0 2008-12-11 10:10 SG-DMA\7_1\CycloneII\software\
目录 0 2008-12-11 10:10 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\
文件 1848 2007-04-30 15:27 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\.cdtbuild
文件 2761 2007-05-01 11:09 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\.cdtproject
文件 2948 2007-03-29 11:07 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\.project
目录 0 2008-12-11 10:10 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\.settings\
文件 106 2007-03-29 11:07 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\.settings\org.eclipse.cdt.core.prefs
文件 414 2007-04-30 15:27 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\.settings\org.eclipse.cdt.managedbuilder.core.prefs
文件 137 2007-03-29 11:07 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\application.stf
文件 7627 2007-05-01 11:07 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\create_test_data.c
文件 6551 2007-04-11 18:07 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\desc
文件 1536 2007-05-01 11:08 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\includes_and_settings.h
文件 10606 2007-04-30 15:21 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\main.c
文件 646 2007-03-29 11:07 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\readme.txt
文件 4493 2007-05-01 11:08 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE\validate_results.c
目录 0 2008-12-11 10:10 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE_syslib\
文件 1822 2007-03-29 11:06 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE_syslib\.cdtbuild
文件 2551 2007-05-01 11:09 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE_syslib\.cdtproject
文件 4583 2007-04-27 15:20 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE_syslib\.project
目录 0 2008-12-11 10:10 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE_syslib\.settings\
文件 106 2007-03-29 11:07 SG-DMA\7_1\CycloneII\software\SGDMA_SOFTWARE_syslib\.settings\org.eclipse.cdt.core.prefs
............此处省略106个文件信息
- 上一篇:linux学习资料(收集了很久)
- 下一篇:绕过趋势杀毒卸载密码
评论
共有 条评论