Merge lp:~w-uroda/python-msp430-tools/titextBlocks into lp:python-msp430-tools

Proposed by Wayne Uroda
Status: Needs review
Proposed branch: lp:~w-uroda/python-msp430-tools/titextBlocks
Merge into: lp:python-msp430-tools
Diff against target: 88 lines (+33/-9)
3 files modified
msp430/memory/__init__.py (+22/-3)
msp430/memory/convert.py (+1/-1)
msp430/memory/titext.py (+10/-5)
To merge this branch: bzr merge lp:~w-uroda/python-msp430-tools/titextBlocks
Reviewer Review Type Date Requested Status
zsquareplusc Pending
Review via email: mp+231988@code.launchpad.net

Description of the change

Added the ability to save titext with maximum block length

To post a comment you must log in.

Unmerged revisions

488. By Wayne Uroda

Added support for saving titext files with a maximum block size.
Eg. output format "titext256" will generate a titext file where there are no more than 256 bytes in each section (sections starting with @address).

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'msp430/memory/__init__.py'
--- msp430/memory/__init__.py 2012-12-07 13:56:26 +0000
+++ msp430/memory/__init__.py 2014-08-23 13:23:52 +0000
@@ -298,10 +298,13 @@
298def save(memory, fileobj, format='titext'):298def save(memory, fileobj, format='titext'):
299 if format == 'titext':299 if format == 'titext':
300 return titext.save(memory, fileobj)300 return titext.save(memory, fileobj)
301 elif format.startswith('titext') and format[6:].isdigit():
302 maxBlockLen = int(format[6:])
303 return titext.save(memory, fileobj, maxBlockLen)
301 elif format == 'ihex':304 elif format == 'ihex':
302 return intelhex.save(memory, fileobj)305 return intelhex.save(memory, fileobj)
303 elif format == 'elf':306# elif format == 'elf':
304 return elf.save(memory, fileobj)307# return elf.save(memory, fileobj)
305 elif format == 'bin':308 elif format == 'bin':
306 return bin.save(memory, fileobj)309 return bin.save(memory, fileobj)
307 elif format == 'hex':310 elif format == 'hex':
@@ -309,5 +312,21 @@
309 raise ValueError('unsupported file format %s' % (format,))312 raise ValueError('unsupported file format %s' % (format,))
310313
311314
315class SaveFormats:
316 formatList = ['titext', 'ihex', 'bin', 'hex']
317 def __iter__(self):
318 return iter(SaveFormats.formatList)
319
320 def __contains__(self,item):
321 if item in SaveFormats.formatList:
322 return True
323
324 if item.startswith('titext'):
325 blockSize = item[6:]
326 if blockSize.isdigit() and int(blockSize) > 0:
327 return True
328 return False
329
312load_formats = ['titext', 'ihex', 'bin', 'hex', 'elf']330load_formats = ['titext', 'ihex', 'bin', 'hex', 'elf']
313save_formats = ['titext', 'ihex', 'bin', 'hex']331save_formats = SaveFormats()
332
314333
=== modified file 'msp430/memory/convert.py'
--- msp430/memory/convert.py 2011-02-19 19:51:27 +0000
+++ msp430/memory/convert.py 2014-08-23 13:23:52 +0000
@@ -45,7 +45,7 @@
4545
46 parser.add_option("-f", "--output-format",46 parser.add_option("-f", "--output-format",
47 dest="output_format",47 dest="output_format",
48 help="output format name (%s)" % (', '.join(memory.save_formats),),48 help="output format name (%s) or titextN where N is a positive integer" % (', '.join(memory.save_formats),),
49 default="titext",49 default="titext",
50 metavar="TYPE")50 metavar="TYPE")
5151
5252
=== modified file 'msp430/memory/titext.py'
--- msp430/memory/titext.py 2012-07-04 22:44:58 +0000
+++ msp430/memory/titext.py 2014-08-23 13:23:52 +0000
@@ -11,6 +11,7 @@
1111
12import msp430.memory12import msp430.memory
13import msp430.memory.error13import msp430.memory.error
14import sys
1415
15def load(filelike):16def load(filelike):
16 """load data from a (opened) file in TI-Text format"""17 """load data from a (opened) file in TI-Text format"""
@@ -41,11 +42,15 @@
41 memory.segments.append(msp430.memory.Segment(startAddr, segmentdata))42 memory.segments.append(msp430.memory.Segment(startAddr, segmentdata))
42 return memory43 return memory
4344
44def save(memory, filelike):45def save(memory, filelike, maxBlocklen = sys.maxint):
45 """output TI-Text to given file object"""46 """output TI-Text to given file object"""
46 for segment in sorted(memory.segments):47 for segment in sorted(memory.segments):
47 filelike.write("@%04x\n" % segment.startaddress)48 rawData = bytearray(segment.data)
48 data = bytearray(segment.data)49 rawLength = len(rawData)
49 for i in range(0, len(data), 16):50 for startAddr in range(0, rawLength, maxBlocklen):
50 filelike.write("%s\n" % " ".join(["%02x" % x for x in data[i:i+16]]))51 filelike.write("@%04x\n" % (segment.startaddress + startAddr))
52 blockLen = min(maxBlocklen, rawLength - startAddr)
53 data = rawData[startAddr : (startAddr + blockLen)]
54 for i in range(0, len(data), 16):
55 filelike.write("%s\n" % " ".join(["%02x" % x for x in data[i:i+16]]))
51 filelike.write("q\n")56 filelike.write("q\n")

Subscribers

People subscribed via source and target branches