5 Commits

Author SHA1 Message Date
cc9e198164 [修改] MBL、NSPE支持Linux下make编译
[详细说明]
    1. 增加build_date.sh支持编译时间生成;
    2. 增加xxx_afterbuild.sh脚本,支持elf文件生成;
    3. MBL修改Project目录大小写错误导致的编译失败问题;
    4. 修改头文件目录分隔符心解决编译失败问题;
2023-06-13 15:53:18 +00:00
a38081a71d [修改] .gitignore更新 2023-06-13 15:52:54 +00:00
a37460118b [修改] 临时将工具链以软链形式关联 2023-06-13 15:51:47 +00:00
caa30d12e9 [修改] 输出目录修改为output 2023-06-13 15:49:21 +00:00
04ef4ce611 [修改] 增加Linux环境支持
[详细说明]
    1. Cmake兼容Linux环境;
    2.解决MBL工程目录错误导致的编译失败问题;
2023-06-05 15:36:05 +00:00
29 changed files with 175 additions and 96 deletions

8
.gitignore vendored
View File

@ -1,3 +1,11 @@
_build_date.h
.cmake/
output/
scripts/images/
# MBL
## Keil Project
MBL/Project/KEIL/*.ini

View File

@ -10,8 +10,6 @@ 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

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

@ -1,6 +0,0 @@
//LOAD "..\\..\\..\\ROM-EXPORT\\symbol\\rom.axf" incremental
LOAD "..\\..\\..\\MBL\\project\\KEIL\\mbl\\Objects\\mbl.axf" incremental
LOAD "..\\..\\..\\PROT\\project\\KEIL\\secure_main\\Gdm32\\Objects\\prot.axf" incremental
LOAD "..\\..\\..\\NSPE\\Project\\WIFI_IOT\\KEIL\\nspe\\output\\nspe.axf" incremental
RESET

View File

@ -1,4 +0,0 @@
LOAD "mbl_ns\\Objects\\mbl-ns.axf" incremental
LOAD "..\\..\\..\\NSPE\\Project\\WIFI_IOT\\KEIL\\wifi_iot\\output\\nspe.axf" incremental
RESET

View File

@ -58,10 +58,17 @@ target_add_scatter_file(${TARGET_EXE}
target_link_options(${TARGET_EXE}
PUBLIC
-Wl,--just-symbols=${PROJECT_SOURCE_DIR}/ROM-EXPORT/symbol/rom_symbol.gcc
-Wl,-Map=${RUNTIME_OUTPUT_DIRECTORY}/${TARGET_EXE}.map
-Wl,-Map=${TAGET_PROJECT_DIR}/GCC/output/bin/${TARGET_EXE}.map
)
add_custom_command(TARGET ${TARGET_EXE} POST_BUILD
if(CMAKE_HOST_UNIX)
add_custom_command(TARGET ${TARGET_EXE} POST_BUILD
COMMAND ${TAGET_PROJECT_DIR}/mbl_afterbuild.sh ${TAGET_PROJECT_DIR}/GCC/output/bin ${TARGET_EXE} GCC \"\"
COMMENT "Building ${TARGET_EXE}"
)
elseif(CMAKE_HOST_WIN32)
add_custom_command(TARGET ${TARGET_EXE} POST_BUILD
COMMAND ${TAGET_PROJECT_DIR}/mbl_afterbuild.bat ${TAGET_PROJECT_DIR}/GCC/output/bin ${TARGET_EXE} GCC \"\"
COMMENT "Building ${TARGET_EXE}"
)
)
endif()

View File

@ -23,18 +23,25 @@ CLEAN_ALL :=
#==============================================================================#
# Compile configure
#==============================================================================#
CROSS_COMPILE ?=
#==============================================================================#
# Target
#==============================================================================#
.PHONY: all $(BUILD_ALL) $(CLEAN_ALL)
all: check_env $(BUILD_ALL)
$(MAKE) -C $(CMAKE_DIR) -j$(MULTI_CORES)
@$(MAKE) -C $(CMAKE_DIR) -j$(MULTI_CORES)
check_env:
if [ ! -e $(CMAKE_DIR) ]; then \
@if [ ! -e $(OUTPUT_DIR) ]; then mkdir -p $(OUTPUT_DIR); fi;
@if [ ! -e $(CMAKE_DIR) ]; then \
mkdir -p $(CMAKE_DIR); \
cmake -G "Unix Makefiles" \
-DCMAKE_TOOLCHAIN_FILE:PATH=$(SDK_TOP)/scripts/cmake/toolchain.cmake \
-S $(LOCAL_DIR) -B $(CMAKE_DIR); \
-S $(LOCAL_DIR) -B $(CMAKE_DIR) \
-DCMAKE_TOOLCHAIN_FILE:PATH=$(SDK_TOP)/scripts/cmake/toolchain.cmake; \
fi;
clean: check_env $(CLEAN_ALL)
@rm -rf $(CMAKE_DIR) $(OUTPUT_DIR)

View File

@ -0,0 +1,7 @@
#!/bin/bash
DIR=$1
echo "/* Do not change the content here, it's auto generated */" > ${DIR}/WIFI_IOT/common/_build_date.h
echo "#define BUILD_DATE \"$(date +"%Y/%m/%d %H:%M")\"" >> ${DIR}/WIFI_IOT/common/_build_date.h
echo "#define DATE_GENERATED" >> ${DIR}/WIFI_IOT/common/_build_date.h

