[修改] MBL、NSPE支持Linux下make编译

[详细说明]
    1. 增加build_date.sh支持编译时间生成;
    2. 增加xxx_afterbuild.sh脚本,支持elf文件生成;
    3. MBL修改Project目录大小写错误导致的编译失败问题;
    4. 修改头文件目录分隔符心解决编译失败问题;
This commit is contained in:
2023-06-13 15:53:18 +00:00
parent a38081a71d
commit cc9e198164
21 changed files with 133 additions and 2843 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,28 @@
@echo off
:: Preprocess to generate ICF file
set TZ=%1
set PROJ_DIR=%2
set TOOLKIT_DIR=%3
if "%TZ%" == "TZ" (
set IFILE=%PROJ_DIR%\..\..\platform\gdm32\iar\mbl_gdm32.i
set OFILE=%PROJ_DIR%\mbl_gdm32.icf
set CMSE=-D__ARM_FEATURE_CMSE=3
) else (
set IFILE=%PROJ_DIR%\..\..\platform\gdm32\iar\mbl_gdm32_ns.i
set OFILE=%PROJ_DIR%\mbl_gdm32_ns.icf
set CMSE=
)
IF EXIST %OFILE% del %OFILE%
%TOOLKIT_DIR%\bin\iccarm.exe %IFILE% ^
--preprocess=sn ^
%OFILE% ^
-I %PROJ_DIR%\..\..\..\config ^
-I %PROJ_DIR%\..\..\platform %CMSE%
:: set CONFIG_FILE=%1
:: echo /* config_gdm32*.h symbol list */ > %PROJ_DIR%\..\..\platform\gdm32\iar\%CONFIG_FILE%.icf
:: for /f "eol=/ tokens=1,2,3" %%i in (%PROJ_DIR%\..\..\..\..\config\%CONFIG_FILE%.h )
:: do echo define exported symbol %%j = %%k; >> %PROJ_DIR%\..\..\platform\gdm32\iar\%CONFIG_FILE%.icf

View File

@ -0,0 +1,38 @@
@echo off
set OUTPUT_PATH=%1
set OUTPUT_NAME=%2
set TOOLKIT=%3
set TOOLKIT_PATH=%4
set "OUTPUT_PATH=%OUTPUT_PATH:/=\%"
set ROOT=%OUTPUT_PATH%\..\..\..\..\..
set SREC_CAT=%ROOT%\scripts\imgtool\srec_cat.exe
set OUTPUT_IMAGE_PATH=%ROOT%\scripts\images
if "%TOOLKIT%" == "KEIL" (
:: Generate txt for debug
%TOOLKIT_PATH%\ARM\ARMCC\bin\fromelf.exe --text -c -d --output=%OUTPUT_PATH%\..\%OUTPUT_NAME%.txt %OUTPUT_PATH%\%OUTPUT_NAME%.axf
:: Generate binary image
%TOOLKIT_PATH%\ARM\ARMCC\bin\fromelf.exe --bin --8x1 --bincombined --output=%OUTPUT_PATH%\..\%OUTPUT_NAME%.bin %OUTPUT_PATH%\%OUTPUT_NAME%.axf
)
if "%TOOLKIT%" == "IAR" (
:: Generate ASM file
%TOOLKIT_PATH%\bin\ielfdumparm.exe %OUTPUT_PATH%\%OUTPUT_NAME%.axf --output %OUTPUT_PATH%\..\%OUTPUT_NAME%.asm --code
:: Generate binary image
%TOOLKIT_PATH%\bin\ielftool.exe %OUTPUT_PATH%\%OUTPUT_NAME%.axf --bin %OUTPUT_PATH%\..\%OUTPUT_NAME%.bin
)
if "%TOOLKIT%" == "GCC" (
arm-none-eabi-objdump -xS %OUTPUT_PATH%\%OUTPUT_NAME%.axf > %OUTPUT_PATH%\..\%OUTPUT_NAME%.txt
arm-none-eabi-objcopy -Obinary %OUTPUT_PATH%\%OUTPUT_NAME%.axf %OUTPUT_PATH%\..\%OUTPUT_NAME%.bin
)
IF EXIST %OUTPUT_IMAGE_PATH%\%OUTPUT_NAME%* del %OUTPUT_IMAGE_PATH%\%OUTPUT_NAME%*
:: Copy to output image path
copy %OUTPUT_PATH%\..\%OUTPUT_NAME%.bin %OUTPUT_IMAGE_PATH%\
:: Generate Hex file
%SREC_CAT% %OUTPUT_IMAGE_PATH%\%OUTPUT_NAME%.bin -Binary -offset 0x0C000000 -o %OUTPUT_IMAGE_PATH%\%OUTPUT_NAME%.hex -Intel
::exit

