📄 driver488_test.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 + -