#!env ruby # Copyright (c) 2018(-2023) STMicroelectronics. # All rights reserved. # # This file is part of the TouchGFX 4.21.2 distribution. # # This software is licensed under terms that can be found in the LICENSE file in # the root directory of this software component. # If no LICENSE file comes with this software, it is provided AS-IS. # ###############################################################################/ require 'fileutils' ###### SETUP ############### input = ARGV[0] output = ARGV[1] bins = Dir[input + "/bin/*.bin"] FileUtils.mkdir_p("#{output}/obj") #Create obj folder symbol_file_name = "#{output}/obj/rename_symbols.txt" ############################################### ############### Process files ######################## bins.each do |bin| bin_file_name = File.basename(bin) puts "Generating elf32 object from binary file #{input}/bin/#{bin_file_name}..." `arm-none-eabi-objcopy.exe -B arm --rename-section .data=ExtFlashSection,contents,alloc,load,readonly,data -I binary -O elf32-littlearm #{input}/bin/#{bin_file_name} #{output}/obj/#{bin_file_name}.o` #Rename the symbols output_folder_name_subst = "#{output+'/bin'}".gsub('.', '_').gsub('/', '_') bin_file_name_subst = File.basename(bin).gsub('.', '_').gsub('/', '_') str = output_folder_name_subst + "_" + bin_file_name_subst content = "_binary_#{str}_start video_#{bin_file_name_subst}_start\n" + "_binary_#{str}_end video_#{bin_file_name_subst}_end\n" + "_binary_#{str}_size video_#{bin_file_name_subst}_size\n" puts "Renaming symbols..." FileUtils.mkdir_p(File.dirname(symbol_file_name)) unless File.exist?(symbol_file_name) && content == File.open(symbol_file_name, 'r') { |f| f.read() } File.open(symbol_file_name, 'w') { |f| f.write(content) } end # Bulk rename using objcopy --redefine-syms `arm-none-eabi-objcopy.exe --redefine-syms #{output}/obj/rename_symbols.txt #{output}/obj/#{bin_file_name}.o` end #Remove temp file FileUtils.rm(symbol_file_name)