?? exp9.c
字號:
#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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -