[tuxdroid-svn] r208 - firmware/tuxup/trunk
Status: Beta
Brought to you by:
ks156
From: <c2m...@c2...> - 2007-03-26 09:33:38
|
Author: jaguarondi Date: 2007-03-26 08:06:47 +0200 (lun, 26 mar 2007) New Revision: 208 Modified: firmware/tuxup/trunk/bootloader.c Log: - BUG: fixed bug #1 Segfault when a hex file contained a line of data that ended exactly at the end of a segment. The segmnt was never sent to the USB in this case. I'm not sure I didn't created a new bug by changing this, needs more testing. Modififirmware/tuxup/trunk/bootloader.c =================================================================== --- firmware/tuxup/trunk/bootloader.c 2007-03-26 06:06:11 UTC (rev 207) +++ firmware/tuxup/trunk/bootloader.c 2007-03-26 06:06:47 UTC (rev 208) @@ -334,7 +334,9 @@ /* Last segment, fill with '0xFF', send and return */ if (lastSeg) { - //printf("--last segment --\n"); +#if (PRINT_DATA) + printf("--last segment --\n"); +#endif while (parser->currAddr < (parser->segAddr + parser->segLen)) /* fill with '0' until the end of segment */ { fillSegment(parser, 0xFF); @@ -346,7 +348,9 @@ /* resynchronise currAddr and addr */ while(parser->currAddr != parsedData->addr) { - //printf("--synchronisation--\n"); +#if (PRINT_DATA) + printf("--synchronisation--\n"); +#endif if (!parser->inSeg) { parser->currAddr = parsedData->addr & ~(parser->segLen - 1); /* set current address at the segment start by zeroing lower bits */ @@ -364,24 +368,28 @@ while(parser->currAddr < (parsedData->addr + parsedData->dataLen)) { - //printf("--loop--"); +#if (PRINT_DATA) + printf("--loop--"); +#endif if (!parser->inSeg) /* start a new segment if needed */ { - //printf("--new segment--\n"); +#if (PRINT_DATA) + printf("--new segment--\n"); +#endif parser->inSeg = TRUE; parser->segAddr = parser->currAddr; /* set address of the segment start */ startSegment(parser); } + /* store data in segmentData */ + fillSegment(parser, parsedData->data[dataIdx]); + dataIdx++; if (parser->currAddr == (parser->segAddr + parser->segLen)) /* end of segment */ { - //printf("--end segment--"); +#if (PRINT_DATA) + printf("--end segment--"); +#endif finishSegment(parser); } - else /* store data in segmentData */ - { - fillSegment(parser, parsedData->data[dataIdx]); - dataIdx++; - } } return TRUE; |