void main( void ) { PYGMYFILE pygmyFile; u8 i, ucStatus, ucBuffer[ 65 ], *ucSubString; sysInit(); print( COM3, "\rUpdating bootloader, cancel boot after completion" ); print( COM3, "\rOpening Resource..." ); if( !fileOpenResource( &pygmyFile, (u8*)PYGMY_boothex ) ){ print( COM3, "\rFile Failed to Open" ); } else{ print( COM3, "\rErasing..." ); for( i = 0; i < 8; i++ ){ fpecErasePage( i ); } // for; print( COM3, "\rFlashing..." ); for( ucStatus = 0; !( fileIsEOF( &pygmyFile ) ) && ucStatus != 0xFF; ){ for( i = 0; i < 64; i++ ){ ucBuffer[ i ] = fileGetChar( &pygmyFile ); if( ucBuffer[ i ] == '\r' ){ ucBuffer[ i ] = '\0'; ucSubString = getNextSubString( (u8*)ucBuffer, WHITESPACE|NEWLINE ); // Add 1 to pointer before passing to skip the ':' packet start char ucStatus = fpecProcessIHEX( (u8*)( ucSubString + 1 ) ); break; // Time to fetch next IHEX entry } // if } // for } // for } // else print( COM3, "\rBootloader Updated" ); print( COM3, "\rReseting..." ); delay( 100 ); PYGMY_RESET; //boot(); }
u8 bootTestAndLoad( u32 Address, u8 *FileName ) { PYGMYFILE *File; u32 i, Length; u8 Buffer[ 64 ], *SubString, Status; File = fileOpen( FileName, READ, 0 ); if( !File ){ return( FALSE ); } // if //Length = fpecGetIHEXLength( FileName ); print( STDIO, "\rFlashing %d bytes to 0x%08", Length, Address ); fpecEraseProgramMemory(); print( STDIO, "..." ); for( Status = 0; !( File->Properties.Attributes & EOF ) && Status != 0xFF; ){ for( i = 0; i < 64; i++ ){ Buffer[ i ] = fileGetChar( File ); if( Buffer[ i ] == '\r' ){ Buffer[ i ] = '\0'; SubString = getNextSubString( (u8*)Buffer, WHITESPACE|NEWLINE ); // Add 1 to pointer before passing to skip the ':' packet start char Status = fpecProcessIHEX( (u8*)( SubString + 1 ) ); break; // Time to fetch next IHEX entry } // if } // for } // for }