⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 driver488_test.c

📁 dma驱动程序的测试程序
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>  

#define addr1phy  ((unsigned long)0x08000000)
#define addr2phy  ((unsigned long)0x08020000)
#define addr3phy  ((unsigned long)0x08100000)
#define addr4phy  ((unsigned long)0x08120000)
#define addr5phy  ((unsigned long)0x08080000)
#define addr6phy  ((unsigned long)0x080a0000)
#define addr7phy  ((unsigned long)0x08180000)
#define addr8phy  ((unsigned long)0x081a0000)
#define addr9phy  ((unsigned long)0x080c0000)
#define addr10phy ((unsigned long)0x080e0000)
#define addr11phy ((unsigned long)0x081c0000)
#define addr12phy ((unsigned long)0x081e0000)      
                                                                                                                              
#define AC488_DEVICE  "/dev/ac488"

struct driver488
{
        unsigned char data[300];
        unsigned long addr[300];
        unsigned int len;
}driver488;

int main(void)
{
	unsigned int fd; 
        unsigned char bufk[300]={0};
        unsigned char bufread[300]={0}; 
	FILE *fdk;  
	unsigned int i=0;            
////////////////////////////////////download program///////////////////
	unsigned char bufp[300]={0};
	FILE *fdp;  
	unsigned int temp1=0;
	unsigned int temp2=0;          
////////////////////////////////////end download program/////////////
	fd = open(AC488_DEVICE, O_RDWR);                 
        if ( fd < 0 )
        {
                printf("Dummy: Can not open AC488  !\n");
                return -1;
        }
        fdk=fopen("48802CK.312","rb"); 				
	fread(bufk,1,242,fdk);	
	bufk[240]=0xbf;
	
	driver488.data[0]=0x00;
	driver488.data[1]=0x00;
	driver488.data[2]=0x0f;
	driver488.data[3]=0xff;
	driver488.addr[0]=addr1phy;
	driver488.addr[1]=addr2phy;
	driver488.addr[2]=addr3phy;
	driver488.addr[3]=addr4phy;
	driver488.len=4;
	write(fd,(char *)(&driver488),sizeof(driver488));
		
	for(i=0;i<242;i++)
	{
		driver488.data[i]=bufk[i];
	}	
	for(i=0;i<300;i++)
	{
		driver488.addr[i]=addr5phy;
		i++;
		driver488.addr[i]=addr6phy;
	}
	driver488.len=242;
	write(fd,(char *)(&driver488),sizeof(driver488));

	driver488.data[0]=0x10;
	driver488.data[1]=0x4b;
	driver488.data[2]=0x00;
	driver488.data[3]=0x00;
	driver488.data[4]=0x00;
	driver488.data[5]=0x7f;
	driver488.data[6]=0x10;
	driver488.data[7]=0x00;
	driver488.addr[0]=addr3phy;
	driver488.addr[1]=addr4phy;
	driver488.addr[2]=addr7phy;
	driver488.addr[3]=addr8phy;
	driver488.addr[4]=addr3phy;
	driver488.addr[5]=addr4phy;
	driver488.addr[6]=addr7phy;
	driver488.addr[7]=addr8phy;
	driver488.len=8;  
	write(fd,(char *)(&driver488),sizeof(driver488));

/*	for(i=0;i<300;i++)
	{	
		driver488.data[0]=0x00;
		driver488.data[1]=0x00;
		driver488.data[2]=0x10;
		driver488.data[3]=i/2;
		driver488.addr[0]=addr1phy;
		driver488.addr[1]=addr2phy;
		driver488.addr[2]=addr3phy;
		driver488.addr[3]=addr4phy;
		driver488.len=4;
		write(fd,(char *)(&driver488),sizeof(driver488));

		driver488.addr[0]=addr11phy;
		driver488.addr[1]=addr12phy;
		driver488.len=2;
		read(fd,(char *)(&driver488),sizeof(driver488));
               
		driver488.addr[0]=addr9phy;
                driver488.addr[1]=addr10phy;
		driver488.len=2;
                read(fd,(char *)(&driver488),sizeof(driver488));

		printf("******************%x**********************%x\n",i,driver488.data[0]);	
		i++;
		printf("******************%x**********************%x\n",i,driver488.data[1]);
	}
*////////////////////////////////////download program///////////////////
/*		driver488.data[0]=0x08;
                driver488.data[1]=0x08;
                driver488.addr[0]=addr1phy;
                driver488.addr[1]=addr2phy;
                driver488.len=2;
                write(fd,(char *)(&driver488),sizeof(driver488));
		sleep(2);
*/
		fdp=fopen("483cBIT.bin","rb");	
		driver488.data[0]=0x10;
		driver488.data[1]=0x4b;
		driver488.addr[0]=addr3phy;
		driver488.addr[1]=addr4phy;
		driver488.len=2;
		write(fd,(char *)(&driver488),sizeof(driver488));
			
		driver488.addr[0]=addr11phy;
                driver488.addr[1]=addr12phy;
		driver488.len=2;
                read(fd,(char *)(&driver488),sizeof(driver488));    
                while(1)
                {                
                	driver488.addr[0]=addr11phy;
                	driver488.addr[1]=addr12phy;
			driver488.len=2;
                	read(fd,(char *)(&driver488),sizeof(driver488));
//                	printf("*********************************%x\n",driver488.data[1]);
			if(driver488.data[1])  break;
		}
B_position:		
		fread(bufp,1,10,fdp);
		temp1=(bufp[4]*256+bufp[5])*2;
		temp2=bufp[0]&0x80;
               
                driver488.data[0]=0x10;
		driver488.data[1]=0x4b;
		driver488.addr[0]=addr3phy;
		driver488.addr[1]=addr4phy;
		driver488.len=2;
		write(fd,(char *)(&driver488),sizeof(driver488));
		
		for(i=0;i<temp1;i++,i++)
		{
			fread(bufp,1,2,fdp);
			driver488.data[0]=bufp[0];
			driver488.data[1]=bufp[1];
			driver488.addr[0]=addr5phy;
			driver488.addr[1]=addr6phy;
			driver488.len=2;
			write(fd,(char *)(&driver488),sizeof(driver488));
			printf("*******************ppppp*********%x*************%x\n",i+10,bufp[0]); // usleep(1);
			printf("*******************ppppp**********************%x\n",bufp[1]);      usleep(1); 
		}
		
		driver488.data[0]=0x10;
		driver488.data[1]=0x4b;
		driver488.data[2]=0x00;
		driver488.data[3]=0x00;
		driver488.data[4]=0x0c;
		driver488.data[5]=0x0c;
		driver488.data[6]=0x16;
		driver488.data[7]=0x6f;
		driver488.addr[0]=addr3phy;
		driver488.addr[1]=addr4phy;
		driver488.addr[2]=addr7phy;
		driver488.addr[3]=addr8phy;
		driver488.addr[4]=addr1phy;
		driver488.addr[5]=addr2phy;
		driver488.addr[6]=addr3phy;
		driver488.addr[7]=addr4phy;
		driver488.len=8;  
		write(fd,(char *)(&driver488),sizeof(driver488));
		
		driver488.addr[0]=addr11phy;
                driver488.addr[1]=addr12phy;
		driver488.len=2;
                read(fd,(char *)(&driver488),sizeof(driver488));                
                while(1)
                {                
                	driver488.addr[0]=addr11phy;
                	driver488.addr[1]=addr12phy;
			driver488.len=2;
                	read(fd,(char *)(&driver488),sizeof(driver488));
                	printf("*******ss             %x*************\n",driver488.data[1]);
			if(driver488.data[1])  break;
		}	
		if(driver488.data[1]==1&&!temp2)	goto B_position;
		if(driver488.data[1]==2)		printf("**************program download is failed********\n");	
///////////////////////////////////end download program///////////////
	fclose(fdk);
	fclose(fdp);
	usleep(1);
	close(fd);
	return 0;
}


⌨️ 快捷键说明

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