#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # Copyright (C) 2017-2020 The Project X-Ray Authors. # # Use of this source code is governed by a ISC-style # license that can be found in the LICENSE file or at # https://opensource.org/licenses/ISC # # SPDX-License-Identifier: ISC ''' Extract the frames from the output of the prjxray bitread tool. ''' import sys import re def extract_frames(args): """ Extract the frame addresses and the corresponding content """ frames_dict = dict() with open(args[1], 'r') as f: parse_frames = False for cnt, line in enumerate(f): if line.startswith("\n"): parse_frames = False continue line = line.strip() if not parse_frames and not line.startswith("Frame"): continue if line.startswith("Frame"): match = re.match("Frame 0x([0-9a-fA-F]+) ", line) frame_addr = "0x" + match.group(1).upper() parse_frames = True frames_dict[frame_addr] = list() continue for frame in line.split(): frames_dict[frame_addr].append("0x" + frame.upper()) for addr, words in frames_dict.items(): print("{addr} {words}".format(addr=addr, words=",".join(words))) if __name__ == "__main__": extract_frames(sys.argv)