load testing EthernetInterface

Dependencies:   EthernetInterface mbed-rtos mbed

Committer:
okini3939
Date:
Fri Jan 17 13:58:36 2014 +0000
Revision:
1:321b8f934993
Parent:
0:09101c438a45
fix reference count

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:09101c438a45 1 #include "mbed.h"
okini3939 0:09101c438a45 2 #include "rtos.h"
okini3939 0:09101c438a45 3 #include "EthernetInterface.h"
okini3939 0:09101c438a45 4
okini3939 0:09101c438a45 5 Serial pc(USBTX, USBRX);
okini3939 0:09101c438a45 6 DigitalOut myled(LED1);
okini3939 0:09101c438a45 7 EthernetInterface eth;
okini3939 0:09101c438a45 8
okini3939 0:09101c438a45 9 volatile int count = 0, num = 0, reset = 0;
okini3939 1:321b8f934993 10 volatile int ref = 123456; // no rtos = 8727224
okini3939 0:09101c438a45 11
okini3939 0:09101c438a45 12 extern "C"
okini3939 0:09101c438a45 13 void os_idle_demon (void) {
okini3939 0:09101c438a45 14 for (;;) {
okini3939 0:09101c438a45 15 if (reset) {
okini3939 0:09101c438a45 16 count = 0;
okini3939 0:09101c438a45 17 reset = 0;
okini3939 0:09101c438a45 18 } else {
okini3939 0:09101c438a45 19 count ++;
okini3939 0:09101c438a45 20 }
okini3939 0:09101c438a45 21 }
okini3939 0:09101c438a45 22 }
okini3939 0:09101c438a45 23
okini3939 0:09101c438a45 24 void isr_timer () {
okini3939 0:09101c438a45 25 num = count;
okini3939 0:09101c438a45 26 reset = 1;
okini3939 0:09101c438a45 27 myled = 1;
okini3939 0:09101c438a45 28 }
okini3939 0:09101c438a45 29
okini3939 1:321b8f934993 30 void dummy_task (const void *args) {
okini3939 1:321b8f934993 31 volatile int w;
okini3939 0:09101c438a45 32 for (;;) {
okini3939 1:321b8f934993 33 for (w = 0; w < 10000; w ++);
okini3939 1:321b8f934993 34 Thread::wait(10);
okini3939 0:09101c438a45 35 }
okini3939 0:09101c438a45 36 }
okini3939 0:09101c438a45 37
okini3939 0:09101c438a45 38 int main() {
okini3939 0:09101c438a45 39 Ticker timer;
okini3939 0:09101c438a45 40
okini3939 0:09101c438a45 41 pc.baud(115200);
okini3939 0:09101c438a45 42 pc.printf("LOAD TESTING\r\n");
okini3939 0:09101c438a45 43 pc.printf("system clock: %d\r\n", SystemCoreClock);
okini3939 0:09101c438a45 44
okini3939 0:09101c438a45 45 timer.attach(&isr_timer, 1);
okini3939 0:09101c438a45 46
okini3939 0:09101c438a45 47 pc.printf("wait...\r\n");
okini3939 1:321b8f934993 48 while (!num) {
okini3939 1:321b8f934993 49 Thread::wait(100);
okini3939 1:321b8f934993 50 }
okini3939 1:321b8f934993 51 pc.printf(" dummy %d%0.1f dummy \r\n", num, (float)num / ref * 100);
okini3939 1:321b8f934993 52 num = 0;
okini3939 1:321b8f934993 53 for (;;) {
okini3939 1:321b8f934993 54 if (num) {
okini3939 1:321b8f934993 55 pc.printf("reference count: %d /sec\r\n", num);
okini3939 1:321b8f934993 56 ref = num;
okini3939 1:321b8f934993 57 num = 0;
okini3939 1:321b8f934993 58 break;
okini3939 1:321b8f934993 59 }
okini3939 1:321b8f934993 60 Thread::wait(100);
okini3939 1:321b8f934993 61 }
okini3939 0:09101c438a45 62
okini3939 0:09101c438a45 63 pc.printf("ethernet...\r\n");
okini3939 0:09101c438a45 64 eth.init(); //Use DHCP
okini3939 0:09101c438a45 65 if (eth.connect()) {
okini3939 0:09101c438a45 66 pc.printf("error\r\n");
okini3939 0:09101c438a45 67 return -1;
okini3939 0:09101c438a45 68 }
okini3939 0:09101c438a45 69 pc.printf("IP: %s\r\n", eth.getIPAddress());
okini3939 0:09101c438a45 70
okini3939 1:321b8f934993 71 // Thread thread1(dummy_task);
okini3939 1:321b8f934993 72
okini3939 0:09101c438a45 73 num = 0;
okini3939 0:09101c438a45 74 for (;;) {
okini3939 0:09101c438a45 75 if (num) {
okini3939 1:321b8f934993 76 pc.printf("idle count: %d /sec (%0.1f %%)\r\n", num, (float)num / ref * 100);
okini3939 0:09101c438a45 77 num = 0;
okini3939 0:09101c438a45 78 myled = 0;
okini3939 0:09101c438a45 79 }
okini3939 0:09101c438a45 80 Thread::wait(100);
okini3939 0:09101c438a45 81 }
okini3939 0:09101c438a45 82 }