diff --git a/scripts/generate_binaries.py b/scripts/generate_binaries.py
new file mode 100755
index 0000000..f206cf8
--- /dev/null
+++ b/scripts/generate_binaries.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+
+#
+# Copyright (c) 2021 Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the License); you may
+# not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+import argparse
+import os
+import re
+import subprocess
+import sys
+import elftools.elf.elffile as elffile
+
+def generate_binaries(args):
+    load_segments = [];
+    with open(args.input, 'rb') as f:
+        elf = elffile.ELFFile(f)
+        for segment in elf.iter_segments():
+            if segment['p_type'] == 'PT_LOAD' and segment['p_filesz'] > 0:
+                if not os.path.exists(args.output):
+                    os.makedirs(args.output)
+                out = os.path.join(
+                        args.output,
+                        '%s_0x%08x.bin' % (os.path.basename(args.input), segment['p_paddr']))
+                with open(out, 'wb') as of:
+                    of.write(segment.data())
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Generate binaries from ELF file')
+    parser.add_argument('-o', '--output', default='.', required=False, help='Output directory for binaries')
+    parser.add_argument('input', metavar='inputfile', type=str, help='ELF file to extract binaries from')
+
+    args = parser.parse_args()
+
+    generate_binaries(args)
