Ika Shouyu Poppoyaki - LPC82x supported
Fork of ika_shouyu_poppoyaki by
Revision 38:cb95bfe0546a, committed 2013-09-27
- 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
--- 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 ] );