61
NSPE/Project/WIFI_IOT/nspe_afterbuild.sh Normal file → Executable file
View File

@ -1,44 +1,53 @@
#!/bin/bash
#set -x
#echo "Args: $@"
OUTPUT_PATH=$1
TOOLKIT=$2
TOOLKIT_PATH=$3
"OUTPUT_PATH=%OUTPUT_PATH:/=\%"
OUTPUT_PATH=${OUTPUT_PATH%/}
ROOT=$(realpath ${OUTPUT_PATH}/../../../../../..)
echo TOOLKIT=%TOOLKIT%
echo TOOLKIT_PATH=%TOOLKIT_PATH%
TOOLKIT=${TOOLKIT}
TOOLKIT_PATH=${TOOLKIT_PATH}
set ROOT=%OUTPUT_PATH%\..\..\..\..\..\..
set INDEX=0
set OUTPUT_IMAGE_PATH=%ROOT%\scripts\images
set SREC_CAT=%ROOT%\scripts\imgtool\srec_cat.exe
set OUTPUT_FILE=nspe
INDEX=0
SREC_CAT=/usr/bin/srec_cat
IF EXIST %OUTPUT_PATH%\..\nspe* del %OUTPUT_PATH%\..\nspe*
OUTPUT_FILE=nspe
OUTPUT_IMAGE_PATH=${ROOT}/scripts/images
if "%TOOLKIT%" == "KEIL" (
mkdir -p ${OUTPUT_PATH}
if [ -n "$(ls ${OUTPUT_PATH}/../nspe*)" ]; then
rm -rf ${OUTPUT_PATH}/../nspe*
fi
if [ "${TOOLKIT}" == "KEIL" ]; then
# Generate txt for debug
%TOOLKIT_PATH%\ARM\ARMCC\bin\fromelf.exe --text -c -d --output=%OUTPUT_PATH%\..\%OUTPUT_FILE%.txt %OUTPUT_PATH%\%OUTPUT_FILE%.axf
${TOOLKIT_PATH}/ARM/ARMCC/bin/fromelf.exe --text -c -d --output=${OUTPUT_PATH}/../${OUTPUT_FILE}.txt ${OUTPUT_PATH}/${OUTPUT_FILE}.axf
# Generate binary image
%TOOLKIT_PATH%\ARM\ARMCC\bin\fromelf.exe --bin --8x1 --bincombined --output=%OUTPUT_PATH%\..\nspe.bin %OUTPUT_PATH%\%OUTPUT_FILE%.axf
)
if "%TOOLKIT%" == "IAR" (
${TOOLKIT_PATH}/ARM/ARMCC/bin/fromelf.exe --bin --8x1 --bincombined --output=${OUTPUT_PATH}/../nspe.bin ${OUTPUT_PATH}/${OUTPUT_FILE}.axf
elif [ "${TOOLKIT}" == "IAR" ]; then
# Generate ASM file
%TOOLKIT_PATH%\bin\ielfdumparm.exe %OUTPUT_PATH%\%OUTPUT_FILE%.axf --output %OUTPUT_PATH%\..\%OUTPUT_FILE%.asm --code
${TOOLKIT_PATH}/bin/ielfdumparm.exe ${OUTPUT_PATH}/${OUTPUT_FILE}.axf --output ${OUTPUT_PATH}/../${OUTPUT_FILE}.asm --code
# Generate binary image
%TOOLKIT_PATH%\bin\ielftool.exe %OUTPUT_PATH%\%OUTPUT_FILE%.axf --bin %OUTPUT_PATH%\..\%OUTPUT_FILE%.bin
)
if "%TOOLKIT%" == "GCC" (
arm-none-eabi-objdump -xS %OUTPUT_PATH%\%OUTPUT_FILE%.axf > %OUTPUT_PATH%\..\%OUTPUT_FILE%.txt
arm-none-eabi-objcopy -Obinary %OUTPUT_PATH%\%OUTPUT_FILE%.axf %OUTPUT_PATH%\..\%OUTPUT_FILE%.bin
)
${TOOLKIT_PATH}/bin/ielftool.exe ${OUTPUT_PATH}/${OUTPUT_FILE}.axf --bin ${OUTPUT_PATH}/../${OUTPUT_FILE}.bin
elif [ "${TOOLKIT}" == "GCC" ]; then
arm-none-eabi-objdump -xS ${OUTPUT_PATH}/${OUTPUT_FILE}.axf > ${OUTPUT_PATH}/../${OUTPUT_FILE}.txt
arm-none-eabi-objcopy -Obinary ${OUTPUT_PATH}/${OUTPUT_FILE}.axf ${OUTPUT_PATH}/../${OUTPUT_FILE}.bin
fi
mkdir -p ${OUTPUT_IMAGE_PATH}
# Copy nspe.bin to the image path as ota image
copy %OUTPUT_PATH%\..\nspe.bin %OUTPUT_IMAGE_PATH%\image-ota.bin
cp -rf ${OUTPUT_PATH}/../nspe.bin ${OUTPUT_IMAGE_PATH}/image-ota.bin
# concatenate mbl-ns.bin and nspe.bin
%SREC_CAT% %OUTPUT_IMAGE_PATH%\mbl-ns.bin -Binary -offset 0 %OUTPUT_PATH%\..\nspe.bin -Binary -offset 0xa000 -fill 0xFF 0x7FFC 0xA000 -o %OUTPUT_IMAGE_PATH%\image-all.bin -Binary
# Convert to HEX file
if exist %OUTPUT_IMAGE_PATH%\image-all.bin %SREC_CAT% %OUTPUT_IMAGE_PATH%\image-all.bin -Binary -offset 0x0C000000 -o %OUTPUT_IMAGE_PATH%\image-all.hex -Intel
${SREC_CAT} ${OUTPUT_IMAGE_PATH}/mbl-ns.bin -Binary -offset 0 ${OUTPUT_PATH}/../nspe.bin -Binary -offset 0xa000 -fill 0xFF 0x7FFC 0xA000 -o ${OUTPUT_IMAGE_PATH}/image-all.bin -Binary
# Convert to HEX file
if [ -e ${OUTPUT_IMAGE_PATH}/image-all.bin ]; then
${SREC_CAT} ${OUTPUT_IMAGE_PATH}/image-all.bin -Binary -offset 0x0C000000 -o ${OUTPUT_IMAGE_PATH}/image-all.hex -Intel
fi

