load testing EthernetInterface
Dependencies: EthernetInterface mbed-rtos mbed
main.cpp@0:09101c438a45, 2014-01-17 (annotated)
- Committer:
- okini3939
- Date:
- Fri Jan 17 09:12:56 2014 +0000
- Revision:
- 0:09101c438a45
- Child:
- 1:321b8f934993
1st build
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 | 0:09101c438a45 | 10 | volatile int ref = 0, refreset = 0; // 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 | refreset = 1; |
okini3939 | 0:09101c438a45 | 28 | myled = 1; |
okini3939 | 0:09101c438a45 | 29 | } |
okini3939 | 0:09101c438a45 | 30 | |
okini3939 | 0:09101c438a45 | 31 | void real_count (void const *args) { |
okini3939 | 0:09101c438a45 | 32 | while (!refreset); |
okini3939 | 0:09101c438a45 | 33 | refreset = 0; |
okini3939 | 0:09101c438a45 | 34 | for (;;) { |
okini3939 | 0:09101c438a45 | 35 | if (refreset) { |
okini3939 | 0:09101c438a45 | 36 | count = 0; |
okini3939 | 0:09101c438a45 | 37 | refreset = 0; |
okini3939 | 0:09101c438a45 | 38 | break; |
okini3939 | 0:09101c438a45 | 39 | } else { |
okini3939 | 0:09101c438a45 | 40 | ref ++; |
okini3939 | 0:09101c438a45 | 41 | } |
okini3939 | 0:09101c438a45 | 42 | } |
okini3939 | 0:09101c438a45 | 43 | } |
okini3939 | 0:09101c438a45 | 44 | |
okini3939 | 0:09101c438a45 | 45 | int main() { |
okini3939 | 0:09101c438a45 | 46 | Ticker timer; |
okini3939 | 0:09101c438a45 | 47 | |
okini3939 | 0:09101c438a45 | 48 | pc.baud(115200); |
okini3939 | 0:09101c438a45 | 49 | pc.printf("LOAD TESTING\r\n"); |
okini3939 | 0:09101c438a45 | 50 | pc.printf("system clock: %d\r\n", SystemCoreClock); |
okini3939 | 0:09101c438a45 | 51 | |
okini3939 | 0:09101c438a45 | 52 | timer.attach(&isr_timer, 1); |
okini3939 | 0:09101c438a45 | 53 | |
okini3939 | 0:09101c438a45 | 54 | pc.printf("wait...\r\n"); |
okini3939 | 0:09101c438a45 | 55 | Thread thread(real_count, NULL, osPriorityRealtime); |
okini3939 | 0:09101c438a45 | 56 | while (! ref); |
okini3939 | 0:09101c438a45 | 57 | pc.printf("reference count: %d / sec\r\n", ref); |
okini3939 | 0:09101c438a45 | 58 | |
okini3939 | 0:09101c438a45 | 59 | pc.printf("ethernet...\r\n"); |
okini3939 | 0:09101c438a45 | 60 | eth.init(); //Use DHCP |
okini3939 | 0:09101c438a45 | 61 | if (eth.connect()) { |
okini3939 | 0:09101c438a45 | 62 | pc.printf("error\r\n"); |
okini3939 | 0:09101c438a45 | 63 | return -1; |
okini3939 | 0:09101c438a45 | 64 | } |
okini3939 | 0:09101c438a45 | 65 | pc.printf("IP: %s\r\n", eth.getIPAddress()); |
okini3939 | 0:09101c438a45 | 66 | |
okini3939 | 0:09101c438a45 | 67 | num = 0; |
okini3939 | 0:09101c438a45 | 68 | for (;;) { |
okini3939 | 0:09101c438a45 | 69 | if (num) { |
okini3939 | 0:09101c438a45 | 70 | pc.printf("idle count: %d / sec (%0.1f %%)\r\n", num, (float)num / ref * 100); |
okini3939 | 0:09101c438a45 | 71 | num = 0; |
okini3939 | 0:09101c438a45 | 72 | myled = 0; |
okini3939 | 0:09101c438a45 | 73 | } |
okini3939 | 0:09101c438a45 | 74 | Thread::wait(100); |
okini3939 | 0:09101c438a45 | 75 | } |
okini3939 | 0:09101c438a45 | 76 | } |