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:
Tue Oct 14 11:09:00 2014 +0000
Revision:
1:84813f6b798e
Parent:
0:d327c184e8bb
Child:
2:b96103f9270e
added mbed LPC1114FN28 and modified each module

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:d327c184e8bb 1 /*
kenjiArai 1:84813f6b798e 2 * mbed Application program / How to use "monitor_03"
kenjiArai 0:d327c184e8bb 3 *
kenjiArai 0:d327c184e8bb 4 * Copyright (c) 2014 Kenji Arai / JH1PJL
kenjiArai 0:d327c184e8bb 5 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:d327c184e8bb 6 * http://mbed.org/users/kenjiArai/
kenjiArai 0:d327c184e8bb 7 * Created: May 5th, 2014
kenjiArai 1:84813f6b798e 8 * Revised: October 14th, 2014
kenjiArai 0:d327c184e8bb 9 *
kenjiArai 0:d327c184e8bb 10 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
kenjiArai 0:d327c184e8bb 11 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
kenjiArai 0:d327c184e8bb 12 * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
kenjiArai 0:d327c184e8bb 13 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
kenjiArai 0:d327c184e8bb 14 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
kenjiArai 0:d327c184e8bb 15 */
kenjiArai 0:d327c184e8bb 16
kenjiArai 0:d327c184e8bb 17 // Include ---------------------------------------------------------------------------------------
kenjiArai 0:d327c184e8bb 18 #include "mbed.h"
kenjiArai 1:84813f6b798e 19 #if !defined(TARGET_LPC1114)
kenjiArai 0:d327c184e8bb 20 #include "rtos.h"
kenjiArai 1:84813f6b798e 21 #endif
kenjiArai 0:d327c184e8bb 22
kenjiArai 0:d327c184e8bb 23 // Definition ------------------------------------------------------------------------------------
kenjiArai 0:d327c184e8bb 24 #define USE_COM // use Communication with PC(UART)
kenjiArai 0:d327c184e8bb 25
kenjiArai 0:d327c184e8bb 26 #ifdef USE_COM
kenjiArai 0:d327c184e8bb 27 #define BAUD(x) pc.baud(x)
kenjiArai 0:d327c184e8bb 28 #define GETC(x) pc.getc(x)
kenjiArai 0:d327c184e8bb 29 #define PUTC(x) pc.putc(x)
kenjiArai 0:d327c184e8bb 30 #define PRINTF(...) pc.printf(__VA_ARGS__)
kenjiArai 0:d327c184e8bb 31 #define READABLE(x) pc.readable(x)
kenjiArai 0:d327c184e8bb 32 #else
kenjiArai 0:d327c184e8bb 33 #define BAUD(x) {;}
kenjiArai 0:d327c184e8bb 34 #define GETC(x) {;}
kenjiArai 0:d327c184e8bb 35 #define PUTC(x) {;}
kenjiArai 0:d327c184e8bb 36 #define PRINTF(...) {;}
kenjiArai 0:d327c184e8bb 37 #define READABLE(x) {;}
kenjiArai 0:d327c184e8bb 38 #endif
kenjiArai 0:d327c184e8bb 39
kenjiArai 0:d327c184e8bb 40 // Object ----------------------------------------------------------------------------------------
kenjiArai 0:d327c184e8bb 41 DigitalOut myled(LED1);
kenjiArai 0:d327c184e8bb 42 #if defined(TARGET_NUCLEO_L152RE) || defined(TARGET_NUCLEO_F401RE)
kenjiArai 0:d327c184e8bb 43 DigitalIn usr_sw(PC_13);
kenjiArai 0:d327c184e8bb 44 #endif
kenjiArai 0:d327c184e8bb 45 Serial pc(USBTX, USBRX);
kenjiArai 0:d327c184e8bb 46
kenjiArai 0:d327c184e8bb 47 // RAM -------------------------------------------------------------------------------------------
kenjiArai 0:d327c184e8bb 48 uint8_t print_control_flag = 0;
kenjiArai 0:d327c184e8bb 49 uint32_t count;
kenjiArai 0:d327c184e8bb 50
kenjiArai 0:d327c184e8bb 51 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 0:d327c184e8bb 52
kenjiArai 0:d327c184e8bb 53 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 0:d327c184e8bb 54
kenjiArai 0:d327c184e8bb 55 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 0:d327c184e8bb 56 extern int mon(void);
kenjiArai 0:d327c184e8bb 57 extern void put_rn ( void );
kenjiArai 0:d327c184e8bb 58
kenjiArai 0:d327c184e8bb 59 //-------------------------------------------------------------------------------------------------
kenjiArai 0:d327c184e8bb 60 // Control Program
kenjiArai 0:d327c184e8bb 61 //-------------------------------------------------------------------------------------------------
kenjiArai 1:84813f6b798e 62 #if defined(TARGET_NUCLEO_L152RE)||defined(TARGET_NUCLEO_F401RE)||defined(TARGET_LPC1768)
kenjiArai 1:84813f6b798e 63
kenjiArai 0:d327c184e8bb 64 void data_output(void)
kenjiArai 0:d327c184e8bb 65 {
kenjiArai 0:d327c184e8bb 66 PRINTF( "Count: %d", count);
kenjiArai 0:d327c184e8bb 67 put_rn();
kenjiArai 0:d327c184e8bb 68 }
kenjiArai 0:d327c184e8bb 69
kenjiArai 0:d327c184e8bb 70 void led1_thread(void const *args)
kenjiArai 0:d327c184e8bb 71 {
kenjiArai 0:d327c184e8bb 72 while (true) {
kenjiArai 0:d327c184e8bb 73 myled = !myled;
kenjiArai 0:d327c184e8bb 74 count++;
kenjiArai 0:d327c184e8bb 75 if (print_control_flag) {
kenjiArai 0:d327c184e8bb 76 data_output();
kenjiArai 0:d327c184e8bb 77 }
kenjiArai 0:d327c184e8bb 78 Thread::wait(1000);
kenjiArai 0:d327c184e8bb 79 }
kenjiArai 0:d327c184e8bb 80 }
kenjiArai 0:d327c184e8bb 81
kenjiArai 0:d327c184e8bb 82 int main()
kenjiArai 0:d327c184e8bb 83 {
kenjiArai 0:d327c184e8bb 84 Thread thread(led1_thread);
kenjiArai 0:d327c184e8bb 85
kenjiArai 0:d327c184e8bb 86 while (true) {
kenjiArai 0:d327c184e8bb 87 mon();
kenjiArai 0:d327c184e8bb 88 }
kenjiArai 0:d327c184e8bb 89 }
kenjiArai 1:84813f6b798e 90
kenjiArai 1:84813f6b798e 91 #endif // defined(TARGET_NUCLEO_L152RE)||defined(TARGET_NUCLEO_F401RE)||defined(TARGET_LPC1768)
kenjiArai 1:84813f6b798e 92
kenjiArai 1:84813f6b798e 93 #if defined(TARGET_LPC1114)
kenjiArai 1:84813f6b798e 94 // Only for LPC1114
kenjiArai 1:84813f6b798e 95 int main()
kenjiArai 1:84813f6b798e 96 {
kenjiArai 1:84813f6b798e 97 while (true) {
kenjiArai 1:84813f6b798e 98 mon();
kenjiArai 1:84813f6b798e 99 }
kenjiArai 1:84813f6b798e 100 }
kenjiArai 1:84813f6b798e 101 #endif // defined(TARGET_LPC1114)