User Tools

Site Tools


lokos

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lokos [2019/05/30 05:19]
2480
lokos [2019/10/23 21:11] (current)
Line 53: Line 53:
    
 int main() { int main() {
-    printf("​Hello World!"​);​+    printf("​Hello World!\n");
 } }
  </​code>​  </​code>​
Line 297: Line 297:
         dps = (double)loops / benchtime;         dps = (double)loops / benchtime;
         ​         ​
 +        DMIPS = dps/​1757; ​  //​1757 was the score from first MCU
         totalRepetitions++;​         totalRepetitions++;​
-        DMIPS = dps/1757  //1757 was the score from first MCU+        ​totalDMIPSScores += DMIPS
 +        avg totalDMIPSScores/totalRepetitions ​; 
 +        ​
         if(max < DMIPS){         if(max < DMIPS){
             max = DMIPS; ​               max = DMIPS; ​  
         }         }
-  + 
-  +         printf("​Dhrystone time for %ld passes = %.3f sek\r\n",​ loops, benchtime); 
-        ​avg ​totalDMIPSScores/​totalRepetitions ​+         printf("​benchmarks Result ​ %.0f DMPIS\r\n",​ DMIPS)
-        +         printf("​Best DMIPS Score = : %.0f\r\n",​ max); 
 +         ​printf("​Average DMIPS Score =  : %.0f\r\n",​ avg);
         wait(1.0);         wait(1.0);
     }     }
-     +  ​
-     ​printf("​Dhrystone time for %ld passes = %.3f sek\r\n",​ loops, benchtime);​ +
-     ​printf("​benchmarks Result =  %.0f DMPIS\r\n",​ DMIPS); +
-     ​printf("​Best DMIPS Score = : %.0f\r\n",​ max); +
-     ​printf("​Average DMIPS Score =  : %.0f\r\n",​ avg); +
-     +
-    ​+
 } }
  
Line 328: Line 326:
  
  
-====== Αποτελέσματα ​======+===== Αποτελέσματα =====
  
-{{.png}}+{{2a.jpg}}
  
  
Line 339: Line 337:
  
  
-γ) Για το γ ερώτημα ​χρειαζόματε ​τα εξής βήματα+γ) Για το γ ερώτημα ​κάναμε κάποιες τροποποιήσεις. Δημιουργήσαμε μια συνάρτηση pressed η οποία ​είναι συνδεδεμένη με ενα από ​τα onboard button και είναι καταχωρημένο ως interruptIn. Στη main καλούμε τη συνάρτηση dhrystoneBenchmark() 
-  - Δημιουργία ξεχωριστών συναρτήσεων.+η οποία εκτελεί το benchmark και στη διάρκεια αυτής της εκτέλεσης πατούσαμε αρκετές φορές το interrupt button βλέποντας ταυτόχρονα ​την φωτεινή ένδειξη να ανάβει και να σβήνει κάθε φορά που καλούταν η pressed 
  
  
Line 346: Line 344:
 #include "​mbed.h"​ #include "​mbed.h"​
 #include "​dhry.h"​ #include "​dhry.h"​
-#include "​rtos.h"​ 
- 
-Thread benchThread;​ 
-Thread potThread; 
  
 DigitalOut myled(LED1);​ DigitalOut myled(LED1);​
-InterruptIn button(SW2);​ 
-float potValue ; 
- 
 Timer timer; Timer timer;
 Serial pc(USBTX, USBRX); ​ //serial channel over HDK USB interface Serial pc(USBTX, USBRX); ​ //serial channel over HDK USB interface
 +InterruptIn btn(SW2);
  
-double benchtime, dps; 
-unsigned long loops; 
  
 +AnalogIn potentiometer(A3);​
 +DigitalOut led(LED2);
  
-void dhrystoneBenchmark() {+void pressed(){ 
 +     
 +    if (led)  
 +        led = 0; 
 +    else 
 +        led = 1; 
 +
 + 
 + 
 +void dhrystoneBenchmark(){ 
 +     
 +    double benchtime, dps; 
 +    unsigned long loops; 
 +    ​
     double DMIPS;     double DMIPS;
-    double ​sum_DMIPS ​= 0; +    double ​totalDMIPSScores ​= 0; 
-    double ​max_DMIPS ​= -1000;+    double ​max = -1000;
     double avg;     double avg;
-    int number_of_runs=0; +    int totalRepetitions=0
-    printf("​Dhrystone Benchmark Program \n");+     
 +     
 +    pc.baud(9600)
 +    printf("​Dhrystone Benchmark Program ​C/1 12/01/84\r\n");
     timer.start();​     timer.start();​
-    ​for(int i=0; i<10; i++){+    ​ 
 +    while(1) {
         loops = 0l;         loops = 0l;
         myled = 1;         myled = 1;
Line 378: Line 387:
             loops += LOOPS;             loops += LOOPS;
             benchtime = timer.read();​             benchtime = timer.read();​
-        } while (benchtime <= 10.000);+        } while (benchtime <= 60.000);
         myled = 0;         myled = 0;
-        ​ 
-        number_of_runs++;​ 
         dps = (double)loops / benchtime;         dps = (double)loops / benchtime;
-        DMIPS = dps/1757; 
-        if(max_DMIPS < DMIPS){ 
-            max_DMIPS = DMIPS; ​   
-        } 
         ​         ​
-        ​sum_DMIPS += DMIPS+        DMIPS = dps/1757  //1757 was the score from first MCU 
-        avg sum_DMIPS/number_of_runs+        ​totalRepetitions++
-        ​printf("​Dhrystone time for %ld passes = %.3f sek\r\n",​ loops, benchtime)+        ​totalDMIPSScores += DMIPS; 
-        ​printf("​This machine benchmarks at %.0f DMPIS\r\n", ​DMIPS)+        avg = totalDMIPSScores/​totalRepetitions ​;
-        ​printf("​The best DMIPS is : %.0f\r\n",​ max_DMIPS);​ +
-        printf("​The average DMIPS is : %.0f\r\n", ​avg);+
         ​         ​
 +        if(max < DMIPS){
 +            max = DMIPS; ​  
 +        }
 +
 +         ​printf("​Dhrystone time for %ld passes = %.3f sek\r\n",​ loops, benchtime);
 +         ​printf("​benchmarks Result =  %.0f DMPIS\r\n",​ DMIPS);
 +         ​printf("​Best DMIPS Score = : %.0f\r\n",​ max);
 +         ​printf("​Average DMIPS Score =  : %.0f\r\n",​ avg);     
         wait(1.0);         wait(1.0);
     }     }
 +    ​
 } }
  
