Debug tools / show registers, memory and system clock data

Dependencies:   mbed CheckRTC

Target mbed board

LPC1768
LPC1114FN28
ST Nucleo L152RE
ST NUcleo F401RE
ST Nucleo F411RE

Command structure

Top

1 - goto step1 -> no connection all pins
2 - goto step2 -> connects pin_x and pin_y (not impliment yet)
t - Check and set RTC
x - Goto HW monitor
q - Return to main

>1

l - Check LED
b - Check button
s - CPU system info & clock
o - CPU clock output (Bug fix, port_mco1_mco2_set() function. Thanks Topi Makinen on April 25th, 2015)

>x(Hardware level monitor)

m - Entry Memory Mode
m>? -> Aditinal functions can see by ?
r - Entry Register Mode
r>? -> Aditinal functions can see by ?
s - System Clock -> sf, System / CPU information -> sc
q - Quit (back to called routine)
p - Entry Port Mode
p>? -> Aditinal functions can see by ?

Usage

Please modify "mon_hw_config.h" file for your purpose.
Especially LPC114FN28 has small memory, you cannot run your own program together with this program.
You don't need any additional HW. Just connect with PC via terminal software.

CAUTION

Due to several CPU's and short development time, I cannot grantee the quality level and several functions are not available yet.
If you found the bug, please let me know. Thanks in advance.

Committer:
kenjiArai
Date:
Sun Nov 02 09:28:26 2014 +0000
Revision:
2:b96103f9270e
modified all of files for pick-up common parts

Who changed what in which revision?

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