load testing EthernetInterface
Dependencies: EthernetInterface mbed-rtos mbed
main.cpp@1:321b8f934993, 2014-01-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |