Ika Shouyu Poppoyaki - LPC82x supported

Dependencies:   MODSERIAL mbed

Fork of ika_shouyu_poppoyaki by Tedd OKANO

Files at this revision

API Documentation at this revision

Comitter:
okano
Date:
Fri Sep 27 14:48:17 2013 +0000
Parent:
37:4cd12c9c1cc2
Child:
39:f68f9fa1e88e
Commit message:
ver 0.97: ; can verify non 4*N size binary.; can write full 32768 bytes for LPC1114FN28, can write 4096 bytes for LPC810.

Changed in this revision

isp.cpp Show annotated file Show diff for this revision Revisions of this file
isp.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
verification.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/isp.cpp	Thu Sep 26 12:58:51 2013 +0000
+++ b/isp.cpp	Fri Sep 27 14:48:17 2013 +0000
@@ -46,7 +46,11 @@
     }
 
     data_size   = file_size( fp );
-    last_sector = data_size / tpp->sector_size;
+    
+    if ( !data_size )
+        return ( ERROR_DATA_SIZE_ZERO );
+        
+    last_sector = (data_size - 1) / tpp->sector_size;
 
     if ( crp_check( fp ) ) {
         printf( "  the CRP is enabled in the data source file\r\n" );
--- a/isp.h	Thu Sep 26 12:58:51 2013 +0000
+++ b/isp.h	Fri Sep 27 14:48:17 2013 +0000
@@ -13,6 +13,8 @@
     NO_ERROR                            = 0x00,
 
     ERROR_AT_TARGET_OPEN,
+    ERROR_DATA_SIZE_ZERO,
+    
     ERROR_AT_FILE_OPEN,
     ERROR_AT_SECTOR_ERASE,
 
--- a/main.cpp	Thu Sep 26 12:58:51 2013 +0000
+++ b/main.cpp	Fri Sep 27 14:48:17 2013 +0000
@@ -2,7 +2,7 @@
  *  Sample of ISP operation for NXP MCUs
  *
  *  @author  Tedd OKANO
- *  @version 0.96
+ *  @version 0.97
  *  @date    Sep-2013
  *
  *  This program programs MCU flash memory through UART. It uses
@@ -37,7 +37,7 @@
 {
     int     err;
 
-    printf( "\r\n\r\n\r\nmbed ISP program : programming LPC device from mbed (v0.96)\r\n" );
+    printf( "\r\n\r\n\r\nmbed ISP program : programming LPC device from mbed (v0.97)\r\n" );
 
     err     = isp_flash_write( SOURCE_FILE );
 
--- a/verification.cpp	Thu Sep 26 12:58:51 2013 +0000
+++ b/verification.cpp	Fri Sep 27 14:48:17 2013 +0000
@@ -63,8 +63,7 @@
         }
 
 
-        sprintf( command_str, "R %ld %ld\r\n", read_size, size );
-//        try_and_check( command_str, "0", MODE_SILENT );
+        sprintf( command_str, "R %ld %ld\r\n", read_size, (size + 3) & ~0x3 );  //  reading size must be 4*N
         if ( try_and_check( command_str, "0" ) )
             return ( ERROR_AT_READ_COMMAND );
 
@@ -129,7 +128,7 @@
             add_isp_checksum( bf );
         }
 
-        sprintf( command_str, "R %ld %ld\r\n", read_size, size );
+        sprintf( command_str, "R %ld %ld\r\n", read_size, (size + 3) & ~0x3 );  //  reading size must be 4*N
         if ( try_and_check( command_str, "0" ) )
             return ( ERROR_AT_READ_COMMAND );
 
@@ -138,7 +137,7 @@
         for ( int i = 0; i < size; i++ ) {
 //            printf( "   %s 0x%02X --- 0x%02X\r\n", (*(bf + i) != *(br + i)) ? "***" : "   ", *(bf + i), *(br + i) );
             if ( (*(bf + i) != *(br + i)) ) {
-                printf( "   %s 0x%02X --- 0x%02X\r\n", (*(bf + i) != *(br + i)) ? "***" : "   ", *(bf + i), *(br + i) );
+//                printf( "   %s 0x%02X --- 0x%02X\r\n", (*(bf + i) != *(br + i)) ? "***" : "   ", *(bf + i), *(br + i) );
                 error_flag++;
             }
         }
@@ -167,10 +166,10 @@
     int     read_size   = 0;
     int     retry_count = 3;
 
+    size    = (size + 3) & ~0x3;
 
     while ( retry_count-- ) {
 
-//        for ( int i = 0; i < N_OF_LINES; i++ )
         for ( int i = 0; i < ((READ_SIZE < size) ? N_OF_LINES : ((size - 1) / LINE_BYTES) + 1) ; i++ )
             get_string( s[ i ] );