74 lines
2.4 KiB
Batchfile
74 lines
2.4 KiB
Batchfile
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
:: File Name: elf2c.bat
|
|
::
|
|
:: Description:
|
|
:: Basic batch script to convert the programmable sections of an *.elf file
|
|
:: into a basic c array. This uses objcopy and python.
|
|
::
|
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
:: Copyright 2019-2021 Cypress Semiconductor Corporation (an Infineon company)
|
|
:: or an affiliate of Cypress Semiconductor Corporation
|
|
::
|
|
:: 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
|
|
::
|
|
:: http://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.
|
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: Path to Elf2Bin tool
|
|
::set ELF2BIN=C:/Program Files (x86)/GNU Tools ARM Embedded/7 2018-q2-update/bin/arm-none-eabi-objcopy.exe
|
|
set ELF2BIN=%USERPROFILE%\ModusToolbox\tools_2.1\gcc-7.2.1\bin\arm-none-eabi-objcopy.exe
|
|
|
|
:: Check ELF2BIN
|
|
@if not exist "%ELF2BIN%" (
|
|
@echo Error: %ELF2BIN% is not found, exiting
|
|
@exit /b 1
|
|
)
|
|
|
|
:: Check python
|
|
@python --version
|
|
@if ERRORLEVEL 1 (
|
|
@echo Error: python executable is not found, exiting
|
|
@exit /b 1
|
|
)
|
|
|
|
:: Convert ELF to C
|
|
@call :elf2c %* || goto :error
|
|
@exit /b 0
|
|
|
|
:error
|
|
@echo Error: failed to convert ELF to C
|
|
@exit /b 1
|
|
|
|
:: This function converts ELF executable to C file
|
|
:: Additionally, it generates HEX file
|
|
:: arg#1: path to ELF file
|
|
:: arg#2: path to C file
|
|
:: arg#3: C preprocessor guard macro (optional)
|
|
:elf2c
|
|
@if "%2" == "" (
|
|
@echo Error: expected 2 or 3 arguments: ^<path-to-elf^> ^<path-to-c^> [c-macro]
|
|
exit /b 1
|
|
)
|
|
@set ELF_PATH=%1
|
|
@set HEX_PATH=%~dpn1.hex
|
|
@set BIN_PATH=%~dpn1.bin
|
|
@set C_PATH=%2
|
|
@set C_MACRO=%3
|
|
@if not exist "%ELF_PATH%" (
|
|
@echo Error: %ELF_PATH% is not found, exiting
|
|
goto :eof
|
|
)
|
|
"%ELF2BIN%" -O ihex "%ELF_PATH%" "%HEX_PATH%" || goto :eof
|
|
"%ELF2BIN%" -O binary "%ELF_PATH%" "%BIN_PATH%" || goto :eof
|
|
python "%~dp0bin2c.py" "%BIN_PATH%" "%C_PATH%" "%C_MACRO%" || goto :eof
|
|
@echo Successfully converted %ELF_PATH% to %C_PATH%
|
|
@goto :eof
|