diff options
Diffstat (limited to 'tool/mbed/lpc-vector-checksum.c')
-rw-r--r-- | tool/mbed/lpc-vector-checksum.c | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/tool/mbed/lpc-vector-checksum.c b/tool/mbed/lpc-vector-checksum.c deleted file mode 100644 index 316a1253a0..0000000000 --- a/tool/mbed/lpc-vector-checksum.c +++ /dev/null @@ -1,99 +0,0 @@ -/*************************************************************************** -* https://github.com/dhylands/projects/blob/master/lpc/lpc-vector-checksum/lpc-vector-checksum.c -* -* Copyright (c) 2012 by Dave Hylands -* All Rights Reserved -* -* Permission is granted to any individual or institution to use, copy, -* modify, or redistribute this file so long as it is not sold for profit, -* and that this copyright notice is retained. -* -*************************************************************************** -* -* This program calculates the vector checksum used in LPC17xx binary -* images. -* -* Usage: lpc-vector-checksum file -* -***************************************************************************/ - -#include <stdio.h> -#include <stdlib.h> -#include <stdint.h> -#include <errno.h> -#include <string.h> - -/***************************************************************************/ -/** -* update_vector_checksum -* -* The algorithim is to write the checksum such that the checksum of the -* first 8 words is equal to zero. -* -* The LPC1768 uses little-endian, and this particular routine assumes -* that it's running on a little-endian architecture. -*/ -static int update_vector_checksum( const char *filename ) -{ - uint32_t sum; - uint32_t header[8]; - FILE *fs; - int i; - - if (( fs = fopen( filename, "r+b" )) == NULL ) - { - fprintf( stderr, "Unable to open '%s' for reading/writing (%d): %s\n", - filename, errno, strerror( errno )); - return 0; - } - - if ( fread( header, sizeof( header ), 1, fs ) != 1 ) - { - fprintf( stderr, "Failed to read header from '%s' (perhaps the file is too small?)", - filename ); - fclose( fs ); - return 0; - } - - sum = 0; - for ( i = 0; i < 7; i++ ) - { - sum += header[i]; - } - printf( "sum = 0x%08x, value to write = 0x%08x\n", sum, -sum ); - - /* write back the checksum to location 7 - * http://sigalrm.blogspot.jp/2011/10/cortex-m3-exception-vector-checksum.html - */ - fseek(fs, 0x1c, SEEK_SET); - sum = -sum; - fwrite(&sum, 4, 1, fs); - - fclose( fs ); - - return 1; -} - -/***************************************************************************/ -/** -* main -*/ -int main( int argc, char **argv ) -{ - int arg; - - if ( argc < 2) - { - fprintf( stderr, "Usage: lpc-vector-checksum file ...\n" ); - exit( 1 ); - } - - for ( arg = 1; arg < argc; arg++ ) - { - update_vector_checksum( argv[ arg ]); - } - - exit( 0 ); - return 0; -} - |