- +int main() 
-AnalogIn potentiometer(A3); +    
-DigitalOut red(D7); +    ​dhrystoneBenchmark(); 
- +    ​btn.fall(&​pressed);
-void runPotentiometer(){+
     ​     ​
-    ​ 
-    while(1) { 
-        potValue = potentiometer.read();​ 
-  ​ 
-        red = 1;    
-        wait(potValue*1000);​ 
-        red = 0;    
- 
-    } 
 } }
  
  
 +</​code>​
  
-int main(int, char**) { 
-    dhrystoneBenchmark();​ 
-    button.fall(&​runPotentiometer);​ 
-    while (1){} 
-} 
  
 +===== Αποτελέσματα =====
  
-</​code>​+ 
 + 
 +Τα αποτελέσματα που πήραμε ήταν παράδοξα καθώς τα νούμερα ήταν μεγαλύτερα απο το ερώτημα 2α.  
 +{{23.jpg}}
  
  
  
 ====== Project Μέρος 3 ====== ====== Project Μέρος 3 ======
 +
 +
 +Αρχικός στόχος μας ήταν η δημιουργία μιας εφαρμογής στην οποία θα μπορούσαμε να εξοικειωθούμε με την χρήση της θύρας ethernet καθώς με διάφορα περιφερειακά με τα οποία θα μπορούσαμε να είχαμε αλληλεπίδραση με το χρήστη.
 +
 +Η εφαρμογή η οποία δημιουργήσαμε αποστέλει ενα HTTP request στην ιστοσελίδα openweathermap.org με την δυνατότητα ο χρήστης να επιλέξει την πόλη την οποία επιθυμεί. Στη συνέχεια διαχωρίζουμε τα δεδομένα τα οποία δεχτήκαμε και εκτυπώνουμε αυτά τα οποία έχουμε προεπιλέξει.
 +
 +Για την εφαρμογή χρησιμοποιήσαμε την βιβλιοθήκη **mbed-http**
 + 
 +
 +
 +
 +
 +
  
  
Line 451: Line 464:
         ​         ​
     }     }
 +    printf("​\nBody (%d bytes):​\n\n%s\n",​ res->​get_body_length(),​ res->​get_body_as_string().c_str());​
     ​     ​
 } }
Line 481: Line 495:
 int main() { int main() {
     printf("​Program Starting..\n"​);​     printf("​Program Starting..\n"​);​
-    // Connect to the network with the default networking interface 
     ​     ​
 +    // Connect to the network with the default networking interface
     NetworkInterface* network = connect_to_default_network_interface();​     NetworkInterface* network = connect_to_default_network_interface();​
  
Line 490: Line 504:
         // By default the body is automatically parsed and stored in a buffer, this is memory heavy.         // By default the body is automatically parsed and stored in a buffer, this is memory heavy.
         // To receive chunked response, pass in a callback as last parameter to the constructor.         // To receive chunked response, pass in a callback as last parameter to the constructor.
-        
         ​         ​
-        ​//char request =  "​http://​api.openweathermap.org/​data/​2.5/​forecast?"​+city+"&​cnt=1&​APPID=3ff29328f7c661abef83a312168bc559";​ +        HttpRequest* get_req = new HttpRequest(network,​ HTTP_GET, "​http://​api.openweathermap.org/​data/​2.5/​weather?​q=Ioannina&​units=metric&​APPID=3ff29328f7c661abef83a312168bc559"​);​
-        ​HttpRequest* get_req = new HttpRequest(network,​ HTTP_GET, "​http://​api.openweathermap.org/​data/​2.5/​forecast?​q=Ioannina&​cnt=1&​APPID=3ff29328f7c661abef83a312168bc559"​);​+
         ​         ​
         HttpResponse* get_res = get_req->​send();​         HttpResponse* get_res = get_req->​send();​
Line 507: Line 519:
     }     }
  
-    
-    
-    
-    
-    
-    
-    
     wait(osWaitForever);​     wait(osWaitForever);​
 } }
Line 520: Line 525:
   </​code>​   </​code>​
  
 +===== Αποτελέσματα ===== 
  
 +{{output.jpg}}
  
  
lokos.1559182786.txt.gz · Last modified: 2019/10/23 21:11 (external edit)