Myself and others new to mbed having trouble understanding the various arcane requirements. Adding a mbed_app.json file to enable a library feature instead of using a #define is one of them. Sharing this to help others.
Dependencies: max32630fthr USBDevice
main.cpp@9:29f7bb957c34, 2019-04-05 (annotated)
- Committer:
- psionprime
- Date:
- Fri Apr 05 01:44:50 2019 +0000
- Revision:
- 9:29f7bb957c34
- Parent:
- 8:d2b660bf5f94
- initial commit; - all stats enabled; - getting zeros for CPU times if anyone wants to fix ? :)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
psionprime | 9:29f7bb957c34 | 1 | // Unless otherwise noted in individual libraries, this code is for educational |
psionprime | 9:29f7bb957c34 | 2 | // purposes only with no guaranties - use at your own risk. This file is |
psionprime | 9:29f7bb957c34 | 3 | // declared to be completely in the public domain. |
psionprime | 9:29f7bb957c34 | 4 | |
switches | 0:60a522ae2e35 | 5 | #include "mbed.h" |
switches | 2:57500e991166 | 6 | #include "max32630fthr.h" |
switches | 1:6923b075c8d7 | 7 | #include "USBSerial.h" |
switches | 0:60a522ae2e35 | 8 | |
psionprime | 9:29f7bb957c34 | 9 | // for stats |
psionprime | 9:29f7bb957c34 | 10 | #include "platform/mbed_assert.h" |
psionprime | 9:29f7bb957c34 | 11 | #include "platform/mbed_debug.h" |
psionprime | 9:29f7bb957c34 | 12 | #include "platform/mbed_error.h" |
switches | 0:60a522ae2e35 | 13 | |
psionprime | 9:29f7bb957c34 | 14 | // define all stats enabled before including the header |
psionprime | 9:29f7bb957c34 | 15 | //#define MBED_ALL_STATS_ENABLED 1 |
psionprime | 9:29f7bb957c34 | 16 | // *** using mos 5.11.5 (as 12.0 does not compile even blinky) does not work as expected. must include mbed_app.json file at same |
psionprime | 9:29f7bb957c34 | 17 | // *** directory level as main.cpp with: |
psionprime | 9:29f7bb957c34 | 18 | /* |
psionprime | 9:29f7bb957c34 | 19 | { |
psionprime | 9:29f7bb957c34 | 20 | "target_overrides": { |
psionprime | 9:29f7bb957c34 | 21 | "*": { |
psionprime | 9:29f7bb957c34 | 22 | "platform.all-stats-enabled": true |
psionprime | 9:29f7bb957c34 | 23 | } |
psionprime | 9:29f7bb957c34 | 24 | } |
psionprime | 9:29f7bb957c34 | 25 | } |
psionprime | 9:29f7bb957c34 | 26 | */ |
psionprime | 9:29f7bb957c34 | 27 | #include "platform/mbed_stats.h" |
psionprime | 9:29f7bb957c34 | 28 | |
psionprime | 9:29f7bb957c34 | 29 | #define MAX_THREAD_INFO 10 |
psionprime | 9:29f7bb957c34 | 30 | |
psionprime | 9:29f7bb957c34 | 31 | // global vars |
psionprime | 9:29f7bb957c34 | 32 | mbed_stats_sys_t sys_info; |
psionprime | 9:29f7bb957c34 | 33 | mbed_stats_cpu_t cpu_info; |
psionprime | 9:29f7bb957c34 | 34 | mbed_stats_heap_t heap_info; |
psionprime | 9:29f7bb957c34 | 35 | mbed_stats_stack_t stack_info[ MAX_THREAD_INFO ]; |
psionprime | 9:29f7bb957c34 | 36 | |
psionprime | 9:29f7bb957c34 | 37 | // platform specific |
psionprime | 9:29f7bb957c34 | 38 | MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3); |
switches | 1:6923b075c8d7 | 39 | |
switches | 3:601c11238ccb | 40 | // Virtual serial port over USB |
h_keyur | 8:d2b660bf5f94 | 41 | USBSerial microUSB; |
switches | 3:601c11238ccb | 42 | |
psionprime | 9:29f7bb957c34 | 43 | // RTOS is enabled |
switches | 0:60a522ae2e35 | 44 | int main() |
switches | 0:60a522ae2e35 | 45 | { |
psionprime | 9:29f7bb957c34 | 46 | // wait until user ready |
psionprime | 9:29f7bb957c34 | 47 | while (!microUSB.terminal_connected){ |
psionprime | 9:29f7bb957c34 | 48 | Thread::yield(); |
psionprime | 9:29f7bb957c34 | 49 | } |
switches | 2:57500e991166 | 50 | |
switches | 0:60a522ae2e35 | 51 | |
psionprime | 9:29f7bb957c34 | 52 | // stats |
psionprime | 9:29f7bb957c34 | 53 | microUSB.printf("\n\nSystem:"); |
psionprime | 9:29f7bb957c34 | 54 | microUSB.printf("\n---"); |
psionprime | 9:29f7bb957c34 | 55 | mbed_stats_sys_get(&sys_info); |
psionprime | 9:29f7bb957c34 | 56 | microUSB.printf("\n\tmbed os version: %d", sys_info.os_version); |
psionprime | 9:29f7bb957c34 | 57 | microUSB.printf("\n\tCPU ID: %d", sys_info.cpu_id); |
psionprime | 9:29f7bb957c34 | 58 | microUSB.printf("\n\tCompiler ID: "); |
psionprime | 9:29f7bb957c34 | 59 | switch(sys_info.compiler_id){ |
psionprime | 9:29f7bb957c34 | 60 | case ARM: microUSB.printf("ARM"); break; |
psionprime | 9:29f7bb957c34 | 61 | case GCC_ARM: microUSB.printf("GCC_ARM"); break; |
psionprime | 9:29f7bb957c34 | 62 | case IAR: microUSB.printf("IAR"); break; |
psionprime | 9:29f7bb957c34 | 63 | default: microUSB.printf("UNKNOWN: %d", sys_info.compiler_id); break; |
psionprime | 9:29f7bb957c34 | 64 | } |
psionprime | 9:29f7bb957c34 | 65 | microUSB.printf("\n\tCompiler version: %d", sys_info.compiler_version); |
psionprime | 9:29f7bb957c34 | 66 | |
psionprime | 9:29f7bb957c34 | 67 | // times are sourced in uSec, converted to seconds |
psionprime | 9:29f7bb957c34 | 68 | microUSB.printf("\n\nCPU (seconds):"); |
psionprime | 9:29f7bb957c34 | 69 | microUSB.printf("\n---"); |
psionprime | 9:29f7bb957c34 | 70 | mbed_stats_cpu_get(&cpu_info); |
psionprime | 9:29f7bb957c34 | 71 | microUSB.printf("\n\tUp time sec: %0.6f", cpu_info.uptime / 1000000.0); |
psionprime | 9:29f7bb957c34 | 72 | microUSB.printf("\n\tIdle time: %0.6f", cpu_info.idle_time / 1000000.0); |
psionprime | 9:29f7bb957c34 | 73 | microUSB.printf("\n\tSleep time: %0.6f", cpu_info.sleep_time / 1000000.0); |
psionprime | 9:29f7bb957c34 | 74 | microUSB.printf("\n\tDeep sleep time: %0.6f", cpu_info.deep_sleep_time / 1000000.0); |
psionprime | 9:29f7bb957c34 | 75 | |
psionprime | 9:29f7bb957c34 | 76 | microUSB.printf("\n\nMemory:"); |
psionprime | 9:29f7bb957c34 | 77 | microUSB.printf("\n---"); |
psionprime | 9:29f7bb957c34 | 78 | mbed_stats_heap_get( &heap_info ); |
psionprime | 9:29f7bb957c34 | 79 | microUSB.printf("\n\tBytes allocated currently: %d", heap_info.current_size); |
psionprime | 9:29f7bb957c34 | 80 | microUSB.printf("\n\tMax bytes allocated at a given time: %d", heap_info.max_size); |
psionprime | 9:29f7bb957c34 | 81 | microUSB.printf("\n\tCumulative sum of bytes ever allocated: %d", heap_info.total_size); |
psionprime | 9:29f7bb957c34 | 82 | microUSB.printf("\n\tCurrent number of bytes allocated for the heap: %d", heap_info.reserved_size); |
psionprime | 9:29f7bb957c34 | 83 | microUSB.printf("\n\tCurrent number of allocations: %d", heap_info.alloc_cnt); |
psionprime | 9:29f7bb957c34 | 84 | microUSB.printf("\n\tNumber of failed allocations: %d", heap_info.alloc_fail_cnt); |
psionprime | 9:29f7bb957c34 | 85 | |
psionprime | 9:29f7bb957c34 | 86 | mbed_stats_stack_get( &stack_info[0] ); |
psionprime | 9:29f7bb957c34 | 87 | microUSB.printf("\n\nCumulative Stack:"); |
psionprime | 9:29f7bb957c34 | 88 | microUSB.printf("\n---"); |
psionprime | 9:29f7bb957c34 | 89 | microUSB.printf("\n\tMaximum number of bytes used on the stack: %d", stack_info[0].max_size); |
psionprime | 9:29f7bb957c34 | 90 | microUSB.printf("\n\tCurrent number of bytes allocated for the stack: %d", stack_info[0].reserved_size); |
psionprime | 9:29f7bb957c34 | 91 | microUSB.printf("\n\tNumber of stacks stats accumulated in the structure: %d", stack_info[0].stack_cnt); |
psionprime | 9:29f7bb957c34 | 92 | |
psionprime | 9:29f7bb957c34 | 93 | mbed_stats_stack_get_each( stack_info, MAX_THREAD_INFO ); |
psionprime | 9:29f7bb957c34 | 94 | microUSB.printf("\n\nThread Stack:"); |
psionprime | 9:29f7bb957c34 | 95 | microUSB.printf("\n---"); |
psionprime | 9:29f7bb957c34 | 96 | for(int i=0;i < MAX_THREAD_INFO; i++) { |
psionprime | 9:29f7bb957c34 | 97 | if(stack_info[i].thread_id != 0) { |
psionprime | 9:29f7bb957c34 | 98 | microUSB.printf("\n\tThread: %d", i); |
psionprime | 9:29f7bb957c34 | 99 | microUSB.printf("\n\t\tThread Id: 0x%08X", stack_info[i].thread_id); |
psionprime | 9:29f7bb957c34 | 100 | microUSB.printf("\n\t\tMaximum number of bytes used on the stack: %d", stack_info[i].max_size); |
psionprime | 9:29f7bb957c34 | 101 | microUSB.printf("\n\t\tCurrent number of bytes allocated for the stack: %d", stack_info[i].reserved_size); |
psionprime | 9:29f7bb957c34 | 102 | microUSB.printf("\n\t\tNumber of stacks stats accumulated in the structure: %d", stack_info[i].stack_cnt); |
psionprime | 9:29f7bb957c34 | 103 | microUSB.printf("\n---"); |
psionprime | 9:29f7bb957c34 | 104 | } |
psionprime | 9:29f7bb957c34 | 105 | } |
psionprime | 9:29f7bb957c34 | 106 | |
psionprime | 9:29f7bb957c34 | 107 | microUSB.printf("\n===\n\n"); |
switches | 1:6923b075c8d7 | 108 | |
switches | 0:60a522ae2e35 | 109 | } |
switches | 0:60a522ae2e35 | 110 |