Ika Shouyu Poppoyaki - LPC82x supported

Dependencies:   MODSERIAL mbed

Fork of ika_shouyu_poppoyaki by Tedd OKANO

Revision:
33:ce9fff4cbf09
Parent:
32:3700d5df4e18
Child:
34:eaca33d3e632
--- 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 );
 }