from_numbers#
- hexrec.formats.sqtp.from_numbers(numbers, length=2, start=0, retlw=None, wordsize=2, byteorder='little', forcedela=False)[source]#
Creates a file from numbers.
Given a sequence of numbers, it creates an Intel HEX file with the special record sequence and addressing of Microchip SQTP.
- Parameters:
numbers (list of int) – Sequence of serial numbers.
length (int) – Serial number byte size.
start (int) – Start word address of a serial number within the target memory.
retlw (int) – If
None
, this has no effect. If a byte integer is given, it must be the equivalent of theRETLW
opcode of the target processor. TheRETLW
byte is put after each byte of the serial number.wordsize (int) – Memory word size (2 or 4 bytes).
byteorder (str) – By default, Microchip SQTP uses
little
endian. Providebig
for the alternative integer byte order.forcedela (bool) – Forces Extended Linear Address generation.
- Returns:
IhexFile
– Microchip SQTP file as special Intel HEX format.
Examples
>>> from hexrec.formats.sqtp import from_numbers
>>> # Program Memory - PIC18F1220 >>> file = from_numbers(range(5), retlw=0x0C) >>> _ = file.print() :04000000000C000CE4 :04000000010C000CE3 :04000000020C000CE2 :04000000030C000CE1 :04000000040C000CE0 :00000001FF
>>> # Program Memory - PIC32MX360F512L >>> file = from_numbers(range(5), length=4, start=0x1D000000, wordsize=4) >>> _ = file.print() :02000004740086 :0400000000000000FC :0400000001000000FB :0400000002000000FA :0400000003000000F9 :0400000004000000F8 :00000001FF
>>> # User ID - PIC12F1501 (with correct checksums) >>> numbers = [0xCF7E, 0xC590, 0x110B, 0xF3F2, 0x681C] >>> file = from_numbers(numbers, start=0x8000, retlw=0x34) >>> _ = file.print() :020000040001F9 :040000007E34CF3447 :040000009034C5343F :040000000B34113478 :04000000F234F334AF :040000001C34683410 :00000001FF >>> file = from_numbers(numbers, start=0x8000, retlw=0x34, byteorder='big') >>> _ = file.print() :020000040001F9 :04000000CF347E3447 :04000000C53490343F :0400000011340B3478 :04000000F334F234AF :0400000068341C3410 :00000001FF
>>> # User ID - PIC32MX360F512L >>> file = from_numbers(range(5), length=4, start=0x1FC02FF0, wordsize=4) >>> _ = file.print() :020000047F007B :04BFC000000000007D :04BFC000010000007C :04BFC000020000007B :04BFC000030000007A :04BFC0000400000079 :00000001FF
>>> # Auxiliary Memory - dsPIC33EP256MU806 >>> file = from_numbers(range(5), length=4, start=0x7FC000, wordsize=4) >>> _ = file.print() :0200000401FFFA :0400000000000000FC :0400000001000000FB :0400000002000000FA :0400000003000000F9 :0400000004000000F8 :00000001FF
>>> # Boot Memory - PIC32MX110F016B >>> numbers = [0xC78E2639, 0xE277B71F, 0x3D7E1E03, 0xE2646FD5, 0xA7C293F9] >>> file = from_numbers(numbers, length=4, start=0x1FC00000, wordsize=4) >>> _ = file.print() :020000047F007B :0400000039268EC748 :040000001FB777E2CD :04000000031E7E3D20 :04000000D56F64E272 :04000000F993C2A707 :00000001FF >>> file = from_numbers(numbers, length=4, start=0x1FC00000, wordsize=4, byteorder='big') >>> _ = file.print() :020000047F007B :04000000C78E263948 :04000000E277B71FCD :040000003D7E1E0320 :04000000E2646FD572 :04000000A7C293F907 :00000001FF
>>> # EEPROM - PIC12F1840 >>> file = from_numbers(range(5), forcedela=True) >>> _ = file.print() :020000040000FA :020000000000FE :020000000100FD :020000000200FC :020000000300FB :020000000400FA :00000001FF
>>> # EEPROM - PIC18F1220 (with actual start address 0x00780000) >>> file = from_numbers(range(5), start=0x00780000, forcedela=True) >>> _ = file.print() :0200000400F00A :020000000000FE :020000000100FD :020000000200FC :020000000300FB :020000000400FA :00000001FF