prog.c

来自「LEON3 SOC environment, PCI bridges.」· C语言 代码 · 共 87 行

C
87
字号
#include <stdio.h>main(){   int i;   unsigned char a = 0;   unsigned int burstl = 132; // Burst length   unsigned int offset = 0x0; // Memory offset in the target system   volatile unsigned int *mes = 0x20000000;    volatile unsigned int *mem = 0x40000000;    volatile unsigned int *p = 0xD0000000;//0x40010000;//0xD0000000; // Pointer to local data   volatile unsigned int *p2= p + (burstl & 0xFFFFFFF0) + 0x20; // Pointer to read back data   volatile unsigned int *dma = 0x80000500; // DMA controller   volatile unsigned int *pci_apb = 0x80000400; //PCI Master controller   volatile unsigned int *pci_ahb = 0xe4000000; //AHB address the PCI Master      // Generate test data   for(i=0;i<burstl;i++){       *(p+i) = (unsigned int)i;   }   *(p+i) = 0xafafafaf; // Append testdata with "AFAFAFAF"   mem = p + i + 1; // Address to write simulation result     // Start DMA write   *(dma+1) = p;                   // AHB address   *(dma+2) = 0x44000000 + offset; // PCI address   *(dma+3) = burstl;              // burst length   *dma = 0x87;                    // 0x87 = Write   // Wait for DMA to be ready   do{      i=10;while(i--);   }while((*dma & 0x4) == 0);   // Start DMA read   *(dma+1) = p2;   *(dma+2) = 0x44000000 + offset;   *(dma+3) = burstl;   *dma = 0x85;   // Wait for DMA to be ready   do{      i=10;while(i--);   }while((*dma & 0x4) == 0);   //   *(dma+1) = p2 + (burstl & 0xFFFFFFF0) + 0x20;//   *(dma+2) = 0x44000000 + offset + 16;//   *(dma+3) = 2;//   *dma = 0x85;////   do{//      i=10;while(i--);//   }while((*dma & 0x4) == 0);      // Compare data   *mem = 0x0E;   for(i=0;i<burstl;i++){      if (*(p+i) != *(p2+i)){         *mem = 0x1E;      }   }// Some single PCI accesses //   *pci_apb = 0x40000000;//   *(mem + 1) = *(pci_ahb + 127);////   //   mem = 0x40011000;//   *pci_apb = 0x40000000;//   //   for(i=0;i<burstl;i++){//      *(mem + i) = *(pci_ahb + i);//   }//   //   *(mem + burstl + 1) = 0x0E;//   for(i=0;i<burstl;i++){//      if (*(p+i) != *(mem+i)){//         *(mem + burstl + 1) = 0x1E;//      }//   }      // End simulation with error   i=100;while(i--);   *mes = 0x1;   while(1==1);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?