Ika Shouyu Poppoyaki - LPC82x supported

Dependencies:   MODSERIAL mbed

Fork of ika_shouyu_poppoyaki by Tedd OKANO

main.cpp

Committer:
okano
Date:
2013-09-26
Revision:
37:4cd12c9c1cc2
Parent:
35:0b434ef4af49
Child:
38:cb95bfe0546a

File content as of revision 37:4cd12c9c1cc2:

/**
 *  Sample of ISP operation for NXP MCUs
 *
 *  @author  Tedd OKANO
 *  @version 0.96
 *  @date    Sep-2013
 *
 *  This program programs MCU flash memory through UART. It uses
 *  "In-System Programming (ISP)" interface in target MCU (NXP LPC micro-
 *  controllers).
 *
 *  The ISP is done by PC and serial cable normally. The ISP protocol is
 *  executed software on a PC. The software reads a data file and transfers
 *  the data with the ISP protocol.
 *  This program does same process of that. The mbed perform the function like
 *  "FlashMagic" and "lpc21isp".
 *  (This program not just copies the binary but also insert 4 byte checksum at
 *  address 0x1C.)
 *
 *  This program currently supports LPC1114(LPC1114FN28/102 - DIP28-ARM) and
 *  LPC810(LPC810M021FN8 - DIP8-ARM).
 */

#include    "mbed.h"
#include    "isp.h"
#include    "serial_utilities.h"
#include    "_user_settings.h"


LocalFileSystem local( "local" );


#define     SUMMARY_MESSAGE_FAIL        "** The data could not be " WHAT_WAS_DONE " :("
#define     SUMMARY_MESSAGE_SUCCESS     "** The data has been " WHAT_WAS_DONE " successflly :)"

int main()
{
    int     err;

    printf( "\r\n\r\n\r\nmbed ISP program : programming LPC device from mbed (v0.96)\r\n" );

    err     = isp_flash_write( SOURCE_FILE );

    printf( "\r\n  %s\r\n\r\n",
            err ?
            SUMMARY_MESSAGE_FAIL :
            SUMMARY_MESSAGE_SUCCESS
          );

    if ( err )
        error( "  ** ISP failed\r\n" );

#ifdef  AUTO_PROGRAM_START

    start_target_in_normal_mode( TARGET_OPERATION_BAUD_RATE );

    printf( "  ** The program in flash has been started!!\r\n" );

#endif

    printf( "     (now the mbed is working in \"serial through mode\")\r\n\r\n" );

    start_success_indicator();
    usb_serial_bridge_operation();  //  doesn't return. infinite loop in this function
}