mirror of
https://github.com/rfivet/stm32bringup.git
synced 2024-12-18 06:46:23 -05:00
Dont't stop if CRC-32 placeholder pattern is detected while not at end of file.
This commit is contained in:
parent
a9daade2fe
commit
9617178f41
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
** POLY32 is 0x04C11DB7
|
** POLY32 is 0x04C11DB7
|
||||||
** Intialisation 0xFFFFFFFF
|
** Initialisation 0xFFFFFFFF
|
||||||
** High bit first (left shift)
|
** High bit first (left shift)
|
||||||
** 32 bit word input, little endian
|
** 32 bit word input, little endian
|
||||||
** crc = CRC32( crc, word)
|
** crc = CRC32( crc, word)
|
||||||
@ -162,7 +162,9 @@ static uint32_t check_word( uint32_t crc, unsigned char buf[ 4]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int sign_file( char *filename) {
|
static const unsigned mark = 0xDEC0ADDE ; /* DEADC0DE placeholder value */
|
||||||
|
|
||||||
|
static int sign_file( char *filename) {
|
||||||
FILE *fin, *fout ;
|
FILE *fin, *fout ;
|
||||||
int cnt, filesize, outsize ;
|
int cnt, filesize, outsize ;
|
||||||
uint32_t crc ;
|
uint32_t crc ;
|
||||||
@ -186,8 +188,15 @@ int sign_file( char *filename) {
|
|||||||
filesize = 0 ;
|
filesize = 0 ;
|
||||||
while( !feof( fin)) {
|
while( !feof( fin)) {
|
||||||
cnt = fread( buf, 1, sizeof buf, fin) ;
|
cnt = fread( buf, 1, sizeof buf, fin) ;
|
||||||
if( *((unsigned *) buf) == 0xDEC0ADDE) /* DEADC0DE Placeholder */
|
while( cnt == 4 && *((unsigned *) buf) == mark) {
|
||||||
break ;
|
/* DEADC0DE placeholder at EOF */
|
||||||
|
cnt = fread( buf, 1, sizeof buf, fin) ;
|
||||||
|
if( cnt != 0) {
|
||||||
|
filesize += 4 ;
|
||||||
|
crc = check_word( crc, (unsigned char *) &mark) ;
|
||||||
|
fwrite( &mark, 1, 4, fout) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
filesize += cnt ;
|
filesize += cnt ;
|
||||||
if( cnt != 4) {
|
if( cnt != 4) {
|
||||||
|
Loading…
Reference in New Issue
Block a user