1#!/usr/bin/env python2 2# 3# Copyright (C) 2020 Rockchip Electronics Co., Ltd 4# 5# SPDX-License-Identifier: GPL-2.0+ 6# 7""" 8A script to decode bl31.elf to binary 9""" 10 11# pip install pyelftools 12from elftools.elf.elffile import ELFFile 13 14ELF_SEG_P_TYPE='p_type' 15ELF_SEG_P_PADDR='p_paddr' 16 17def generate_atf_binary(bl31_file_name): 18 with open(bl31_file_name) as bl31_file: 19 bl31 = ELFFile(bl31_file) 20 num = bl31.num_segments() 21 for i in range(num): 22 seg = bl31.get_segment(i) 23 if ('PT_LOAD' == seg.__getitem__(ELF_SEG_P_TYPE)): 24 paddr = seg.__getitem__(ELF_SEG_P_PADDR) 25 file_name = 'bl31_0x%08x.bin' % paddr 26 with open(file_name, "wb") as atf: 27 atf.write(seg.data()); 28 29def main(): 30 bl31_elf="./bl31.elf" 31 generate_atf_binary(bl31_elf); 32 33if __name__ == "__main__": 34 main() 35