View File

@ -53,6 +53,13 @@ target_sources(app
_build_date.h
)
if(CMAKE_HOST_UNIX)
set(BUILD_DATE_SCRIPT ${TAGET_PROJECT_DIR}/build_date.sh)
elseif(CMAKE_HOST_WIN32)
set(BUILD_DATE_SCRIPT ${TAGET_PROJECT_DIR}/build_date.bat)
endif()
message("Build script: ${BUILD_DATE_SCRIPT}")
add_custom_command(OUTPUT _build_date.h
COMMAND ${TAGET_PROJECT_DIR}/build_date.bat ${PROJECT_SOURCE_DIR}/NSPE
COMMAND ${BUILD_DATE_SCRIPT} ${PROJECT_SOURCE_DIR}/NSPE
)

View File

@ -38,7 +38,7 @@ OF SUCH DAMAGE.
#include "bsp_inc.h"
#include "debug_print.h"
#include "trng.h"
#include "mbedtls\md5.h"
#include "mbedtls/md5.h"
unsigned char btrng_seed = 1;
static unsigned int randPool; /* Pool of randomness. */

View File

@ -1,3 +0,0 @@
/* Do not change the content here, it's auto generated */
#define BUILD_DATE "2022/12/07 16:07:03"
#define DATE_GENERATED

