50 lines
2.0 KiB
Ruby
50 lines
2.0 KiB
Ruby
#!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) |