exp9.c
来自「本程序功能是在FPGA上nios处理器的sram接口程序。」· C语言 代码 · 共 52 行
C
52 行
#include "stdio.h"
#include "system.h"
#include "altera_avalon_dma.h"
#include "altera_avalon_dma_regs.h"
#include "alt_types.h"
unsigned int *RD_ADDRESS = (unsigned int *)(0x000A0000);
unsigned int *WR_ADDRESS = (unsigned int *)(0x000A5000);
#define LENGTH 1000
int main (void)
{
unsigned int *m_Addr;
int i;
printf("初始化SRAM。 \n");
m_Addr=WR_ADDRESS;
for(i=0;i<1000;i++)
*(m_Addr++)=0;
m_Addr=RD_ADDRESS;
for(i=0;i<LENGTH;i++)
*(m_Addr++)=i;
printf("DMA传输开始: \n");
IOWR_ALTERA_AVALON_DMA_CONTROL(DMA_BASE, 0x0);
//
IOWR_ALTERA_AVALON_DMA_STATUS(DMA_BASE, 0);
//
IOWR_ALTERA_AVALON_DMA_RADDRESS(DMA_BASE, (int)RD_ADDRESS);
//
IOWR_ALTERA_AVALON_DMA_WADDRESS(DMA_BASE, (int)WR_ADDRESS);
//
IOWR_ALTERA_AVALON_DMA_LENGTH(DMA_BASE, 4*LENGTH);
//
IOWR_ALTERA_AVALON_DMA_CONTROL(DMA_BASE, 0x0CC);
//因为上面的地址增1既加4,所以只能选传输模式为word
m_Addr=WR_ADDRESS;
for(i=0;i<LENGTH;i++)
{printf("i=%d,m_Addr=%d \n",i,*(m_Addr));
if(*(m_Addr++)!=i)
break;
}
if(i==LENGTH)
printf("\tDMA传输成功!\n");
else
printf("\tDMA传输失败! %d\n",i);
while(1)
{}
return 0;
}
/**********************************End************************************/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?