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 Apr 26 09:31:58 2015 +0000
Revision:
4:02980a730cfb
Parent:
2:b96103f9270e
Set output port PA8 & PC9 high speed mode

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_LPC1114)
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
kenjiArai 2:b96103f9270e 28 // Definition ------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 29
kenjiArai 2:b96103f9270e 30 // RAM -------------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 31
kenjiArai 2:b96103f9270e 32 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 33
kenjiArai 2:b96103f9270e 34 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 35 extern void cpu_inf (void);
kenjiArai 2:b96103f9270e 36
kenjiArai 2:b96103f9270e 37 //-------------------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 38 // Control Program
kenjiArai 2:b96103f9270e 39 //-------------------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 40 // Help Massage
kenjiArai 2:b96103f9270e 41 void msg_hlp (void)
kenjiArai 2:b96103f9270e 42 {
kenjiArai 2:b96103f9270e 43 PRINTF(mon_msg);
kenjiArai 2:b96103f9270e 44 put_rn();
kenjiArai 2:b96103f9270e 45 PRINTF("1 - goto step1 -> no connection all pins");
kenjiArai 2:b96103f9270e 46 put_rn();
kenjiArai 2:b96103f9270e 47 PRINTF("2 - goto step2 -> connects pin_x and pin_y");
kenjiArai 2:b96103f9270e 48 put_rn();
kenjiArai 2:b96103f9270e 49 PRINTF("x - Goto HW monitor");
kenjiArai 2:b96103f9270e 50 put_rn();
kenjiArai 2:b96103f9270e 51 PRINTF("q - Return to main");
kenjiArai 2:b96103f9270e 52 put_rn();
kenjiArai 2:b96103f9270e 53 }
kenjiArai 2:b96103f9270e 54
kenjiArai 2:b96103f9270e 55 // ---------- Program starts here! ---------------------------------------------------------------
kenjiArai 2:b96103f9270e 56 void debug_interface(void)
kenjiArai 2:b96103f9270e 57 {
kenjiArai 2:b96103f9270e 58 char *ptr;
kenjiArai 2:b96103f9270e 59 uint8_t quitflag;
kenjiArai 2:b96103f9270e 60
kenjiArai 2:b96103f9270e 61 BAUD(BAUD_RATE);
kenjiArai 2:b96103f9270e 62 put_rn();
kenjiArai 2:b96103f9270e 63 put_rn();
kenjiArai 2:b96103f9270e 64 PRINTF("%s [Help:'?' key]", mon_msg);
kenjiArai 2:b96103f9270e 65 put_rn();
kenjiArai 2:b96103f9270e 66 for (;;) {
kenjiArai 2:b96103f9270e 67 put_r();
kenjiArai 2:b96103f9270e 68 PUTC('>');
kenjiArai 2:b96103f9270e 69 ptr = linebuf;
kenjiArai 2:b96103f9270e 70 get_line(ptr, sizeof(linebuf));
kenjiArai 2:b96103f9270e 71 switch (*ptr++) {
kenjiArai 2:b96103f9270e 72 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 73 // Debug Step1
kenjiArai 2:b96103f9270e 74 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 75 case '1' :
kenjiArai 2:b96103f9270e 76 put_r();
kenjiArai 2:b96103f9270e 77 PRINTF("Enter Step1: no connection all pins");
kenjiArai 2:b96103f9270e 78 put_rn();
kenjiArai 2:b96103f9270e 79 quitflag = 0;
kenjiArai 2:b96103f9270e 80 for (; quitflag != 0xff;) {
kenjiArai 2:b96103f9270e 81 PRINTF("1>");
kenjiArai 2:b96103f9270e 82 ptr = linebuf;
kenjiArai 2:b96103f9270e 83 get_line(ptr, buf_size);
kenjiArai 2:b96103f9270e 84 put_r();
kenjiArai 2:b96103f9270e 85 switch(*ptr++) {
kenjiArai 2:b96103f9270e 86 case 's' :
kenjiArai 2:b96103f9270e 87 PRINTF("----- CPU CLOCK Information -----");
kenjiArai 2:b96103f9270e 88 put_rn();
kenjiArai 2:b96103f9270e 89 get_freq(1);
kenjiArai 2:b96103f9270e 90 PRINTF("----- CPU TYPE Information ------");
kenjiArai 2:b96103f9270e 91 put_rn();
kenjiArai 2:b96103f9270e 92 cpu_inf();
kenjiArai 2:b96103f9270e 93 break;
kenjiArai 2:b96103f9270e 94 case '?' :
kenjiArai 2:b96103f9270e 95 PRINTF("s - CPU system info & clock");
kenjiArai 2:b96103f9270e 96 put_rn();
kenjiArai 2:b96103f9270e 97 PRINTF("q - Return to all mode");
kenjiArai 2:b96103f9270e 98 put_rn();
kenjiArai 2:b96103f9270e 99 PRINTF("? - You know this");
kenjiArai 2:b96103f9270e 100 put_rn();
kenjiArai 2:b96103f9270e 101 break;
kenjiArai 2:b96103f9270e 102 case 'q' : // quit
kenjiArai 2:b96103f9270e 103 PRINTF("Back to all mode");
kenjiArai 2:b96103f9270e 104 quitflag = 0xff;
kenjiArai 2:b96103f9270e 105 break;
kenjiArai 2:b96103f9270e 106 default:
kenjiArai 2:b96103f9270e 107 PUTC('?');
kenjiArai 2:b96103f9270e 108 put_rn();
kenjiArai 2:b96103f9270e 109 }
kenjiArai 2:b96103f9270e 110 }
kenjiArai 2:b96103f9270e 111 put_rn();
kenjiArai 2:b96103f9270e 112 break;
kenjiArai 2:b96103f9270e 113 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 114 // help
kenjiArai 2:b96103f9270e 115 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 116 case '?' :
kenjiArai 2:b96103f9270e 117 put_r();
kenjiArai 2:b96103f9270e 118 msg_hlp();
kenjiArai 2:b96103f9270e 119 break;
kenjiArai 2:b96103f9270e 120 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 121 // Go to special command
kenjiArai 2:b96103f9270e 122 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 123 case 'x' :
kenjiArai 2:b96103f9270e 124 mon_hw();
kenjiArai 2:b96103f9270e 125 PRINTF("->Came back monitor\r\n");
kenjiArai 2:b96103f9270e 126 break;
kenjiArai 2:b96103f9270e 127 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 128 // Go back to main()
kenjiArai 2:b96103f9270e 129 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 130 case 'q' : // Quit
kenjiArai 2:b96103f9270e 131 PRINTF("\rReturn to main\r\n");
kenjiArai 2:b96103f9270e 132 //PRINTF("cannot control anymore from here\r\n");
kenjiArai 2:b96103f9270e 133 return;
kenjiArai 2:b96103f9270e 134 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 135 // no support
kenjiArai 2:b96103f9270e 136 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 137 default:
kenjiArai 2:b96103f9270e 138 put_r();
kenjiArai 2:b96103f9270e 139 PUTC('?');
kenjiArai 2:b96103f9270e 140 put_rn();
kenjiArai 2:b96103f9270e 141 break;
kenjiArai 2:b96103f9270e 142 }
kenjiArai 2:b96103f9270e 143 }
kenjiArai 2:b96103f9270e 144 }
kenjiArai 2:b96103f9270e 145
kenjiArai 2:b96103f9270e 146 #endif // defined(TARGET_LPC1114)