void TestDisk(void){ DSTATUS result; unsigned short block; int i; unsigned long n; // simple test of eDisk printf("\n\rEE345M/EE380L, Lab 5 eDisk test\n\r"); result = eDisk_Init(0); // initialize disk if(result) diskError("eDisk_Init",result); printf("Writing blocks\n\r"); n = 1; // seed for(block = 0; block < MAXBLOCKS; block++){ for(i=0;i<512;i++){ n = (16807*n)%2147483647; // pseudo random sequence buffer[i] = 0xFF&n; } GPIO_PF3 = 0x08; // PF3 high for 100 block writes if(eDisk_WriteBlock(buffer,block))diskError("eDisk_WriteBlock",block); // save to disk GPIO_PF3 = 0x00; } printf("Reading blocks\n\r"); n = 1; // reseed, start over to get the same sequence for(block = 0; block < MAXBLOCKS; block++){ GPIO_PF2 = 0x04; // PF2 high for one block read if(eDisk_ReadBlock(buffer,block))diskError("eDisk_ReadBlock",block); // read from disk GPIO_PF2 = 0x00; for(i=0;i<512;i++){ n = (16807*n)%2147483647; // pseudo random sequence if(buffer[i] != (0xFF&n)){ printf("Read data not correct, block=%u, i=%u, expected %u, read %u\n\r",block,i,(0xFF&n),buffer[i]); OS_Kill(); } } } printf("Successful test of %u blocks\n\r",MAXBLOCKS); OS_Kill(); }
void write_test(void) { int i; unsigned int then, now; eFile_Init(); eFile_Format(); // format buffer with dummy data for(i = 0; i < 512; i++) { buffer[i] = 0xA5; } // possibly should just use OS_Time() then = OS_MsTime(); // write 10 blocks for(i = 0; i < 10; i++) { eDisk_WriteBlock(buffer, i); } // now = OS_MsTime(); // OS_AddThread(&SH_Shell, 128, 0); // OS_Sleep(1000); // OS_Suspend(); // printf("Write test took %d ms", now - then); // eFile_Format(); OS_Kill(); }