Add to 11U68 11E68
Dependencies: DirectoryList MODSERIAL mbed
Fork of ika_shouyu_poppoyaki by
Diff: isp.cpp
- Revision:
- 33:ce9fff4cbf09
- Parent:
- 32:3700d5df4e18
- Child:
- 34:eaca33d3e632
diff -r 3700d5df4e18 -r ce9fff4cbf09 isp.cpp --- a/isp.cpp Tue Sep 24 21:35:25 2013 +0000 +++ b/isp.cpp Wed Sep 25 04:00:04 2013 +0000 @@ -16,9 +16,11 @@ int file_size( FILE *fp ); +unsigned int read_crp( FILE *fp ); unsigned int crp_check( FILE *fp ); void success_indicator(); + int isp_flash_write( char *file_name ) { FILE *fp; @@ -45,10 +47,17 @@ data_size = file_size( fp ); last_sector = data_size / tpp->sector_size; - - if ( crp_check( fp ) ) - { - // warn CRP + + if ( crp_check( fp ) ) { + printf( " the CRP is enabled in the data source file\r\n" ); + +#ifdef CHECK_CRP_CODE + printf( " aborting execution by CRP warning\r\n" ); + + return ( WARNING_CRP_CODE_DETECTED ); +#else + printf( " this program continues to write the CRP enabled binary into the target flash\r\n" ); +#endif } printf( " data size = %d bytes, it takes %d secotrs in flash area\r\n", data_size, last_sector + 1 ); @@ -64,13 +73,16 @@ printf( " -- %d bytes data are written\r\n", transferred_size ); - +#ifdef ENABLE_VERIFYING printf( "\r\n ==== flash reading and verifying ====\r\n" ); if ( err = verify_flash( fp, tpp, &transferred_size ) ) return ( err ); printf( " -- %d bytes data are read and verified\r\n", transferred_size ); +#else + printf( "\r\n ==== verifying has been skipped ====\r\n\r\n" ); +#endif fclose( fp ); @@ -96,6 +108,32 @@ { unsigned int crp; + switch ( crp = read_crp( fp ) ) { + case NO_ISP : + printf( "\r\n WARNING : CRP code detected 0x%08X (NO_ISP)\r\n", crp ); + break; + case CRP1 : + printf( "\r\n WARNING : CRP code detected 0x%08X (CRP1)\r\n", crp ); + break; + case CRP2 : + printf( "\r\n WARNING : CRP code detected 0x%08X (CRP2)\r\n", crp ); + break; + case CRP3 : + printf( "\r\n WARNING : CRP code detected 0x%08X (CRP3)\r\n", crp ); + break; + default : + crp = 0x0; // no CRP code detected + break; + } + + return ( crp ); +} + + +unsigned int read_crp( FILE *fp ) +{ + unsigned int crp; + fseek( fp, 0x2FC, SEEK_SET ); // seek back to beginning of file if ( 1 != fread( &crp, sizeof( crp ), 1, fp ) ) @@ -103,17 +141,6 @@ fseek( fp, 0, SEEK_SET ); // seek back to beginning of file - switch ( crp ) { - case NO_ISP : - case CRP1 : - case CRP2 : - case CRP3 : - /* do nothing */ - break; - default : - crp = 0x0; - } - return ( crp ); }