summaryrefslogtreecommitdiff
path: root/src/target
diff options
context:
space:
mode:
authorntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2007-12-18 21:29:44 +0000
committerntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2007-12-18 21:29:44 +0000
commit62e65b9fdeab8802d6940f65022b9221751e4c68 (patch)
tree5ffcd8de4cdb5225356c43b4c6f9d21dbf335166 /src/target
parent02f3765351c9e25185b745b84f1a2604fb2149c7 (diff)
downloadopenocd_libswd-62e65b9fdeab8802d6940f65022b9221751e4c68.tar.gz
openocd_libswd-62e65b9fdeab8802d6940f65022b9221751e4c68.tar.bz2
openocd_libswd-62e65b9fdeab8802d6940f65022b9221751e4c68.tar.xz
openocd_libswd-62e65b9fdeab8802d6940f65022b9221751e4c68.zip
- added patch by Øyvind Harboe to Intel Hex Start Segment Address Record (Type 3)
- added support to parse Motorola Record Count (S5) git-svn-id: svn://svn.berlios.de/openocd/trunk@241 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/target')
-rw-r--r--src/target/image.c25
1 files changed, 25 insertions, 0 deletions
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 */