+ def test_block(self):
+ length = 1024
+ line_length = 16
+ fd = file("write.ihex", "w")
+ data = ""
+ for i in range(length / line_length):
+ line_data = "".join(["%c" % random.randrange(256) for _ in range(line_length)])
+ data += line_data
+ fd.write(ihex_line(i * line_length, 0, line_data))
+ fd.close()
+
+ self.gdb.command("restore write.ihex 0x%x" % target.ram)
+ for offset in range(0, length, 19*4) + [length-4]:
+ value = self.gdb.p("*((long*)0x%x)" % (target.ram + offset))
+ written = ord(data[offset]) | \
+ (ord(data[offset+1]) << 8) | \
+ (ord(data[offset+2]) << 16) | \
+ (ord(data[offset+3]) << 24)
+ self.assertEqual(value, written)
+
+ self.gdb.command("dump ihex memory read.ihex 0x%x 0x%x" % (target.ram,
+ target.ram + length))
+ for line in file("read.ihex"):
+ record_type, address, line_data = ihex_parse(line)
+ if (record_type == 0):
+ self.assertEqual(line_data, data[address:address+len(line_data)])
+