-
Notifications
You must be signed in to change notification settings - Fork 2
/
elf2c.bat
73 lines (67 loc) · 2.38 KB
/
elf2c.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 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