From 62e65b9fdeab8802d6940f65022b9221751e4c68 Mon Sep 17 00:00:00 2001 From: ntfreak Date: Tue, 18 Dec 2007 21:29:44 +0000 Subject: [PATCH] =?utf8?q?-=20added=20patch=20by=20=C3=98yvind=20Harboe=20?= =?utf8?q?to=20Intel=20Hex=20Start=20Segment=20Address=20Record=20(Type=20?= =?utf8?q?3)=20-=20added=20support=20to=20parse=20Motorola=20Record=20Coun?= =?utf8?q?t=20(S5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.berlios.de/openocd/trunk@241 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/target/image.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/target/image.c b/src/target/image.c index a0962b1f..a1a2a441 100644 --- a/src/target/image.c +++ b/src/target/image.c @@ -265,6 +265,19 @@ int image_ihex_buffer_complete(image_t *image) full_address = (full_address & 0xffff) | (upper_address << 4); } } + else if (record_type == 3) /* Start Segment Address Record */ + { + u32 dummy; + + /* "Start Segment Address Record" will not be supported */ + /* but we must consume it, and do not create an error. */ + while (count-- > 0) + { + sscanf(&lpszLine[bytes_read], "%2x", &dummy); + cal_checksum += (u8)dummy; + bytes_read += 2; + } + } else if (record_type == 4) /* Extended Linear Address Record */ { u16 upper_address; @@ -578,6 +591,18 @@ int image_mot_buffer_complete(image_t *image) full_address++; } } + else if (record_type == 5) + { + /* S5 is the data count record, we ignore it */ + u32 dummy; + + while (count-- > 0) + { + sscanf(&lpszLine[bytes_read], "%2x", &dummy); + cal_checksum += (u8)dummy; + bytes_read += 2; + } + } else if (record_type >= 7 && record_type <= 9) { /* S7, S8, S9 - ending records for 32, 24 and 16bit */ -- 2.39.5