# # Patch managed by http://www.holgerschurig.de/patcher.html # --- cetools-0.3/bin2rom.c~sean-hsieh +++ cetools-0.3/bin2rom.c @@ -14,6 +14,12 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + History: + 07/14/2000 Sean Hsieh + Clear padding bytes of the input buffer when + "blockSize < BLOCKSIZE" to avoid the checksum + error */ #include #include @@ -28,7 +34,7 @@ #define min(a, b) (a 0 ) { blockSize = min( BLOCKSIZE, reste ); - + /**********************************************************************/ + /* Modified by Sean Hsieh */ + /* Clear the padding bytes to zero, this can avoid the checksum error */ + /**********************************************************************/ + if ( blockSize != BLOCKSIZE ) { + memset( inStart, 0, BLOCKSIZE ); + //printf( "adding padding bytes\n" ); + } read( input, inStart, blockSize ); #ifdef MAP_OUTPUT @@ -285,7 +298,8 @@ write( output, &boot, 4); - write( output, &nullData, 4); + //write( output, &nullData, 4); + write( output, &record, 4); #endif @@ -339,17 +353,26 @@ { long start; long boot; + long record; - if( argc < 5 ) + if ( argc < 5 ) { - printf("bin2rom: \n"); - exit( -1 ); + printf("bin2rom: [] [-s] [-c]\n"); + exit( -1 ); } sscanf( argv[3], "%lx", &start ); sscanf( argv[4], "%lx", &boot ); - - bin2rom( argv[1], argv[2], start, boot ); + if ( argc >= 6 ) + { + sscanf( argv[5], "%lx", &record ); + } + else + { + record = 0xffffffff; + } + + bin2rom( argv[1], argv[2], start, boot, record ); return 0; } \ No newline at end of file