📄 dmaidetest.c
字号:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <asm/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
#include "config.h"
#include "nwAtaDrv.h"
#include "pciConfigLib.h"
/*#include "pciIntLib.h"*/
#include "ks8695p.h"
#include "../Vxworks2Linux/Vxworks2Linux.h"
#define FILESIZE (1024*1024*32)
#define IDEBUFSIZE (1024*8)
/*#undef IDE_DATA_VALIDATE */
#define IDE_DATA_VALIDATE
/*
#undef IDE_READ_TESTING
#undef IDE_WRITE_TESTING
*/
#define IDE_READ_TESTING
#define IDE_WRITE_TESTING
unsigned int g_StartBlk = 1024;
void main(void)
{
int cycleTimes =0;
/*unsigned char *pTempData=NULL;
unsigned char *pRWBuf=NULL;*/
unsigned char pTempData[IDEBUFSIZE];
unsigned char pRWBuf[IDEBUFSIZE];
unsigned int i = 0;
unsigned int startBlk = 1024;
unsigned int error = 0;
int wCount = 0;
int eCount = 0;
int iError;
int ideStatus =0;
unsigned int OldTicks;
unsigned int NewTIcks;
unsigned int DIskCap=0;
int DiskNum;
int DiskRile=0;
ATA_APP_DISK_INFO AtaInfo;
int TestCount;
/*pci_init();*/
printf("ide start\n");
if(ata_app_Scandisk()!=OK)
{
printf("PCI-ATA No Found DIsk.\n");
return;
}
printf("ide start1\n");
/*pTempData = (unsigned char *)malloc(IDEBUFSIZE);
pRWBuf = (unsigned char *)malloc(IDEBUFSIZE);*/
if((!pTempData) || (!pRWBuf))
{
printf("malloc memory Error.\n");
return;
}
for(i=0;i<IDEBUFSIZE;i++)
{
pTempData[i] = (i&0xff);
}
memset(pRWBuf,0,IDEBUFSIZE);
DiskNum = ata_app_GetDiskDev();
printf("Disk Number is %d\n",DiskNum);
if(DiskNum == 0)
return;
while(1)
{
DiskRile = 0;
for(;;)
{
printf("Start Disk is %d\n",DiskRile);
if(DiskRile > 1)
break;
if (g_StartBlk > 200121728)
{
g_StartBlk = 1024;
}
#ifdef IDE_READ_TESTING
printf("\nStarting IDE_READ_TESTING test...\n\n");
sysClkRateSet(100);
for(i=0;i<1000;i++);
startBlk = g_StartBlk;
ata_app_rw(0,0, g_StartBlk, IDEBUFSIZE/512, pTempData, O_WRONLY);
/*读32M数据,测试其读数据的效率,总共测试5次*/
for(TestCount = 0;TestCount<5;TestCount++)
{
eCount=0;
wCount = FILESIZE/IDEBUFSIZE;
OldTicks = tickGet();
for(i=0;i<wCount;i++)
{
error = ata_app_rw(0,DiskRile, g_StartBlk, IDEBUFSIZE/512, pRWBuf, O_RDONLY);
if (error != OK)
eCount++;
g_StartBlk+=(IDEBUFSIZE/512);
if (g_StartBlk > 200121728)
{
g_StartBlk = 1024;
}
}
NewTIcks = tickGet();
printf("Ide Read Rate is: %d Kbyte/s \n", ((FILESIZE/(NewTIcks - OldTicks))*100)/1024);
printf("Read Error Count is %d\n",eCount);
}
#endif
#ifdef IDE_WRITE_TESTING
printf("\nStarting IDE_WRITE_TESTING test...\n\n");
sysClkRateSet(100);
for(i=0;i<1000;i++);
/*读32M数据,测试其读数据的效率,总共测试5次*/
for(TestCount = 0;TestCount<5;TestCount++)
{
eCount=0;
wCount = FILESIZE/IDEBUFSIZE;
OldTicks = tickGet();
for(i=0;i<wCount;i++)
{
error = ata_app_rw(0,DiskRile, g_StartBlk, IDEBUFSIZE/512, pTempData, O_WRONLY);
if (error != OK)
eCount++;
g_StartBlk+=(IDEBUFSIZE/512);
if (g_StartBlk > 200121728)
{
g_StartBlk = 1024;
}
}
NewTIcks = tickGet();
printf("Ide Write Rate is: %d KByte/s \n", ((FILESIZE/(NewTIcks - OldTicks))*100)/1024);
printf("Read Error Count is %d\n",eCount);
}
#endif
#ifdef IDE_DATA_VALIDATE
printf("\nStart IDE_DATA_VALIDATE test...\n\n");
for(i=0;i<IDEBUFSIZE;i++)
{
pTempData[i] = (i&0xff);
}
eCount = 0;
for(TestCount = 0;TestCount < 1000;TestCount++)
{
error = ata_app_rw(0,DiskRile, g_StartBlk, IDEBUFSIZE/512, pTempData, O_WRONLY);
if (error != OK)
{
printf("--IDE write error\n");
}
memset(pRWBuf,0,IDEBUFSIZE);
error = ata_app_rw(0,DiskRile, g_StartBlk, IDEBUFSIZE/512, pRWBuf, O_RDONLY);
if (error != OK)
{
printf("--IDE read error!\n");
}
iError = 0;
for (i=0; i<IDEBUFSIZE; i++)
{
if (pTempData[i]!= pRWBuf[i])
{
printf("Serial = %d TempData = 0x%x ; RWBuf = 0x%x\n",i,pTempData[i],pRWBuf[i]);
iError++;
}
}
if (iError > 0)
{
eCount++;
printf("--Identify error %d\n", iError);
}
g_StartBlk += IDEBUFSIZE/512;
if (g_StartBlk > 200121728)
{
g_StartBlk = 1024;
}
taskDelay(1);
}
printf("IDE_DATA_VALIDATE Test Result: %d/1000.\n",eCount);
#endif
DiskRile++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -