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 + -
显示快捷键?