Monitor program only for mbed GR-PEACH

Dependencies:  

Revision:
5:1d465d550109
Parent:
4:76b3113c79ff
--- a/debug_tools/mon_hw_LPC1114.cpp	Sun Dec 14 09:17:01 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1493 +0,0 @@
-/*
- * mbed Application program for the mbed LPC1114FN28
- * Monitor program Ver.3 for only for LPC1114FN28
- *
- *  Copyright (c) 2010-2014 Kenji Arai / JH1PJL
- *  http://www.page.sannet.ne.jp/kenjia/index.html
- *  http://mbed.org/users/kenjiArai/
- *      Created:  May       15th, 2010
- *          release as "monitor_01" http://mbed.org/users/kenjiArai/code/monitor_01/
- *      Spareted: June      25th, 2014      mon() & mon_hw()
- *      Revised:  Nobember   2nd, 2014
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
- * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#if defined(TARGET_LPC1114)
-
-//  Include ---------------------------------------------------------------------------------------
-#include "mbed.h"
-#include "mon_hw_config.h"
-#include "mon_hw_common.h"
-
-//  Object ----------------------------------------------------------------------------------------
-
-//  Definition ------------------------------------------------------------------------------------
-// Define clocks
-#define __XTAL              (12000000UL)    // Oscillator frequency
-#define __SYS_OSC_CLK       (    __XTAL)    // Main oscillator frequency
-#define __IRC_OSC_CLK       (12000000UL)    // Internal RC oscillator frequency
-
-//  RAM -------------------------------------------------------------------------------------------
-uint32_t SystemFrequency;
-
-//  ROM / Constant data ---------------------------------------------------------------------------
-#if USE_MEM
-//  Memory range data
-const uint32_t mem_range[][2] = {          // Memory access range
-    { 0x00000000, 0x00007fff },            // On-chip non-volatile memory     //32KB Flash memory
-    { 0x10000000, 0x10000fff },            // On-chip SRAM                    //4KB local RAM
-    { 0x1fff0000, 0x1fff3fff },            // Boot ROM                        //16KB Boot ROM
-    { 0x40000000, 0x4007ffff },            // IO area
-    { 0x50000000, 0x501fffff }             // IO area
-};
-#endif  // USE_MEM
-
-char *const mon_msg = "HW monitor only for mbed LPC1114FN28 created on "__DATE__","__TIME__"";
-
-char *const xmsg0 = "Not implimented yet";
-
-char *const hmsg0 = "m  - Entry Memory Mode";
-char *const hmsg1 = "m>? -> Help ";
-char *const hmsg2 = "r  - Show PORT,I2C,SPI,UART & other Reg.";
-char *const hmsg3 = "r>? -> Help";
-char *const hmsg4 = "sf - System Clock";
-char *const hmsg5 = "sc - System / CPU information";
-char *const hmsg6 = "x  - Special command for Debug";
-char *const hmsg7 = "q  - Quit (back to called routine)";
-
-#if (USE_PORT==0)||(USE_UART==0)||(USE_SPI==0)||(USE_I2C==0)
-char *const io_port_name0 = "PIO0_";
-char *const io_port_name1 = "PIO1_";
-char *const iomsg0 = "Func->select ";
-char *const iomsg1 = "IO";
-char *const iomsg2 = "Reserved";
-char *const iomsg30 = "B0_MAT";
-char *const iomsg31 = "B1_MAT";
-char *const iomsg4 = "Std/F-md I2C";
-char *const iomsg5 = "func. R";
-char *const iomsg6 = "D-Mode";
-char *const iomsg7 = "A-Mode";
-#endif
-
-//  Calculate CPU System Clock Frequency /refrence: system_LPCxx.c
-char *const fmsg0 = "Internal RC Oscillator";
-char *const fmsg1 = "Xtal Osc Clock";
-char *const fmsg2 = "Watch dog Osc Clock";
-char *const fmsg3 = "with PLL";
-char *const fmsg4 = "System Clock =";
-char *const fmsg5 = "PLL Post divider ratio =";
-char *const fmsg6 = "feedback devider =";
-char *const fmsg7 = "NO Clock ?!";
-
-#if (USE_UART==1) || (USE_SPI==1) || (USE_I2C == 1)
-char *const imsg2 = "-->Control Reg.";
-char *const imsg3 = "-->Status Reg.";
-char *const imsg4 = "-->Data Reg.";
-char *const imsg5 = "-->Clock control Reg.";
-#endif
-
-//  Function prototypes ---------------------------------------------------------------------------
-
-//-------------------------------------------------------------------------------------------------
-//  Control Program
-//-------------------------------------------------------------------------------------------------
-// No function
-void not_yet_impliment( void )
-{
-    PRINTF(xmsg0);
-    put_rn();
-}
-
-// No function
-#if (USE_MEM==0)||(USE_PORT==0)||(USE_UART==0)||(USE_SPI==0)||(USE_I2C==0)||(USE_SYS==0)
-void not_select( void )
-{
-    PRINTF("Not select the function (refer mon_hw_config.h)");
-    put_rn();
-}
-#endif
-
-//  Help Massage
-void msg_hlp_hw (void)
-{
-    PRINTF(mon_msg);
-    put_rn();
-    PRINTF(hmsg0);
-    put_rn();
-    PRINTF(hmsg1);
-    put_rn();
-    PRINTF(hmsg2);
-    put_rn();
-    PRINTF(hmsg3);
-    put_rn();
-    PRINTF(hmsg4);
-    put_rn();
-    PRINTF(hmsg5);
-    put_rn();
-    PRINTF(hmsg6);
-    put_rn();
-    PRINTF(hmsg7);
-    put_rn();
-}
-
-#if USE_MEM
-char *const rmsg0 = "FLASH     ";
-char *const rmsg1 = "SRAM      ";
-char *const rmsg2 = "Boot ROM  ";
-char *const rmsg3 = "IO Area0  ";
-char *const rmsg4 = "IO Area1  ";
-
-#include "mon_hw_mem.h"
-#endif   // USE_MEM
-
-//  Show 16bit register contents
-void reg_print(uint16_t size, uint16_t reg)
-{
-    uint16_t i, j, k, n;
-
-    if (size == 8) {
-        PRINTF(" 7, 6, 5, 4, 3, 2, 1, 0");
-        put_rn();
-        i = 8;
-        n = 0x80;
-    } else if (size == 16) {
-        PRINTF( "15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0" );
-        put_rn();
-        i = 16;
-        n = 0x8000;
-    } else {
-        PRINTF("0x%08x", reg);
-        return;
-    }
-    PUTC(' ');
-    for (; i>0; i--) {
-        k = n >> (size-i);
-        j = reg & k;
-        if (j) {
-            PUTC('1');
-        } else {
-            PUTC('0');
-        }
-        PUTC(' ');
-        PUTC(' ');
-    }
-    PRINTF("  (0x%04x)", reg);
-}
-
-#if USE_PORT
-void io_mode(uint32_t reg)
-{
-    PRINTF("MODE->");
-    switch (reg) {
-        case 0:
-            PRINTF("Inactive");
-            break;
-        case 1:
-            PRINTF("P-DWN");
-            break;
-        case 2:
-            PRINTF("P-UP");
-            break;
-        case 3:
-            PRINTF("Repeater");
-            break;
-    }
-}
-
-void io_hys(uint32_t reg)
-{
-    PRINTF("HIS->");
-    switch (reg) {
-        case 0:
-            PRINTF("Dis");
-            break;
-        case 1:
-            PRINTF("Ena");
-            break;
-    }
-}
-
-void io_od(uint32_t reg)
-{
-    PRINTF("OD->");
-    switch (reg) {
-        case 0:
-            PRINTF("no OD");
-            break;
-        case 1:
-            PRINTF("OD");
-            break;
-    }
-}
-
-void io_mode_hys_od(uint32_t reg)
-{
-    io_mode ((reg >>  3) & 0x3);
-    put_lin();
-    io_hys (( reg >>  5) & 0x1);
-    put_lin();
-    io_od (( reg >> 10) & 0x1);
-}
-
-// I/O Config IO0_x
-void io_config0(void)
-{
-    uint32_t r0;
-
-    // P0_0
-    r0 = LPC_IOCON->RESET_PIO0_0;
-    PRINTF("RESET_%s0(dp23)", io_port_name0);
-    put_spc(1);
-    reg_print( SIZE_X, r0 );
-    put_spc(2);
-    PRINTF( iomsg0 );
-    if ((r0 & 0x7) == 0) {
-        PRINTF("RESET");
-    } else {
-        PRINTF( iomsg1 );
-    }
-    put_lin();
-    io_mode_hys_od( r0 );
-    put_rn();
-    // P0_1
-    r0 = LPC_IOCON->PIO0_1;
-    PRINTF("%s1(dp24)", io_port_name0);
-    put_spc(3);
-    reg_print( SIZE_X, r0 );
-    put_spc(2);
-    PRINTF( iomsg0 );
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("CLKOUT");
-            break;
-        case 2:
-            PRINTF("32%s2", iomsg30);
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P0_2
-    r0 = LPC_IOCON->PIO0_2;
-    PRINTF("%s2(dp25)",io_port_name0);
-    put_spc(3);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("SSEL0");
-            break;
-        case 2:
-            PRINTF("16B0_CAP0");
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P0_3
-    r0 = LPC_IOCON->PIO0_3;
-    PRINTF("%s3(dp26)",io_port_name0);
-    put_spc(3);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P0_4
-    r0 = LPC_IOCON->PIO0_4;
-    PRINTF("%s4(dp27)",io_port_name0);
-    put_spc(3);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("SCL");
-            break;
-    }
-    put_lin();
-    switch (( r0 >> 8 ) & 0x3) {
-        case 0:
-            PRINTF(iomsg4);
-            break;
-        case 1:
-            PRINTF(iomsg1);
-            break;
-        case 2:
-            PRINTF("Fast md");
-            break;
-        case 3:
-            PRINTF(iomsg2);
-            break;
-    }
-    put_rn();
-    // P0_5
-    r0 = LPC_IOCON->PIO0_5;
-    PRINTF("%s5(dp5)",io_port_name0);
-    put_spc(4);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("SDA");
-            break;
-    }
-    put_lin();
-    switch ( ( r0 >> 8 ) & 0x3 ) {
-        case 0:
-            PRINTF(iomsg4);
-            break;
-        case 1:
-            PRINTF(iomsg1);
-            break;
-        case 2:
-            PRINTF("Fast md");
-            break;
-        case 3:
-            PRINTF(iomsg2);
-            break;
-    }
-    put_rn();
-    // P0_6
-    r0 = LPC_IOCON->PIO0_6;
-    PRINTF("%s6(dp6)", io_port_name0);
-    put_spc(4);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF(iomsg2);
-            break;
-        case 2:
-            PRINTF("SCK0");
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P0_7
-    r0 = LPC_IOCON->PIO0_7;
-    PRINTF("%s7(dp28)", io_port_name0);
-    put_spc(3);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("CTS");
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P0_8
-    r0 = LPC_IOCON->PIO0_8;
-    PRINTF("%s8(dp1)", io_port_name0);
-    put_spc(4);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("MISO0");
-            break;
-        case 2:
-            PRINTF("16%s0", iomsg30);
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P0_9
-    r0 = LPC_IOCON->PIO0_9;
-    PRINTF("%s9(dp2)", io_port_name0);
-    put_spc(4);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("MOSI0");
-            break;
-        case 2:
-            PRINTF("16%s1", iomsg30);
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P0_10
-    r0 = LPC_IOCON->SWCLK_PIO0_10;
-    PRINTF("SWCLK_%s10(dp3)", io_port_name0);
-    put_spc(1);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF("SWCLK");
-            break;
-        case 1:
-            PRINTF(iomsg1);
-            break;
-        case 2:
-            PRINTF("SCK0");
-            break;
-        case 3:
-            PRINTF("16%s2", iomsg30);
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P0_11
-    r0 = LPC_IOCON->R_PIO0_11;
-    PRINTF("R_%s11(dp4)", io_port_name0);
-    put_spc(1);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF( iomsg0 );
-    switch ( r0 & 0x7 ) {
-        case 0:
-            PRINTF(iomsg5);
-            break;
-        case 1:
-            PRINTF(iomsg1);
-            break;
-        case 2:
-            PRINTF("AD0");
-            break;
-        case 3:
-            PRINTF("32%s3", iomsg30);
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    if ( r0 & 0x80 ) {
-        PRINTF(", %s", iomsg6);
-    } else {
-        PRINTF(", %s", iomsg7);
-    }
-    put_rn();
-}
-
-// I/O Config IO1_x
-void io_config1(void)
-{
-    uint32_t r0;
-
-    // P1_0
-    r0 = LPC_IOCON->R_PIO1_0;
-    PRINTF("R_%s0(dp9)", io_port_name1);
-    put_spc(2);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF( iomsg0 );
-    switch ( r0 & 0x7 ) {
-        case 0:
-            PRINTF(iomsg5);
-            break;
-        case 1:
-            PRINTF(iomsg1);
-            break;
-        case 2:
-            PRINTF("AD1");
-            break;
-        case 3:
-            PRINTF("32B1_CAP0");
-            break;
-    }
-    io_mode_hys_od(r0);
-    if (r0 & 0x80) {
-        PRINTF(", %s", iomsg6);
-    } else {
-        PRINTF(", %s", iomsg7);
-    }
-    put_rn();
-    // P1_1
-    r0 = LPC_IOCON->R_PIO1_1;
-    PRINTF("R_%s1(dp10)", io_port_name1);
-    put_spc(1);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg5);
-            break;
-        case 1:
-            PRINTF(iomsg1);
-            break;
-        case 2:
-            PRINTF("AD2");
-            break;
-        case 3:
-            PRINTF("32%s0", iomsg31);
-            break;
-    }
-    io_mode_hys_od(r0);
-    if (r0 & 0x80) {
-        PRINTF(", %s", iomsg6);
-    } else {
-        PRINTF(", %s", iomsg7);
-    }
-    put_rn();
-    // P1_2
-    r0 = LPC_IOCON->R_PIO1_2;
-    PRINTF("R_%s2(dp11)", io_port_name1);
-    put_spc(1);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg5);
-            break;
-        case 1:
-            PRINTF(iomsg1);
-            break;
-        case 2:
-            PRINTF("AD3");
-            break;
-        case 3:
-            PRINTF("32%s1", iomsg31);
-            break;
-    }
-    io_mode_hys_od( r0 );
-    if (r0 & 0x80) {
-        PRINTF(", %s", iomsg6);
-    } else {
-        PRINTF(", %s", iomsg7);
-    }
-    put_rn();
-    // P1_3
-    r0 = LPC_IOCON->SWDIO_PIO1_3;
-    PRINTF("SWDIO_%s3(dp12)",io_port_name1);
-    put_spc(1);
-    reg_print(SIZE_X, r0);
-    put_spc(3);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF("SWDIO");
-            break;
-        case 1:
-            PRINTF(iomsg1);
-            break;
-        case 2:
-            PRINTF("AD4");
-            break;
-        case 3:
-            PRINTF("32%s2", iomsg31);
-            break;
-    }
-    io_mode_hys_od(r0);
-    if (r0 & 0x80) {
-        PRINTF(", %s", iomsg6);
-    } else {
-        PRINTF(", %s", iomsg7);
-    }
-    put_rn();
-    // P1_4
-    r0 = LPC_IOCON->PIO1_4;
-    PRINTF("%s4(dp13)",io_port_name1);
-    put_spc(3);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF( iomsg0 );
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("AD5");
-            break;
-        case 2:
-            PRINTF("32%s3", iomsg31);
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P1_5
-    r0 = LPC_IOCON->PIO1_5;
-    PRINTF("%s5(dp14)",io_port_name1);
-    put_spc(3);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("RTS");
-            break;
-        case 2:
-            PRINTF("32B0_CAP0");
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P1_6
-    r0 = LPC_IOCON->PIO1_6;
-    PRINTF("%s6(dp15)", io_port_name1);
-    put_spc(3);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("RXD");
-            break;
-        case 2:
-            PRINTF( "32%s0", iomsg30 );
-            break;
-    }
-    put_lin();
-    io_mode_hys_od( r0 );
-    put_rn();
-    // P1_7
-    r0 = LPC_IOCON->PIO1_7;
-    PRINTF("%s7(dp16)", io_port_name1);
-    put_spc(3);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("TXD");
-            break;
-        case 2:
-            PRINTF("32%s1", iomsg30);
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P1_8
-    r0 = LPC_IOCON->PIO1_8;
-    PRINTF("%s8(dp17)", io_port_name1);
-    put_spc(3);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("32%s1", iomsg30);
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-    // P1_9
-    r0 = LPC_IOCON->PIO1_9;
-    PRINTF("%s9(dp18)", io_port_name1);
-    put_spc(3);
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("16%s0", iomsg31);
-            break;
-        case 2:
-            PRINTF("MOSI1");
-            break;
-    }
-    put_lin();
-    io_mode_hys_od(r0);
-    put_rn();
-}
-#endif  // USE_PORT
-
-#if USE_SPI
-void spi_reg(int no)
-{
-    uint32_t n, r0, r1 ,r2, r3, r4, r5, r6, r7, r8;
-
-    if (no == SPI_0) {
-        n = 0;
-        r0 = LPC_SSP0->CR1;
-        r1 = LPC_SSP0->DR;
-        r2 = LPC_SSP0->SR;
-        r3 = LPC_SSP0->CPSR;
-        r4 = LPC_SSP0->IMSC;
-        r5 = LPC_SSP0->RIS;
-        r6 = LPC_SSP0->MIS;
-        r7 = LPC_SSP0->ICR;
-        r8 = LPC_SSP0->CR0;
-    } else if (no == SPI_1) {
-        n = 1;
-        r0 = LPC_SSP1->CR1;
-        r1 = LPC_SSP1->DR;
-        r2 = LPC_SSP1->SR;
-        r3 = LPC_SSP1->CPSR;
-        r4 = LPC_SSP1->IMSC;
-        r5 = LPC_SSP1->RIS;
-        r6 = LPC_SSP1->MIS;
-        r7 = LPC_SSP1->ICR;
-        r8 = LPC_SSP1->CR0;
-    } else {
-        return;
-    }
-    PRINTF("Show SSP%1d(SPI%1d) Registers", n, n);
-    put_rn();
-    PRINTF("CR0");
-    PRINTF(imsg2);
-    reg_print(SIZE8, r8);
-    put_rn();
-    PRINTF("CR1");
-    PRINTF(imsg2);
-    reg_print(SIZE8, r0);
-    put_rn();
-    PRINTF("DR");
-    PRINTF(imsg4);
-    reg_print(SIZE8, r1);
-    put_rn();
-    PRINTF("SR");
-    PRINTF(imsg3);
-    reg_print(SIZE8, r2);
-    put_rn();
-    PRINTF("CPSR");
-    PRINTF(imsg5);
-    reg_print(SIZE8, r3);
-    put_rn();
-    PRINTF("IMSC");
-    PRINTF(imsg2);
-    reg_print(SIZE8, r4);
-    put_rn();
-    PRINTF("RIS");
-    PRINTF(imsg3);
-    reg_print(SIZE8, r5);
-    put_rn();
-    PRINTF("MIS");
-    PRINTF(imsg3);
-    reg_print(SIZE8, r6);
-    put_rn();
-    PRINTF("ICR");
-    PRINTF(imsg2);
-    reg_print(SIZE8, r7);
-    put_rn();
-}
-#endif  //USE_SPI
-
-#if USE_UART
-void uart_reg(void)
-{
-    uint32_t r0,r1,r2,r3,r4,r5,r6;
-
-    // clear LCR[DLAB] to read registers
-    LPC_UART->LCR &= ~(1 << 7);
-    r0 = LPC_UART->RBR;
-    r1 = LPC_UART->IER;
-    r2 = LPC_UART->IIR;
-    r3 = LPC_UART->TER;
-    // set LCR[DLAB] to enable writing to divider registers
-    LPC_UART->LCR |= (1 << 7);
-    r4 = LPC_UART->DLL;
-    r5 = LPC_UART->DLM;
-    r6 = LPC_UART->FDR;
-    // clear LCR[DLAB]
-    LPC_UART->LCR &= ~(1 << 7);
-    // Print each register
-    PRINTF("Show UART Registers");
-    put_rn();
-    PRINTF("RBR");
-    PRINTF(imsg4);
-    reg_print(SIZE8, r0);
-    put_rn();
-    PRINTF("THR--Write only");
-    PRINTF(imsg4);
-    put_rn();
-    PRINTF("DLL");
-    PRINTF(imsg2);
-    reg_print(SIZE8, r4);
-    put_rn();
-    PRINTF("DLM");
-    PRINTF(imsg2);
-    reg_print(SIZE8, r5);
-    put_rn();
-    PRINTF("IER");
-    PRINTF(imsg2);
-    reg_print(SIZE8, r1);
-    put_rn();
-    PRINTF("IIR");
-    PRINTF(imsg2);
-    reg_print(SIZE8, r2);
-    put_rn();
-    PRINTF("FCR--Write only");
-    PRINTF(imsg2);
-    put_rn();
-    PRINTF("LCR,MCR,MSR,SCR,ACR--Not support");
-    put_rn();
-    PRINTF("FDR");
-    PRINTF(imsg2);
-    reg_print(SIZE8, r6);
-    put_rn();
-    PRINTF("TER");
-    PRINTF(imsg3);
-    reg_print(SIZE8, r3);
-    put_rn();
-    PRINTF("RS485CTRL,485ADRMATCH,485DLY--Not support");
-    put_rn();
-}
-#endif  //USE_UART
-
-//#if USE_SYS
-void cpu_inf (void)
-{
-    unsigned long m1, m2;
-
-    m1 = SCB->CPUID;
-    m2 = (m1 >> 24);
-    if (m2 == 0x41) {
-        put_r();
-        PRINTF("CPU = ARM ");
-    } else {
-        put_r();
-        PRINTF("CPU = NOT ARM ");
-    }
-    m2 = (m1 >> 4) & 0xfff;
-    if (m2 == 0xc23) {
-        PRINTF("Cortex-M3");
-        put_rn();
-    } else if (m2 == 0xc20) {
-        PRINTF("Cortex-M0");
-        put_rn();
-    } else {
-        PRINTF("NOT Cortex-M3,M0");
-        put_rn();
-    }
-    m2 = (m1 >> 20) & 0x0f;
-    PRINTF("Variant:%x", m2);
-    put_rn();
-    m2 = m1 & 0x7;
-    PRINTF("Revision:%x", m2);
-    put_rn();
-#if 0
-    // unique ID
-    // http://nemuisan.blog.bai.ne.jp/?eid=192845
-    m1 = *(__IO uint32_t *)((uint32_t)0x1FFF7A22);
-    PRINTF("Unique device ID(94bits):(1) 0x%08x ", m1);
-    m1 = *(__IO uint32_t *)((uint32_t)0x1FFF7A26);
-    PRINTF("(2) 0x%08x ", m1);
-    m1 = *(__IO uint32_t *)((uint32_t)0x1FFF7A2A);
-    PRINTF( "(3) 0x%08x", m1 );
-    put_rn();
-//    m1 = DBGMCU->IDCODE;
-//    PRINTF( "DBG ID: 0x%08x", m1 );
-#endif
-}
-
-//  Calculate CPU System Clock Frequency
-void get_freq(int pr)
-{
-    uint32_t wdt_osc = 0, pll_fct0 = 0, pll_fct1 = 0;
-
-    // Determine clock frequency according to clock register values
-    switch ((LPC_SYSCON->WDTOSCCTRL >> 5) & 0x0F) {
-        case 0:
-            wdt_osc =  400000;
-            break;
-        case 1:
-            wdt_osc =  500000;
-            break;
-        case 2:
-            wdt_osc =  800000;
-            break;
-        case 3:
-            wdt_osc = 1100000;
-            break;
-        case 4:
-            wdt_osc = 1400000;
-            break;
-        case 5:
-            wdt_osc = 1600000;
-            break;
-        case 6:
-            wdt_osc = 1800000;
-            break;
-        case 7:
-            wdt_osc = 2000000;
-            break;
-        case 8:
-            wdt_osc = 2200000;
-            break;
-        case 9:
-            wdt_osc = 2400000;
-            break;
-        case 10:
-            wdt_osc = 2600000;
-            break;
-        case 11:
-            wdt_osc = 2700000;
-            break;
-        case 12:
-            wdt_osc = 2900000;
-            break;
-        case 13:
-            wdt_osc = 3100000;
-            break;
-        case 14:
-            wdt_osc = 3200000;
-            break;
-        case 15:
-            wdt_osc = 3400000;
-            break;
-    }
-    wdt_osc /= ((LPC_SYSCON->WDTOSCCTRL & 0x1F) << 1) + 2;
-    put_r();
-    switch (LPC_SYSCON->MAINCLKSEL & 0x03) {
-        case 0:                             // Internal RC oscillator
-            SystemCoreClock = __IRC_OSC_CLK;
-            if(pr) {
-                PRINTF("%s = %dHz", fmsg0, SystemCoreClock);
-            }
-            break;
-        case 1:                             // Input Clock to System PLL
-            switch (LPC_SYSCON->SYSPLLCLKSEL & 0x03) {
-                case 0:                         // Internal RC oscillator
-                    SystemCoreClock = __IRC_OSC_CLK;
-                    if(pr) {
-                        PRINTF("%s = %dHz", fmsg0, SystemCoreClock);
-                    }
-                    break;
-                case 1:                         // System oscillator
-                    SystemCoreClock = __SYS_OSC_CLK;
-                    if(pr) {
-                        PRINTF("%s = %dHz", fmsg1, SystemCoreClock );
-                    }
-                    break;
-                case 2:                         // WDT Oscillator
-                    SystemCoreClock = wdt_osc;
-                    if(pr) {
-                        PRINTF("%s = %dHz", fmsg2, wdt_osc );
-                    }
-                    break;
-                case 3:                         // Reserved
-                    SystemCoreClock = 0;
-                    if(pr) {
-                        PRINTF(fmsg7);
-                    }
-                    break;
-            }
-            break;
-        case 2:                             // WDT Oscillator
-            SystemCoreClock = wdt_osc;
-            if(pr) {
-                PRINTF("%s = %dHz", fmsg2, wdt_osc );
-            }
-            break;
-        case 3:                             // System PLL Clock Out
-            switch (LPC_SYSCON->SYSPLLCLKSEL & 0x03) {
-                case 0:                         // Internal RC oscillator
-                    if (LPC_SYSCON->SYSPLLCTRL & 0x180) {
-                        SystemCoreClock = __IRC_OSC_CLK;
-                        if(pr) {
-                            PRINTF("%s = %dHz", fmsg0, SystemCoreClock);
-                        }
-                    } else {
-                        pll_fct0 = (LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1;
-                        pll_fct1 = (LPC_SYSCON->SYSPLLCTRL & 0x060) >> 5UL;
-                        SystemCoreClock = __IRC_OSC_CLK *  pll_fct0;
-                        if(pr) {
-                            PRINTF("Use Internal RC = %dHz", __IRC_OSC_CLK);
-                            put_rn();
-                            PRINTF("%s %s = %dHz", fmsg0, fmsg3, SystemCoreClock);
-                            put_rn();
-                            PRINTF("%s %d, %s %d", fmsg5, pll_fct1, fmsg6, pll_fct0);
-                        }
-                    }
-                    break;
-                case 1:                         // System oscillator
-                    if (LPC_SYSCON->SYSPLLCTRL & 0x180) {
-                        SystemCoreClock = __SYS_OSC_CLK;
-                        if(pr) {
-                            PRINTF("%s = %dHz", fmsg1, SystemCoreClock );
-                        }
-                    } else {
-                        pll_fct0 = (LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1;
-                        pll_fct1 = (LPC_SYSCON->SYSPLLCTRL & 0x060) >> 5UL;
-                        SystemCoreClock = __SYS_OSC_CLK * pll_fct0;
-                        if(pr) {
-                            PRINTF("Use XTAL = %dHz", __XTAL);
-                            put_rn();
-                            PRINTF("%s %s = %dHz", fmsg1, fmsg3, SystemCoreClock);
-                            put_rn();
-                            PRINTF("%s %d, %s %d", fmsg5, pll_fct1, fmsg6, pll_fct0);
-                        }
-                    }
-                    break;
-                case 2:                         // WDT Oscillator
-                    if (LPC_SYSCON->SYSPLLCTRL & 0x180) {
-                        SystemCoreClock = wdt_osc;
-                        if(pr) {
-                            PRINTF("%s = %dHz", fmsg2, wdt_osc );
-                        }
-                    } else {
-                        pll_fct0 = (LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1;
-                        pll_fct1 = (LPC_SYSCON->SYSPLLCTRL & 0x060) >> 5UL;
-                        SystemCoreClock = wdt_osc *  pll_fct0;
-                        if(pr) {
-                            PRINTF("Use WDT OSC = %dHz", wdt_osc);
-                            put_rn();
-                            PRINTF("%s %s = %dHz", fmsg2, fmsg3, SystemCoreClock);
-                            put_rn();
-                            PRINTF("%s %d, %s %d", fmsg5, pll_fct1, fmsg6, pll_fct0);
-                        }
-                    }
-                    break;
-                case 3:                         // Reserved
-                    SystemCoreClock = 0;
-                    if(pr) {
-                        PRINTF("fmsg7");
-                    }
-                    break;
-            }
-            break;
-    }
-    SystemCoreClock /= LPC_SYSCON->SYSAHBCLKDIV;
-    if(pr) {
-        put_rn();
-        PRINTF("%s %dHz", fmsg4, SystemCoreClock);
-        put_rn();
-    }
-}
-//#endif  //USE_SYS
-
-#if USE_I2C
-void i2c_io_reg (void)
-{
-    uint32_t r0;
-
-    PRINTF("<Show IO Pin>");
-    put_rn();
-    // P0_4
-    r0 = LPC_IOCON->PIO0_4;
-    reg_print(SIZE_X, r0);
-    put_spc(2);
-    PRINTF("%s4(dp27)",io_port_name0);
-    put_spc(2);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("SCL");
-            break;
-    }
-    put_lin();
-    switch (( r0 >> 8 ) & 0x3) {
-        case 0:
-            PRINTF(iomsg4);
-            break;
-        case 1:
-            PRINTF(iomsg1);
-            break;
-        case 2:
-            PRINTF("Fast md");
-            break;
-        case 3:
-            PRINTF(iomsg2);
-            break;
-    }
-    put_rn();
-    // P0_5
-    r0 = LPC_IOCON->PIO0_5;
-    reg_print( SIZE_X, r0 );
-    put_spc(2);
-    PRINTF("%s5(dp5)",io_port_name0);
-    put_spc(3);
-    PRINTF(iomsg0);
-    switch (r0 & 0x7) {
-        case 0:
-            PRINTF(iomsg1);
-            break;
-        case 1:
-            PRINTF("SDA");
-            break;
-    }
-    put_lin();
-    switch ((r0 >> 8 ) & 0x3) {
-        case 0:
-            PRINTF(iomsg4);
-            break;
-        case 1:
-            PRINTF(iomsg1);
-            break;
-        case 2:
-            PRINTF("Fast md");
-            break;
-        case 3:
-            PRINTF(iomsg2);
-            break;
-    }
-    put_rn();
-}
-
-void i2c_reg (void)
-{
-    uint32_t r0,r1,r2,r3,r4,r5,r6,r7;
-
-    r0 = LPC_I2C->CONSET;
-    r1 = LPC_I2C->STAT;
-    r2 = LPC_I2C->DAT;
-    r3 = LPC_I2C->SCLH;
-    r4 = LPC_I2C->SCLL;
-    r5 = LPC_I2C->CONCLR;
-    r6 = LPC_I2C->MMCTRL;
-    r7 = LPC_I2C->DATA_BUFFER;
-
-    PRINTF("<Show I2C Registers>");
-    put_rn();
-    reg_print(SIZE8, r0);
-    put_spc(2);
-    PRINTF("CONSET");
-    PRINTF(imsg2);
-    put_rn();
-    reg_print(SIZE8, r1);
-    put_spc(2);
-    PRINTF("STAT");
-    PRINTF(imsg3);
-    put_rn();
-    reg_print(SIZE8, r2);
-    put_spc(2);
-    PRINTF("DAT");
-    PRINTF(imsg4);
-    put_rn();
-    put_spc(2);
-    PRINTF("ADR0--Not support");
-    put_rn();
-    reg_print(SIZE8, r3);
-    put_spc(2);
-    PRINTF("SCLH");
-    PRINTF(imsg2);
-    put_rn();
-    reg_print(SIZE8, r4);
-    put_spc(2);
-    PRINTF("SCLL");
-    PRINTF(imsg2);
-    put_rn();
-    reg_print(SIZE8, r5);
-    put_spc(2);
-    PRINTF("CONCLR");
-    PRINTF(imsg2);
-    put_rn();
-    reg_print(SIZE8, r6);
-    put_spc(2);
-    PRINTF("MMCTRL");
-    PRINTF(imsg2);
-    put_rn();
-    put_spc(2);
-    PRINTF("ADR1,2,3--Not support");
-    put_rn();
-    reg_print(SIZE8, r7);
-    put_spc(2);
-    PRINTF("DATA_BUFFER");
-    PRINTF(imsg5);
-    put_rn();
-    put_spc(2);
-    PRINTF("MASK0,1,2,3--Not support");
-    put_rn();
-}
-
-void i2c_freq (void)
-{
-    uint32_t r0,r1;
-
-    r0 = LPC_I2C->SCLH;
-    r1 = LPC_I2C->SCLL;
-    get_freq(0);
-    PRINTF("<I2C Status>");
-    put_rn();
-    PRINTF("Freq. = I2CPCLK/(SCLH+SCLL) = %d/(%d+%d) = %d Hz",
-           SystemCoreClock, r0, r1, SystemCoreClock/(r0+r1));
-    put_rn();
-    r0 = LPC_I2C->CONSET;
-    PRINTF("I2C I/F ");
-    if ( r0 & 0x40 ) {
-        PRINTF("Enabled");
-    } else {
-        PRINTF("disabled");
-    }
-    put_rn();
-}
-#endif
-
-//-------------------------------------------------------------------------------------------------
-//  Monitor Main Program
-//-------------------------------------------------------------------------------------------------
-int mon_hw (void)
-{
-    char *ptr;
-
-    put_r();
-    PRINTF("%s [Help:'?' key]", mon_msg);
-    put_rn();
-#if USE_SYS
-    get_freq(0);
-#endif      //USE_SYS
-    for (;;) {
-        put_r();
-        PUTC('>');
-        ptr = linebuf;
-        get_line(ptr, buf_size);
-        switch (*ptr++) {
-                //---------------------------------------------------------------------------------
-                //    Memory
-                //---------------------------------------------------------------------------------
-            case 'm' :
-#if USE_MEM
-                mem_inf(ptr);
-                put_rn();
-                break;
-#else
-                not_select();
-#endif   // USE_MEM
-                //---------------------------------------------------------------------------------
-                //    Register
-                //---------------------------------------------------------------------------------
-            case 'r' :
-                uint8_t  r_flg;
-                put_r();
-                PRINTF("Reg. Mode p,u,i,s,t,a,d,l,w,c & ?");
-                put_rn();
-                r_flg = 0;
-                for (; r_flg != 0xff;) {
-                    PRINTF("r>");
-                    ptr = linebuf;
-                    get_line(ptr, buf_size);
-                    put_r();
-                    switch(*ptr++) {
-                        case 'p' :
-#if USE_PORT
-                            put_r();
-                            switch(*ptr++) {
-                                case '0' :
-                                    io_config0();
-                                    break;
-                                case '1' :
-                                    io_config1();
-                                    break;
-                                case '*' :
-                                    io_config0();
-                                    put_rn();
-                                    io_config1();
-                                    break;
-                                case '?' :
-                                default:
-                                    PRINTF("Enter p0,p1 and p* for all");
-                                    put_rn();
-                            }
-#else
-                            not_select();
-#endif // USE_PORT
-                            break;
-                        case 'u' :
-#if USE_UART
-                            uart_reg();
-#else
-                            not_select();
-#endif // USE_UART
-                            break;
-                        case 'i' :
-#if USE_I2C
-                            put_r();
-                            i2c_io_reg();
-                            i2c_reg();
-                            i2c_freq();
-#else
-                            not_select();
-#endif // USE_I2C
-                            break;
-                        case 's' :
-#if USE_SPI
-                            switch(*ptr++) {
-                                case '0' :
-                                    spi_reg(SPI_0);
-                                    break;
-                                case '1' :
-                                    spi_reg(SPI_1);
-                                    break;
-                                case '*' :
-                                    spi_reg(SPI_0);
-                                    put_rn();
-                                    spi_reg( SPI_1 );
-                                    break;
-                                case '?' :
-                                default:
-                                    PRINTF("Enter s0,s1 and s* for all");
-                                    put_rn();
-                            }
-#else
-                            not_select();
-#endif // USE_SPI
-                            break;
-                        case 't' :      //
-                            not_yet_impliment();
-                            break;
-                        case 'a' :      //
-                            not_yet_impliment();
-                            break;
-                        case 'd' :      //
-                            not_yet_impliment();
-                            break;
-                        case 'w' :      //
-                            not_yet_impliment();
-                            break;
-                        case 'l' :        //
-                            not_yet_impliment();
-                            break;
-                        case 'c' :      //
-                            not_yet_impliment();
-                            break;
-                        case 'x' :      //
-                            not_yet_impliment();
-                            break;
-                        case 'y' :      //
-                            not_yet_impliment();
-                            break;
-                        case 'q' :        // quit
-                            r_flg = 0xff;
-                            break;
-                        case '?' :
-                            PRINTF("p - I/O Pin Config");
-                            put_rn();
-                            PRINTF("u - UART");
-                            put_rn();
-                            PRINTF("i - I2C");
-                            put_rn();
-                            PRINTF("s - SPI");
-                            put_rn();
-                            PRINTF("t - TIMER");
-                            put_rn();
-                            PRINTF("a - ADC");
-                            put_rn();
-                            PRINTF("d - DAC");
-                            put_rn();
-                            PRINTF("l - LDC");
-                            put_rn();
-                            PRINTF("w - WWDG");
-                            put_rn();
-                            PRINTF("c - COMP");
-                            put_rn();
-                            PRINTF("q - Exit mode");
-                            put_rn();
-                            break;
-                        default:
-                            PUTC('?');
-                            put_rn();
-                    }
-                }
-                PRINTF("Return to All Mode");
-                put_rn();
-                break;
-                //---------------------------------------------------------------------------------
-                //    System
-                //---------------------------------------------------------------------------------
-            case 's' :    // System related information
-#if USE_SYS
-                switch (*ptr++) {
-                    case 'f' :    // sc - show system clock frequency
-                        get_freq(1);
-                        break;
-                    case 'c' :    // sc - show system CPU information
-                        cpu_inf();
-                        break;
-                    case '?' :
-                    default:
-                        put_r();
-                        PRINTF("sc - System CPU information");
-                        put_rn();
-                        PRINTF("sf - System Clock");
-                        put_rn();
-                        break;
-                }
-#else
-                not_select();
-#endif   // USE_SYS
-                break;
-                //---------------------------------------------------------------------------------
-                //    Help
-                //---------------------------------------------------------------------------------
-            case '?' :
-                put_r();
-                msg_hlp_hw();
-                break;
-                //---------------------------------------------------------------------------------
-                //    Return to main routine
-                //---------------------------------------------------------------------------------
-            case 'q' :        // Quit
-                PRINTF("\rReturn to monitor ");
-                return 0;
-                //---------------------------------------------------------------------------------
-                //    Special command for DEBUG
-                //---------------------------------------------------------------------------------
-            case 'x' :
-                not_yet_impliment();
-                break;
-                //---------------------------------------------------------------------------------
-                //    no support
-                //---------------------------------------------------------------------------------
-            default:
-                PUTC('?');
-                put_rn();
-                break;
-        }
-    }
-}
-
-#endif  // defined(TARGET_LPC1114)