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 the RETLW opcode of the target processor. The RETLW 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. Provide big for the alternative integer byte order.

  • forcedela (bool) – Forces Extended Linear Address generation.

Returns:

IhexFileMicrochip SQTP file as special Intel HEX format.

Examples

https://developerhelp.microchip.com/xwiki/bin/view/software-tools/ipe/sqtp-file-format-specification/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