diff --git a/scripts/imgtool.py b/scripts/imgtool.py
index 6531499..76ed130 100755
--- a/scripts/imgtool.py
+++ b/scripts/imgtool.py
@@ -114,6 +114,8 @@
 
 @click.argument('outfile')
 @click.argument('infile')
+@click.option('-e', '--endian', type=click.Choice(['little', 'big']),
+              default='little', help="Select little or big endian")
 @click.option('--overwrite-only', default=False, is_flag=True,
               help='Use overwrite-only instead of swap upgrades')
 @click.option('-M', '--max-sectors', type=int,
@@ -131,12 +133,13 @@
 @click.option('-k', '--key', metavar='filename')
 @click.command(help='Create a signed or unsigned image')
 def sign(key, align, version, header_size, pad_header, slot_size, pad,
-         max_sectors, overwrite_only, infile, outfile):
+         max_sectors, overwrite_only, endian, infile, outfile):
     img = image.Image.load(infile, version=decode_version(version),
                            header_size=header_size, pad_header=pad_header,
                            pad=pad, align=int(align), slot_size=slot_size,
                            max_sectors=max_sectors,
-                           overwrite_only=overwrite_only)
+                           overwrite_only=overwrite_only,
+                           endian=endian)
     key = load_key(key) if key else None
     img.sign(key)
 
diff --git a/scripts/imgtool/image.py b/scripts/imgtool/image.py
index 1e8d243..7a6111d 100644
--- a/scripts/imgtool/image.py
+++ b/scripts/imgtool/image.py
@@ -50,18 +50,26 @@
     0x35, 0x52, 0x50, 0x0f,
     0x2c, 0xb6, 0x79, 0x80, ])
 
+STRUCT_ENDIAN_DICT = {
+        'little': '<',
+        'big':    '>'
+}
+
 class TLV():
-    def __init__(self):
+    def __init__(self, endian):
         self.buf = bytearray()
+        self.endian = endian
 
     def add(self, kind, payload):
         """Add a TLV record.  Kind should be a string found in TLV_VALUES above."""
-        buf = struct.pack('<BBH', TLV_VALUES[kind], 0, len(payload))
+        e = STRUCT_ENDIAN_DICT[self.endian]
+        buf = struct.pack(e + 'BBH', TLV_VALUES[kind], 0, len(payload))
         self.buf += buf
         self.buf += payload
 
     def get(self):
-        header = struct.pack('<HH', TLV_INFO_MAGIC, TLV_INFO_SIZE + len(self.buf))
+        e = STRUCT_ENDIAN_DICT[self.endian]
+        header = struct.pack(e + 'HH', TLV_INFO_MAGIC, TLV_INFO_SIZE + len(self.buf))
         return header + bytes(self.buf)
 
 class Image():
@@ -89,7 +97,7 @@
 
     def __init__(self, version=None, header_size=IMAGE_HEADER_SIZE, pad=0,
                  align=1, slot_size=0, max_sectors=DEFAULT_MAX_SECTORS,
-                 overwrite_only=False):
+                 overwrite_only=False, endian="little"):
         self.version = version or versmod.decode_version("0")
         self.header_size = header_size or IMAGE_HEADER_SIZE
         self.pad = pad
@@ -97,11 +105,12 @@
         self.slot_size = slot_size
         self.max_sectors = max_sectors
         self.overwrite_only = overwrite_only
+        self.endian = endian
 
     def __repr__(self):
         return "<Image version={}, header_size={}, base_addr={}, \
                 align={}, slot_size={}, max_sectors={}, overwrite_only={}, \
-                format={}, payloadlen=0x{:x}>".format(
+                endian={} format={}, payloadlen=0x{:x}>".format(
                     self.version,
                     self.header_size,
                     self.base_addr if self.base_addr is not None else "N/A",
@@ -109,6 +118,7 @@
                     self.slot_size,
                     self.max_sectors,
                     self.overwrite_only,
+                    self.endian,
                     self.__class__.__name__,
                     len(self.payload))
 
@@ -131,7 +141,7 @@
     def sign(self, key):
         self.add_header(key)
 
-        tlv = TLV()
+        tlv = TLV(self.endian)
 
         # Note that ecdsa wants to do the hashing itself, which means
         # we get to hash it twice.
@@ -161,7 +171,8 @@
 
         flags = 0
 
-        fmt = ('<' +
+        e = STRUCT_ENDIAN_DICT[self.endian]
+        fmt = (e +
             # type ImageHdr struct {
             'I' +   # Magic uint32
             'I' +   # LoadAddr uint32