View File

@ -6,3 +6,10 @@
1. 基于官网 GD32W51x v1.0.3开发;
2. 加入source + lunch支持
### 环境配置
1. 临时增加工具链信息
```shell
ln -snf /opt/toolchains/gcc-arm-none-eabi/ prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8
```

View File

@ -35,25 +35,25 @@ OF SUCH DAMAGE.
#ifndef __ROM_EXPORT_MBEDTLS_H__
#define __ROM_EXPORT_MBEDTLS_H__
#include "mbedtls\md5.h"
#include "mbedtls\sha1.h"
#include "mbedtls\sha256.h"
#include "mbedtls\sha512.h"
#include "mbedtls\md.h"
#include "mbedtls\cipher.h"
#include "mbedtls\ssl_ciphersuites.h"
#include "mbedtls\dhm.h"
#include "mbedtls\ecdh.h"
#include "mbedtls\ecp.h"
#include "mbedtls\pk.h"
#include "mbedtls\ecp.h"
#include "mbedtls\x509_crt.h"
#include "mbedtls\bignum.h"
#include "mbedtls\ctr_drbg.h"
#include "mbedtls\ssl_ticket.h"
#include "mbedtls\ssl_cookie.h"
#include "mbedtls\base64.h"
#include "mbedtls\platform.h"
#include "mbedtls\memory_buffer_alloc.h"
#include "mbedtls/md5.h"
#include "mbedtls/sha1.h"
#include "mbedtls/sha256.h"
#include "mbedtls/sha512.h"
#include "mbedtls/md.h"
#include "mbedtls/cipher.h"
#include "mbedtls/ssl_ciphersuites.h"
#include "mbedtls/dhm.h"
#include "mbedtls/ecdh.h"
#include "mbedtls/ecp.h"
#include "mbedtls/pk.h"
#include "mbedtls/ecp.h"
#include "mbedtls/x509_crt.h"
#include "mbedtls/bignum.h"
#include "mbedtls/ctr_drbg.h"
#include "mbedtls/ssl_ticket.h"
#include "mbedtls/ssl_cookie.h"
#include "mbedtls/base64.h"
#include "mbedtls/platform.h"
#include "mbedtls/memory_buffer_alloc.h"
#endif // __ROM_EXPORT_MBEDTLS_H__

View File

@ -21,3 +21,4 @@ LOCAL_KERNEL := prebuilts/qemu-kernel/mips/kernel-qemu
PRODUCT_COPY_FILES += \
$(LOCAL_KERNEL):kernel
OUT_DIR := $(TOPDIR)output

View File

@ -0,0 +1 @@
/opt/toolchains/gcc-arm-none-eabi/

View File

@ -1,8 +1,8 @@
set(CMAKE_SYSTEM_NAME Generic)
set(CROSS_COMPILE arm-none-eabi)
find_program(CMAKE_C_COMPILER ${CROSS_COMPILE}-gcc)
find_program(CMAKE_CXX_COMPILER ${CROSS_COMPILE}-g++)
set(CROSS_COMPILE arm-none-eabi-)
find_program(CMAKE_C_COMPILER ${CROSS_COMPILE}gcc)
find_program(CMAKE_CXX_COMPILER ${CROSS_COMPILE}g++)
set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})