Eli Hughes
/
COMPACT_FLASH
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(); } }