Compact Flash I/O test
Diff: main.cpp
- Revision:
- 1:dc171f34db9b
- Parent:
- 0:6b1e6c9e48ba
--- a/main.cpp Tue Dec 27 02:03:56 2011 +0000
+++ b/main.cpp Fri Dec 30 21:02:16 2011 +0000
@@ -1,166 +1,18 @@
#include "mbed.h"
#include "ff.h"
#include "diskio.h"
-
-Serial pc(USBTX, USBRX); // tx, rx
-
-CHAR ModelName[81] = {0};
-CHAR SerialNumber[9] = {0};
-CHAR FirmwareVerion[41] = {0};
-BYTE DataBuf[512];
-BYTE DataBufCheck[512];
-
-
-Timer DataSpeedTimer;
-
-#define SECTORS_TO_READ_WRITE 4096
-
+#include "MODSERIAL.h"
+#include "Terminal.h"
+#include "usbhost_inc.h"
int main()
{
- DWORD i,j,k;
- DWORD NumSectors;
- DWORD Sector;
InitCompactFlashInterface();
- float DataWriteSpeed = 0;
- float DataReadSpeed = 0;
- float DataReadWriteSpeed = 0;
-
-
- for(i=0;i<512;i++)
- DataBuf[i] = rand();
-
+ InitTerminal();
+
while(1)
{
- wait(2.0);
- if(disk_status(0)&STA_NODISK)
- {
- pc.printf("\r\n\r\nNo Disk\r\n");
- }
- else
- {
- pc.printf("\r\n\r\nDisk Detected\r\n\r\n\n");
- if(disk_initialize(0)&STA_NOINIT)
- {
- pc.printf("Disk Failed Initialization\r\n");
- }
- else
- {
- pc.printf("Disk Initialization Success!\r\n");
-
-
- pc.printf("Probing attached Disk\r\n");
- pc.printf("-----------------------\r\n");
-
- disk_ioctl (0, /* Physical drive nmuber (0) */
- GET_SECTOR_COUNT, /* Control code */
- &NumSectors /* Buffer to send/receive data block */
- );
- disk_ioctl (0, /* Physical drive nmuber (0) */
- ATA_GET_MODEL, /* Control code */
- ModelName /* Buffer to send/receive data block */
- );
- disk_ioctl (0, /* Physical drive nmuber (0) */
- ATA_GET_REV, /* Control code */
- FirmwareVerion /* Buffer to send/receive data block */
- );
- disk_ioctl (0, /* Physical drive nmuber (0) */
- ATA_GET_SN, /* Control code */
- SerialNumber /* Buffer to send/receive data block */
- );
-
-
- pc.printf("Model Name: %d\r\n", ModelName);
- pc.printf("Firmware Version: %s\r\n",FirmwareVerion);
- pc.printf("Serial Number: %s\r\n",SerialNumber);
- pc.printf("Number of Sectors: %d\r\n",NumSectors);
-
- DataSpeedTimer.reset();
- DataSpeedTimer.start();
-
- pc.printf("Data write test started...\r\n\r\n",DataReadSpeed);
- for(i=0;i<SECTORS_TO_READ_WRITE;i++)
- {
- if(disk_write (0,&DataBuf[0],i,1) == RES_ERROR)
- {
- pc.printf("Error writing test block %d, stopping.\r\n", i);
- break;
- }
- }
- DataSpeedTimer.stop();
-
- DataWriteSpeed = (((SECTORS_TO_READ_WRITE * 512.0)/1024.0))/(DataSpeedTimer.read());
- pc.printf("Data write speed %.1f kb/s\r\n",DataWriteSpeed);
-
-
- pc.printf("Data read test started...\r\n\r\n",DataReadSpeed);
- DataSpeedTimer.reset();
- DataSpeedTimer.start();
- for(i=0;i<SECTORS_TO_READ_WRITE;i++)
- {
- if(disk_read (0,&DataBuf[0],i,1) == RES_ERROR)
- {
- pc.printf("Error reading test block %d, stopping.\r\n", i);
- break;
- }
- }
- DataSpeedTimer.stop();
-
- DataReadSpeed = (((SECTORS_TO_READ_WRITE * 512.0)/1024.0))/(DataSpeedTimer.read());
- pc.printf("Data read speed %.1f kb/s\r\n",DataReadSpeed);
-
-
- pc.printf("Data read/write test started...\r\n\r\n",DataReadSpeed);
- DataSpeedTimer.reset();
- DataSpeedTimer.start();
- for(j=0;j<SECTORS_TO_READ_WRITE;j++)
- {
-
- for(i=0;i<512;i++)
- {
- DataBuf[i] = rand();
- DataBufCheck[i] = 0;
- }
-
-
-
- if(disk_write (0,&DataBuf[0],j,1) == RES_ERROR)
- {
- pc.printf("Error writing test block %d, stopping.\r\n", i);
- break;
- }
-
- if(disk_read (0,&DataBufCheck[0],j,1) == RES_ERROR)
- {
- pc.printf("Error reading test block %d, stopping.\r\n", i);
-
- break;
- }
-
-
- for(i=0;i<512;i++)
- {
- if(DataBuf[i]!=DataBufCheck[i])
- {
- pc.printf("Readback failure on test block %d byte %d\r\n",j,i);
-
- for(k=0;k<512;k++)
- {
- pc.printf("k:%d Wrote: %d Read: %d\r\n",k,DataBuf[k],DataBufCheck[k]);
- }
- break;
- }
- }
- }
- DataSpeedTimer.stop();
-
- DataReadWriteSpeed = (((SECTORS_TO_READ_WRITE * 512.0)/1024.0))/(DataSpeedTimer.read());
- pc.printf("Data read/write speed %.1f kb/s\r\n",DataReadWriteSpeed);
-
- }
- }
-
-
+ ProcessTerminal();
}
}
Eli Hughes