40
MBL/Project/mbl_afterbuild.sh Executable file
View File

@ -0,0 +1,40 @@
#!/bin/bash
#set -x
#echo "Args: $@"
OUTPUT_PATH=$1
OUTPUT_NAME=$2
TOOLKIT=$3
TOOLKIT_PATH=$4
OUTPUT_PATH=${OUTPUT_PATH%/}
ROOT=$(realpath ${OUTPUT_PATH}/../../../../..)
SREC_CAT=/usr/bin/srec_cat
OUTPUT_IMAGE_PATH=${ROOT}/scripts/images
if [ "${TOOLKIT}" == "KEIL" ]; then
# Generate txt for debug
${TOOLKIT_PATH}/ARM/ARMCC/bin/fromelf.exe --text -c -d --output=${OUTPUT_PATH}/../${OUTPUT_NAME}.txt ${OUTPUT_PATH}/${OUTPUT_NAME}.axf
# Generate binary image
%TOOLKIT_PATH%/ARM/ARMCC/bin/fromelf.exe --bin --8x1 --bincombined --output=${OUTPUT_PATH}/../${OUTPUT_NAME}.bin ${OUTPUT_PATH}/${OUTPUT_NAME}.axf
elif [ "${TOOLKIT}" == "IAR" ]; then
# Generate ASM file
%TOOLKIT_PATH%/bin/ielfdumparm.exe ${OUTPUT_PATH}/${OUTPUT_NAME}.axf --output ${OUTPUT_PATH}/../${OUTPUT_NAME}.asm --code
# Generate binary image
%TOOLKIT_PATH%/bin/ielftool.exe ${OUTPUT_PATH}/${OUTPUT_NAME}.axf --bin ${OUTPUT_PATH}/../${OUTPUT_NAME}.bin
elif [ "${TOOLKIT}" == "GCC" ]; then
arm-none-eabi-objdump -xS ${OUTPUT_PATH}/${OUTPUT_NAME}.axf > ${OUTPUT_PATH}/../${OUTPUT_NAME}.txt
arm-none-eabi-objcopy -Obinary ${OUTPUT_PATH}/${OUTPUT_NAME}.axf ${OUTPUT_PATH}/../${OUTPUT_NAME}.bin
fi
mkdir -p ${OUTPUT_IMAGE_PATH}
if [ -n "$(ls ${OUTPUT_IMAGE_PATH}/${OUTPUT_NAME}*)" ]; then
rm -rf ${OUTPUT_IMAGE_PATH}/${OUTPUT_NAME}*
fi
# Copy to output image path
cp ${OUTPUT_PATH}/../${OUTPUT_NAME}.bin ${OUTPUT_IMAGE_PATH}
# Generate Hex file
${SREC_CAT} ${OUTPUT_IMAGE_PATH}/${OUTPUT_NAME}.bin -Binary -offset 0x0C000000 -o ${OUTPUT_IMAGE_PATH}/${OUTPUT_NAME}.hex -Intel

View File

