Monitor program only for mbed GR-PEACH
debug_tools/debug_lpc1768.cpp@4:76b3113c79ff, 2014-12-14 (annotated)
- Committer:
- kenjiArai
- Date:
- Sun Dec 14 09:17:01 2014 +0000
- Revision:
- 4:76b3113c79ff
Check rtos functions on GR-PEACH. Does NOT work on GR-PEACH but does work on LPC1768, F401RE and L152RE.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 4:76b3113c79ff | 1 | /* |
kenjiArai | 4:76b3113c79ff | 2 | * mbed Application program |
kenjiArai | 4:76b3113c79ff | 3 | * |
kenjiArai | 4:76b3113c79ff | 4 | * Copyright (c) 2010-2014 Kenji Arai / JH1PJL |
kenjiArai | 4:76b3113c79ff | 5 | * http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 4:76b3113c79ff | 6 | * http://mbed.org/users/kenjiArai/ |
kenjiArai | 4:76b3113c79ff | 7 | * Created: May 15th, 2010 |
kenjiArai | 4:76b3113c79ff | 8 | * Spareted: June 25th, 2014 mon() & mon_hw() |
kenjiArai | 4:76b3113c79ff | 9 | * Ported: September 22nd, 2014 from L152RE, LP1114 |
kenjiArai | 4:76b3113c79ff | 10 | * changed: October 15th, 2014 mon.cpp to debug_xxx.cpp |
kenjiArai | 4:76b3113c79ff | 11 | * Revised: Nobember 2nd, 2014 |
kenjiArai | 4:76b3113c79ff | 12 | * |
kenjiArai | 4:76b3113c79ff | 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
kenjiArai | 4:76b3113c79ff | 14 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE |
kenjiArai | 4:76b3113c79ff | 15 | * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
kenjiArai | 4:76b3113c79ff | 16 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
kenjiArai | 4:76b3113c79ff | 17 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
kenjiArai | 4:76b3113c79ff | 18 | */ |
kenjiArai | 4:76b3113c79ff | 19 | |
kenjiArai | 4:76b3113c79ff | 20 | #if defined(TARGET_LPC1768) |
kenjiArai | 4:76b3113c79ff | 21 | |
kenjiArai | 4:76b3113c79ff | 22 | // Include --------------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 23 | #include "mbed.h" |
kenjiArai | 4:76b3113c79ff | 24 | #include "debug_common.h" |
kenjiArai | 4:76b3113c79ff | 25 | |
kenjiArai | 4:76b3113c79ff | 26 | // Object ---------------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 27 | DigitalOut myled1(LED1); |
kenjiArai | 4:76b3113c79ff | 28 | DigitalOut myled2(LED2); |
kenjiArai | 4:76b3113c79ff | 29 | DigitalOut myled3(LED3); |
kenjiArai | 4:76b3113c79ff | 30 | DigitalOut myled4(LED4); |
kenjiArai | 4:76b3113c79ff | 31 | |
kenjiArai | 4:76b3113c79ff | 32 | // Definition ------------------------------------------------------------------------------------ |
kenjiArai | 4:76b3113c79ff | 33 | |
kenjiArai | 4:76b3113c79ff | 34 | // RAM ------------------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 35 | |
kenjiArai | 4:76b3113c79ff | 36 | // ROM / Constant data --------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 37 | |
kenjiArai | 4:76b3113c79ff | 38 | // Function prototypes --------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 39 | extern void cpu_inf (void); |
kenjiArai | 4:76b3113c79ff | 40 | |
kenjiArai | 4:76b3113c79ff | 41 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 42 | // Control Program |
kenjiArai | 4:76b3113c79ff | 43 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 44 | // Help Massage |
kenjiArai | 4:76b3113c79ff | 45 | void msg_hlp (void) |
kenjiArai | 4:76b3113c79ff | 46 | { |
kenjiArai | 4:76b3113c79ff | 47 | PRINTF(mon_msg); |
kenjiArai | 4:76b3113c79ff | 48 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 49 | PRINTF("1 - goto step1 -> no connection all pins"); |
kenjiArai | 4:76b3113c79ff | 50 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 51 | PRINTF("2 - goto step2 -> connects pin_x and pin_y"); |
kenjiArai | 4:76b3113c79ff | 52 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 53 | PRINTF("t - Check and set RTC"); |
kenjiArai | 4:76b3113c79ff | 54 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 55 | PRINTF("x - Goto HW monitor"); |
kenjiArai | 4:76b3113c79ff | 56 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 57 | PRINTF("q - Return to main"); |
kenjiArai | 4:76b3113c79ff | 58 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 59 | } |
kenjiArai | 4:76b3113c79ff | 60 | |
kenjiArai | 4:76b3113c79ff | 61 | // ---------- Program starts here! --------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 62 | void debug_interface(void) |
kenjiArai | 4:76b3113c79ff | 63 | { |
kenjiArai | 4:76b3113c79ff | 64 | char c; |
kenjiArai | 4:76b3113c79ff | 65 | char *ptr; |
kenjiArai | 4:76b3113c79ff | 66 | uint8_t quitflag; |
kenjiArai | 4:76b3113c79ff | 67 | |
kenjiArai | 4:76b3113c79ff | 68 | BAUD(BAUD_RATE); |
kenjiArai | 4:76b3113c79ff | 69 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 70 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 71 | PRINTF("%s [Help:'?' key]", mon_msg); |
kenjiArai | 4:76b3113c79ff | 72 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 73 | get_freq(0); |
kenjiArai | 4:76b3113c79ff | 74 | for (;;) { |
kenjiArai | 4:76b3113c79ff | 75 | put_r(); |
kenjiArai | 4:76b3113c79ff | 76 | PUTC('>'); |
kenjiArai | 4:76b3113c79ff | 77 | ptr = linebuf; |
kenjiArai | 4:76b3113c79ff | 78 | get_line(ptr, sizeof(linebuf)); |
kenjiArai | 4:76b3113c79ff | 79 | switch (*ptr++) { |
kenjiArai | 4:76b3113c79ff | 80 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 81 | // Debug Step1 |
kenjiArai | 4:76b3113c79ff | 82 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 83 | case '1' : |
kenjiArai | 4:76b3113c79ff | 84 | put_r(); |
kenjiArai | 4:76b3113c79ff | 85 | #if !defined(RTOS_H) |
kenjiArai | 4:76b3113c79ff | 86 | PRINTF("Enter Step1: no connection all pins"); |
kenjiArai | 4:76b3113c79ff | 87 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 88 | quitflag = 0; |
kenjiArai | 4:76b3113c79ff | 89 | for (; quitflag != 0xff;) { |
kenjiArai | 4:76b3113c79ff | 90 | PRINTF("1>"); |
kenjiArai | 4:76b3113c79ff | 91 | ptr = linebuf; |
kenjiArai | 4:76b3113c79ff | 92 | get_line(ptr, buf_size); |
kenjiArai | 4:76b3113c79ff | 93 | put_r(); |
kenjiArai | 4:76b3113c79ff | 94 | switch(*ptr++) { |
kenjiArai | 4:76b3113c79ff | 95 | case 'l' : |
kenjiArai | 4:76b3113c79ff | 96 | myled1 = 1; |
kenjiArai | 4:76b3113c79ff | 97 | wait(0.1); |
kenjiArai | 4:76b3113c79ff | 98 | myled1 = 0; |
kenjiArai | 4:76b3113c79ff | 99 | myled2 = 1; |
kenjiArai | 4:76b3113c79ff | 100 | wait(0.1); |
kenjiArai | 4:76b3113c79ff | 101 | myled2 = 0; |
kenjiArai | 4:76b3113c79ff | 102 | myled3 = 1; |
kenjiArai | 4:76b3113c79ff | 103 | wait(0.1); |
kenjiArai | 4:76b3113c79ff | 104 | myled3 = 0; |
kenjiArai | 4:76b3113c79ff | 105 | myled4 = 1; |
kenjiArai | 4:76b3113c79ff | 106 | wait(0.1); |
kenjiArai | 4:76b3113c79ff | 107 | myled4 = 0; |
kenjiArai | 4:76b3113c79ff | 108 | myled1 = 1; |
kenjiArai | 4:76b3113c79ff | 109 | wait(0.2); |
kenjiArai | 4:76b3113c79ff | 110 | myled2 = 1; |
kenjiArai | 4:76b3113c79ff | 111 | wait(0.2); |
kenjiArai | 4:76b3113c79ff | 112 | myled3 = 1; |
kenjiArai | 4:76b3113c79ff | 113 | wait(0.2); |
kenjiArai | 4:76b3113c79ff | 114 | myled4 = 1; |
kenjiArai | 4:76b3113c79ff | 115 | PRINTF("Is LED on? -> enter y/n"); |
kenjiArai | 4:76b3113c79ff | 116 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 117 | c = GETC(); |
kenjiArai | 4:76b3113c79ff | 118 | if (c == 'y') { |
kenjiArai | 4:76b3113c79ff | 119 | PRINTF("Okay"); |
kenjiArai | 4:76b3113c79ff | 120 | } else { |
kenjiArai | 4:76b3113c79ff | 121 | PRINTF("Are you sure? Check again!"); |
kenjiArai | 4:76b3113c79ff | 122 | for (c = 0; c < 10; c++) { |
kenjiArai | 4:76b3113c79ff | 123 | myled1 = !myled1; |
kenjiArai | 4:76b3113c79ff | 124 | wait(0.1); |
kenjiArai | 4:76b3113c79ff | 125 | myled2 = !myled2; |
kenjiArai | 4:76b3113c79ff | 126 | wait(0.1); |
kenjiArai | 4:76b3113c79ff | 127 | myled3 = !myled3; |
kenjiArai | 4:76b3113c79ff | 128 | wait(0.1); |
kenjiArai | 4:76b3113c79ff | 129 | myled4 = !myled4; |
kenjiArai | 4:76b3113c79ff | 130 | wait(0.1); |
kenjiArai | 4:76b3113c79ff | 131 | } |
kenjiArai | 4:76b3113c79ff | 132 | myled1 = 1; |
kenjiArai | 4:76b3113c79ff | 133 | myled2 = 1; |
kenjiArai | 4:76b3113c79ff | 134 | myled3 = 1; |
kenjiArai | 4:76b3113c79ff | 135 | myled4 = 1; |
kenjiArai | 4:76b3113c79ff | 136 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 137 | PRINTF("Is LED on? -> enter y/n"); |
kenjiArai | 4:76b3113c79ff | 138 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 139 | c = GETC(); |
kenjiArai | 4:76b3113c79ff | 140 | if (c == 'y') { |
kenjiArai | 4:76b3113c79ff | 141 | PRINTF("Looks okay"); |
kenjiArai | 4:76b3113c79ff | 142 | } else { |
kenjiArai | 4:76b3113c79ff | 143 | PRINTF("Please check LED line"); |
kenjiArai | 4:76b3113c79ff | 144 | } |
kenjiArai | 4:76b3113c79ff | 145 | } |
kenjiArai | 4:76b3113c79ff | 146 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 147 | myled1 = 0; |
kenjiArai | 4:76b3113c79ff | 148 | myled2 = 0; |
kenjiArai | 4:76b3113c79ff | 149 | myled3 = 0; |
kenjiArai | 4:76b3113c79ff | 150 | myled4 = 0; |
kenjiArai | 4:76b3113c79ff | 151 | #elif |
kenjiArai | 4:76b3113c79ff | 152 | PRINTF("Not implement with RTOS"); |
kenjiArai | 4:76b3113c79ff | 153 | #endif |
kenjiArai | 4:76b3113c79ff | 154 | break; |
kenjiArai | 4:76b3113c79ff | 155 | case 's' : |
kenjiArai | 4:76b3113c79ff | 156 | PRINTF("----- CPU CLOCK Information -----"); |
kenjiArai | 4:76b3113c79ff | 157 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 158 | get_freq(1); |
kenjiArai | 4:76b3113c79ff | 159 | PRINTF("----- CPU TYPE Information ------"); |
kenjiArai | 4:76b3113c79ff | 160 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 161 | cpu_inf(); |
kenjiArai | 4:76b3113c79ff | 162 | break; |
kenjiArai | 4:76b3113c79ff | 163 | case '?' : |
kenjiArai | 4:76b3113c79ff | 164 | PRINTF("l - Check LED"); |
kenjiArai | 4:76b3113c79ff | 165 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 166 | PRINTF("s - CPU system info & clock"); |
kenjiArai | 4:76b3113c79ff | 167 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 168 | PRINTF("q - Return to all mode"); |
kenjiArai | 4:76b3113c79ff | 169 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 170 | PRINTF("? - You know this"); |
kenjiArai | 4:76b3113c79ff | 171 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 172 | break; |
kenjiArai | 4:76b3113c79ff | 173 | case 'q' : // quit |
kenjiArai | 4:76b3113c79ff | 174 | PRINTF("Back to all mode"); |
kenjiArai | 4:76b3113c79ff | 175 | quitflag = 0xff; |
kenjiArai | 4:76b3113c79ff | 176 | break; |
kenjiArai | 4:76b3113c79ff | 177 | default: |
kenjiArai | 4:76b3113c79ff | 178 | PUTC('?'); |
kenjiArai | 4:76b3113c79ff | 179 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 180 | } |
kenjiArai | 4:76b3113c79ff | 181 | } |
kenjiArai | 4:76b3113c79ff | 182 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 183 | break; |
kenjiArai | 4:76b3113c79ff | 184 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 185 | // check and set RTC |
kenjiArai | 4:76b3113c79ff | 186 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 187 | case 't' : |
kenjiArai | 4:76b3113c79ff | 188 | put_r(); |
kenjiArai | 4:76b3113c79ff | 189 | chk_and_set_time(ptr); |
kenjiArai | 4:76b3113c79ff | 190 | break; |
kenjiArai | 4:76b3113c79ff | 191 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 192 | // help |
kenjiArai | 4:76b3113c79ff | 193 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 194 | case '?' : |
kenjiArai | 4:76b3113c79ff | 195 | put_r(); |
kenjiArai | 4:76b3113c79ff | 196 | msg_hlp(); |
kenjiArai | 4:76b3113c79ff | 197 | break; |
kenjiArai | 4:76b3113c79ff | 198 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 199 | // Go to special command |
kenjiArai | 4:76b3113c79ff | 200 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 201 | case 'x' : |
kenjiArai | 4:76b3113c79ff | 202 | mon_hw(); |
kenjiArai | 4:76b3113c79ff | 203 | PRINTF("->Came back monitor\r\n"); |
kenjiArai | 4:76b3113c79ff | 204 | break; |
kenjiArai | 4:76b3113c79ff | 205 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 206 | // Go back to main() |
kenjiArai | 4:76b3113c79ff | 207 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 208 | case 'q' : // Quit |
kenjiArai | 4:76b3113c79ff | 209 | PRINTF("\rReturn to main\r\n"); |
kenjiArai | 4:76b3113c79ff | 210 | //PRINTF("cannot control anymore from here\r\n"); |
kenjiArai | 4:76b3113c79ff | 211 | return; |
kenjiArai | 4:76b3113c79ff | 212 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 213 | // no support |
kenjiArai | 4:76b3113c79ff | 214 | //--------------------------------------------------------------------------------- |
kenjiArai | 4:76b3113c79ff | 215 | default: |
kenjiArai | 4:76b3113c79ff | 216 | put_r(); |
kenjiArai | 4:76b3113c79ff | 217 | PUTC('?'); |
kenjiArai | 4:76b3113c79ff | 218 | put_rn(); |
kenjiArai | 4:76b3113c79ff | 219 | break; |
kenjiArai | 4:76b3113c79ff | 220 | } |
kenjiArai | 4:76b3113c79ff | 221 | } |
kenjiArai | 4:76b3113c79ff | 222 | } |
kenjiArai | 4:76b3113c79ff | 223 | |
kenjiArai | 4:76b3113c79ff | 224 | #endif // defined(TARGET_LPC1768) |