Homework #7

Dependencies:   USBHost mbed

Fork of USBHostMSD_HelloWorld by mbed official

Committer:
jakowisp
Date:
Wed Aug 28 07:39:28 2013 +0000
Revision:
10:d32bc246a8b2
Parent:
4:f8a5c8aa895a
USB Device Interface, Architecture, Protocols, and Programming, HW 7

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 0:0d68fe822228 1 #include "mbed.h"
samux 0:0d68fe822228 2 #include "USBHostMSD.h"
samux 0:0d68fe822228 3
samux 0:0d68fe822228 4 DigitalOut led(LED1);
samux 0:0d68fe822228 5
jakowisp 10:d32bc246a8b2 6 int writeFile(int numFiles=10,int size=1000){
jakowisp 10:d32bc246a8b2 7 char fname[80];
jakowisp 10:d32bc246a8b2 8 uint32_t data;
jakowisp 10:d32bc246a8b2 9 FILE *fp;
jakowisp 10:d32bc246a8b2 10
jakowisp 10:d32bc246a8b2 11 for (int j=0;j<numFiles;j++) {
jakowisp 10:d32bc246a8b2 12 sprintf(fname,"/usb/test%d.txt",j);
jakowisp 10:d32bc246a8b2 13 fp = fopen(fname, "wb");
jakowisp 10:d32bc246a8b2 14 if (fp != NULL) {
jakowisp 10:d32bc246a8b2 15 for(int i=0; i<size;i++) {
jakowisp 10:d32bc246a8b2 16 data=rand();
jakowisp 10:d32bc246a8b2 17 fwrite(&data,sizeof(uint32_t),1,fp);
jakowisp 10:d32bc246a8b2 18 }
jakowisp 10:d32bc246a8b2 19 fclose(fp);
jakowisp 10:d32bc246a8b2 20 } else {
jakowisp 10:d32bc246a8b2 21 printf("FILE == NULL\r\n");
jakowisp 10:d32bc246a8b2 22 }
jakowisp 10:d32bc246a8b2 23 }
jakowisp 10:d32bc246a8b2 24 return 0;
jakowisp 10:d32bc246a8b2 25 }
jakowisp 10:d32bc246a8b2 26
jakowisp 10:d32bc246a8b2 27 int readFile(int numFiles=10,int size=1000){
jakowisp 10:d32bc246a8b2 28 char fname[80];
jakowisp 10:d32bc246a8b2 29 uint32_t data;
jakowisp 10:d32bc246a8b2 30 FILE *fp;
jakowisp 10:d32bc246a8b2 31
jakowisp 10:d32bc246a8b2 32 for (int j=0;j<numFiles;j++) {
jakowisp 10:d32bc246a8b2 33 sprintf(fname,"/usb/test%d.txt",j);
jakowisp 10:d32bc246a8b2 34 fp = fopen(fname, "rb");
jakowisp 10:d32bc246a8b2 35 if (fp != NULL) {
jakowisp 10:d32bc246a8b2 36
jakowisp 10:d32bc246a8b2 37 for(int i=0; i<size;i++) {
jakowisp 10:d32bc246a8b2 38 fread(&data,sizeof(uint32_t),1,fp);
jakowisp 10:d32bc246a8b2 39 }
jakowisp 10:d32bc246a8b2 40 fclose(fp);
jakowisp 10:d32bc246a8b2 41 } else {
jakowisp 10:d32bc246a8b2 42 printf("FILE == NULL\r\n");
jakowisp 10:d32bc246a8b2 43 }
jakowisp 10:d32bc246a8b2 44 }
jakowisp 10:d32bc246a8b2 45 return 0;
jakowisp 10:d32bc246a8b2 46 }
jakowisp 10:d32bc246a8b2 47
jakowisp 10:d32bc246a8b2 48
samux 0:0d68fe822228 49 void msd_task(void const *) {
samux 0:0d68fe822228 50
samux 0:0d68fe822228 51 USBHostMSD msd("usb");
jakowisp 10:d32bc246a8b2 52 Timer t;
samux 0:0d68fe822228 53
jakowisp 10:d32bc246a8b2 54
samux 0:0d68fe822228 55
jakowisp 10:d32bc246a8b2 56 // try to connect a MSD device
jakowisp 10:d32bc246a8b2 57 while(!msd.connect()) {
jakowisp 10:d32bc246a8b2 58 Thread::wait(500);
jakowisp 10:d32bc246a8b2 59 }
samux 1:473f339c54c1 60
jakowisp 10:d32bc246a8b2 61
jakowisp 10:d32bc246a8b2 62 printf("Start Writing\n\r");
jakowisp 10:d32bc246a8b2 63 t.reset();
jakowisp 10:d32bc246a8b2 64 t.start();
jakowisp 10:d32bc246a8b2 65 writeFile(1,10000000);
jakowisp 10:d32bc246a8b2 66 t.stop();
jakowisp 10:d32bc246a8b2 67 printf("Large File Write: The time taken was %f seconds\n\r", t.read());
jakowisp 10:d32bc246a8b2 68
jakowisp 10:d32bc246a8b2 69 printf("Start Writing\r\n");
jakowisp 10:d32bc246a8b2 70 t.reset();
jakowisp 10:d32bc246a8b2 71 t.start();
jakowisp 10:d32bc246a8b2 72 readFile(1,10000000);
jakowisp 10:d32bc246a8b2 73 t.stop();
jakowisp 10:d32bc246a8b2 74 printf("Large File read: The time taken was %f seconds\r\n", t.read());
jakowisp 10:d32bc246a8b2 75
jakowisp 10:d32bc246a8b2 76 printf("Start Writing\r\n");
jakowisp 10:d32bc246a8b2 77 t.reset();
jakowisp 10:d32bc246a8b2 78 t.start();
jakowisp 10:d32bc246a8b2 79 writeFile(100,100000);
jakowisp 10:d32bc246a8b2 80 t.stop();
jakowisp 10:d32bc246a8b2 81 printf("Small Files Write: The time taken was %f seconds\r\n", t.read());
jakowisp 10:d32bc246a8b2 82
jakowisp 10:d32bc246a8b2 83 printf("Start Writing\r\n");
jakowisp 10:d32bc246a8b2 84 t.reset();
jakowisp 10:d32bc246a8b2 85 t.start();
jakowisp 10:d32bc246a8b2 86 readFile(100,100000);
jakowisp 10:d32bc246a8b2 87 t.stop();
jakowisp 10:d32bc246a8b2 88 printf("Small File read: The time taken was %f seconds\r\n", t.read());
jakowisp 10:d32bc246a8b2 89
samux 0:0d68fe822228 90 }
samux 0:0d68fe822228 91
samux 0:0d68fe822228 92
samux 0:0d68fe822228 93 int main() {
samux 2:3e3df7a79050 94 Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4);
samux 0:0d68fe822228 95 while(1) {
samux 0:0d68fe822228 96 led=!led;
samux 0:0d68fe822228 97 Thread::wait(500);
samux 0:0d68fe822228 98 }
jakowisp 10:d32bc246a8b2 99 }
jakowisp 10:d32bc246a8b2 100
jakowisp 10:d32bc246a8b2 101 /*
jakowisp 10:d32bc246a8b2 102 [USB_INFO: /src/USBHost/USBHost/USBHost.cpp:158]New device connected: 100038ac [hub: 0 - port: 1]
jakowisp 10:d32bc246a8b2 103 [USB_INFO: /src/USBHost/USBHostMSD/USBHostMSD.cpp:81]New MSD device: VID:058f PID:6387 [dev: 100038ac - intf: 0]
jakowisp 10:d32bc246a8b2 104 Start Writing
jakowisp 10:d32bc246a8b2 105 [USB_INFO: /src/USBHost/USBHostMSD/USBHostMSD.cpp:164]MSD [dev: 100038ac] - Vendor ID: TRON:
jakowisp 10:d32bc246a8b2 106 [USB_INFO: /src/USBHost/USBHostMSD/USBHostMSD.cpp:168]MSD [dev: 100038ac] - Product ID: Legacy
jakowisp 10:d32bc246a8b2 107 [USB_INFO: /src/USBHost/USBHostMSD/USBHostMSD.cpp:172]MSD [dev: 100038ac] - Product rev: 8.07
jakowisp 10:d32bc246a8b2 108 [USB_INFO: /src/USBHost/USBHostMSD/USBHostMSD.cpp:139]MSD [dev: 100038ac] - blockCount: 8269823, blockSize: 512, Capacity: 4234149376
jakowisp 10:d32bc246a8b2 109
jakowisp 10:d32bc246a8b2 110 [USB_INFO: /src/USBHost/USBHost/USBHost.cpp:158]New device connected: 100038ac [hub: 0 - port: 1]
jakowisp 10:d32bc246a8b2 111 [USB_INFO: /src/USBHost/USBHostMSD/USBHostMSD.cpp:81]New MSD device: VID:058f PID:6387 [dev: 100038ac - intf: 0]
jakowisp 10:d32bc246a8b2 112 Start Writing
jakowisp 10:d32bc246a8b2 113 [USB_INFO: /src/USBHost/USBHostMSD/USBHostMSD.cpp:164]MSD [dev: 100038ac] - Vendor ID: TRON:
jakowisp 10:d32bc246a8b2 114 [USB_INFO: /src/USBHost/USBHostMSD/USBHostMSD.cpp:168]MSD [dev: 100038ac] - Product ID: Legacy
jakowisp 10:d32bc246a8b2 115 [USB_INFO: /src/USBHost/USBHostMSD/USBHostMSD.cpp:172]MSD [dev: 100038ac] - Product rev: 8.07
jakowisp 10:d32bc246a8b2 116 [USB_INFO: /src/USBHost/USBHostMSD/USBHostMSD.cpp:139]MSD [dev: 100038ac] - blockCount: 8269823, blockSize: 512, Capacity: 4234149376
jakowisp 10:d32bc246a8b2 117
jakowisp 10:d32bc246a8b2 118 Large File Write: The time taken was 740.766541 seconds
jakowisp 10:d32bc246a8b2 119 Start Writing
jakowisp 10:d32bc246a8b2 120 Large File read: The time taken was 470.112549 seconds
jakowisp 10:d32bc246a8b2 121 Start Writing
jakowisp 10:d32bc246a8b2 122 Small Files Write: The time taken was 962.334229 seconds
jakowisp 10:d32bc246a8b2 123 Start Writing
jakowisp 10:d32bc246a8b2 124 Small File read: The time taken was 562.649902 seconds
jakowisp 10:d32bc246a8b2 125 */