@ -0,0 +1,87 @@
@echo off
set SIP=%1
set AESK=%~2
set DEBUGGER=%3
set OUTPUT_PATH=%4
set OUTPUT_NAME=%5
set TOOLKIT=%6
set TOOLKIT_PATH=%7
set "OUTPUT_PATH=%OUTPUT_PATH:/=\%"
set ROOT=%OUTPUT_PATH%\..\..\..\..\..
set IMGTOOL=%ROOT%\scripts\imgtool\imgtool.py
set AESTOOL=%ROOT%\scripts\imgtool\aestool.py
set SREC_CAT=%ROOT%\scripts\imgtool\srec_cat.exe
set DLTOOL=%ROOT%\scripts\imgtool\download.py
set CONFIG_FILE=%ROOT%\config\config_gdm32_ntz.h
set OUTPUT_HEX_PATH=%ROOT%\scripts\images
set OUTPUT_FILE=%OUTPUT_PATH%\..\%OUTPUT_NAME%
:: Save Orignal Working Path
set WORK_PATH=%CD%
if "%SIP%" == "SIP" (
set ALGO=GD32W51x
) else (
set ALGO=GD32W51x_Q
)
if "%AESK%" NEQ "" (
set AES_SUFFIX=-aes
) else (
set AES_SUFFIX=
)
if "%TOOLKIT%" == "KEIL" (
:: Generate txt for debug
%TOOLKIT_PATH%\ARM\ARMCC\bin\fromelf.exe --text -c -d --output=%OUTPUT_FILE%.txt %OUTPUT_PATH%\%OUTPUT_NAME%.axf
:: Generate binary image
%TOOLKIT_PATH%\ARM\ARMCC\bin\fromelf.exe --bin --8x1 --bincombined --output=%OUTPUT_FILE%.bin %OUTPUT_PATH%\%OUTPUT_NAME%.axf
)
if "%TOOLKIT%" == "IAR" (
:: Generate ASM file
%TOOLKIT_PATH%\bin\ielfdumparm.exe %OUTPUT_PATH%\%OUTPUT_NAME%.axf --output %OUTPUT_FILE%.asm --code
:: Generate binary image
%TOOLKIT_PATH%\bin\ielftool.exe %OUTPUT_PATH%\%OUTPUT_NAME%.axf --bin %OUTPUT_FILE%.bin
)
if "%TOOLKIT%" == "GCC" (
arm-none-eabi-objdump -xS %OUTPUT_PATH%/%OUTPUT_NAME%.axf > %OUTPUT_FILE%.txt
arm-none-eabi-objcopy -Obinary %OUTPUT_PATH%/%OUTPUT_NAME%.axf %OUTPUT_FILE%.bin
)
IF EXIST %OUTPUT_HEX_PATH%\mbl_ns* del %OUTPUT_HEX_PATH%\mbl_ns*
if "%AESK%" == "" (
%SREC_CAT% %OUTPUT_FILE%.bin -Binary -offset 0x0C000000 -o %OUTPUT_FILE%.hex -Intel
) else (
:: Pad mbl.bin to 32K with 0xFF
python %IMGTOOL% pad -s 0x8000 %OUTPUT_FILE%.bin %OUTPUT_FILE%-pad.bin
:: Encrypt MBL with AES Key
python %AESTOOL% --c %CONFIG_FILE% ^
-t "MBL" ^
-i %OUTPUT_FILE%-pad.bin ^
-o %OUTPUT_FILE%-aes.bin ^
-k %AESK%
:: Convert to HEX file
%SREC_CAT% %OUTPUT_FILE%-aes.bin -Binary -offset 0x0C000000 -o %OUTPUT_FILE%-aes.hex -Intel
IF EXIST %OUTPUT_FILE%-pad.bin del %OUTPUT_FILE%-pad.bin
echo AES encrypted!
)
:: Copy to output hex path
copy %OUTPUT_FILE%%AES_SUFFIX%.bin %OUTPUT_HEX_PATH%
copy %OUTPUT_FILE%%AES_SUFFIX%.hex %OUTPUT_HEX_PATH%
:: Download to FLASH
cd %ROOT%
python %DLTOOL% -a %ALGO% -f %OUTPUT_FILE%%AES_SUFFIX%.hex --debugger %DEBUGGER%
cd %WORK_PATH%
::exit

View File

@ -0,0 +1,114 @@
@echo off
set SIP=%1
set AESK=%~2
set DEBUGGER=%3
set OUTPUT_PATH=%4
set OUTPUT_NAME=%5
set TOOLKIT=%6
set TOOLKIT_DIR=%7
set "OUTPUT_PATH=%OUTPUT_PATH:/=\%"
set ROOT=%OUTPUT_PATH%\..\..\..\..\..\
set KEY_PASSPHRASE="12345678"
set MBL_KEY=%ROOT%\scripts\certs\mbl-key.pem
set ROTPK=%ROOT%\scripts\certs\rot-key.pem
set MBL_CERT=%ROOT%\scripts\certs\mbl-cert.pem
set CONFIG_FILE=%ROOT%\config\config_gdm32.h
set SYSTOOL=%ROOT%\scripts\imgtool\sysset.py
set IMGTOOL=%ROOT%\scripts\imgtool\imgtool.py
set HEXTOOL=%ROOT%\scripts\imgtool\hextool.py
set GENTOOL=%ROOT%\scripts\imgtool\gentool.py
set AESTOOL=%ROOT%\scripts\imgtool\aestool.py
set SREC_CAT=%ROOT%\scripts\imgtool\srec_cat.exe
set DLTOOL=%ROOT%\scripts\imgtool\download.py
set OUTPUT_HEX_PATH=%ROOT%\scripts\images\
set OUTPUT_FILE=%OUTPUT_PATH%\..\%OUTPUT_NAME%
:: Save Orignal Working Path
set WORK_PATH=%CD%
if "%SIP%" == "SIP" (
set ALGO=GD32W51x_S
) else (
set ALGO=GD32W51x_Q_S
)
if "%AESK%" NEQ "" (
set AES_SUFFIX=-aes
) else (
set AES_SUFFIX=
)
:: Generate system setting hex
python %SYSTOOL% -t "SYS_SET" -c %CONFIG_FILE% %OUTPUT_HEX_PATH%\sysset.bin
:: Generate system status hex (padding with 0xFF)
:: python %SYSTOOL% -t "SYS_STATUS" -c %CONFIG_FILE% %OUTPUT_HEX_PATH%\sysstatus.bin
if "%TOOLKIT%" == "KEIL" (
:: Generate txt for debug
%TOOLKIT_DIR%\ARM\ARMCC\bin\fromelf.exe --text -c -d --output=%OUTPUT_FILE%.txt %OUTPUT_PATH%\%OUTPUT_NAME%.axf
:: Generate binary image
%TOOLKIT_DIR%\ARM\ARMCC\bin\fromelf.exe --bin --8x1 --bincombined --output=%OUTPUT_FILE%.bin %OUTPUT_PATH%\%OUTPUT_NAME%.axf
)
if "%TOOLKIT%" == "IAR" (
:: Generate ASM file
%TOOLKIT_DIR%\bin\ielfdumparm.exe %OUTPUT_PATH%\%OUTPUT_NAME%.axf --output %OUTPUT_FILE%.asm --code
:: Generate binary image
%TOOLKIT_DIR%\bin\ielftool.exe %OUTPUT_PATH%\%OUTPUT_NAME%.axf --bin %OUTPUT_FILE%.bin
)
if "%TOOLKIT%" == "GCC" (
arm-none-eabi-objdump -xS %OUTPUT_PATH%/%OUTPUT_NAME%.axf > %OUTPUT_FILE%.txt
arm-none-eabi-objcopy -Obinary %OUTPUT_PATH%/%OUTPUT_NAME%.axf %OUTPUT_FILE%.bin
)
if exist %OUTPUT_HEX_PATH%\mbl-sign.bin del %OUTPUT_HEX_PATH%\mbl-sign.bin
:: Add image header, ptlvs and concatenate the cert
python %IMGTOOL% sign --config %CONFIG_FILE% ^
-k %MBL_KEY% ^
-P %KEY_PASSPHRASE% ^
-t "MBL" ^
--cert %MBL_CERT% ^
%OUTPUT_FILE%.bin %OUTPUT_HEX_PATH%\mbl-sign.bin
python %GENTOOL% --config %CONFIG_FILE% ^
--sys_set %OUTPUT_HEX_PATH%\sysset.bin ^
--mbl %OUTPUT_HEX_PATH%\mbl-sign.bin ^
-o %OUTPUT_HEX_PATH%\mbl-sys.bin
IF EXIST %OUTPUT_HEX_PATH%\sysset.bin del %OUTPUT_HEX_PATH%\sysset.bin
IF EXIST %OUTPUT_HEX_PATH%\mbl-sign.bin del %OUTPUT_HEX_PATH%\mbl-sign.bin
if "%AESK%" == "" (
python %HEXTOOL% -c %CONFIG_FILE% ^
-t "SYS_SET" ^
-e %SREC_CAT% ^
%OUTPUT_HEX_PATH%\mbl-sys.bin ^
%OUTPUT_HEX_PATH%\mbl-sys.hex
) else (
python %IMGTOOL% pad -s 0x8000 ^
%OUTPUT_HEX_PATH%\mbl-sys.bin %OUTPUT_HEX_PATH%\mbl-sys-pad.bin
python %AESTOOL% --c %CONFIG_FILE% ^
-t "SYS_SET" ^
-i %OUTPUT_HEX_PATH%\mbl-sys-pad.bin ^
-o %OUTPUT_HEX_PATH%\mbl-sys%AES_SUFFIX%.bin ^
-k %AESK%
python %HEXTOOL% -c %CONFIG_FILE% ^
-t "SYS_SET" ^
-e %SREC_CAT% ^
%OUTPUT_HEX_PATH%\mbl-sys%AES_SUFFIX%.bin ^
%OUTPUT_HEX_PATH%\mbl-sys.hex
del %OUTPUT_HEX_PATH%\mbl-sys-pad.bin
echo Encrypted!
)
copy %OUTPUT_HEX_PATH%\mbl-sys.hex %OUTPUT_PATH%\mbl.hex
copy %OUTPUT_PATH%\mbl_cmse_Lib.o %ROOT%\NSPE\WIFI_IOT\lib\%TOOLKIT%
cd %ROOT%
python %DLTOOL% -a %ALGO% -f %OUTPUT_HEX_PATH%\mbl-sys.hex --debugger %DEBUGGER%
cd %WORK_PATH%
::exit