diff --git a/.gitignore b/.gitignore index 30023e6..fc4a06a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -build/ +.cmake/ +output/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0d60fdd --- /dev/null +++ b/Makefile @@ -0,0 +1,40 @@ + +#==============================================================================# +# Path information +#==============================================================================# +LOCAL_DIR := $(strip $(shell pwd)) +SDK_TOP := $(LOCAL_DIR) +CMAKE_DIR := $(LOCAL_DIR)/.cmake + +OUTPUT_DIR ?= $(LOCAL_DIR)/output +INSTALL_DIR ?= $(LOCAL_DIR)/__install + +#==============================================================================# +# Functions +#==============================================================================# + +#==============================================================================# +# Variables +#==============================================================================# +MULTI_CORES ?= $(shell grep -c ^processor /proc/cpuinfo) + +BUILD_ALL := +CLEAN_ALL := +#==============================================================================# +# Compile configure +#==============================================================================# + +#==============================================================================# +# Target +#==============================================================================# +.PHONY: all $(BUILD_ALL) $(CLEAN_ALL) +all: check_env $(BUILD_ALL) + $(MAKE) -C $(CMAKE_DIR) -j$(MULTI_CORES) + +check_env: + 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); \ + fi; diff --git a/NSPE/CMakeLists.txt b/NSPE/CMakeLists.txt index b0a7d6a..0aa3fed 100644 --- a/NSPE/CMakeLists.txt +++ b/NSPE/CMakeLists.txt @@ -57,7 +57,14 @@ target_link_options(${TARGET_EXE} -Wl,--cref ) -add_custom_command(TARGET ${TARGET_EXE} POST_BUILD - COMMAND ${TAGET_PROJECT_DIR}/nspe_afterbuild.bat ${TAGET_PROJECT_DIR}/GCC/output/bin GCC \"\" - COMMENT "Building ${TARGET_EXE}" -) \ No newline at end of file +if(CMAKE_HOST_UNIX) + add_custom_command(TARGET ${TARGET_EXE} POST_BUILD + COMMAND ${TAGET_PROJECT_DIR}/nspe_afterbuild.sh ${TAGET_PROJECT_DIR}/GCC/output/bin GCC \"\" + COMMENT "Building ${TARGET_EXE}" + ) +elseif(CMAKE_HOST_WIN32) + add_custom_command(TARGET ${TARGET_EXE} POST_BUILD + COMMAND ${TAGET_PROJECT_DIR}/nspe_afterbuild.bat ${TAGET_PROJECT_DIR}/GCC/output/bin GCC \"\" + COMMENT "Building ${TARGET_EXE}" + ) +endif() \ No newline at end of file diff --git a/NSPE/Project/WIFI_IOT/nspe_afterbuild.sh b/NSPE/Project/WIFI_IOT/nspe_afterbuild.sh new file mode 100644 index 0000000..1e30ab7 --- /dev/null +++ b/NSPE/Project/WIFI_IOT/nspe_afterbuild.sh @@ -0,0 +1,44 @@ +OUTPUT_PATH=$1 +TOOLKIT=$2 +TOOLKIT_PATH=$3 +"OUTPUT_PATH=%OUTPUT_PATH:/=\%" + +echo TOOLKIT=%TOOLKIT% +echo 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 + +IF EXIST %OUTPUT_PATH%\..\nspe* del %OUTPUT_PATH%\..\nspe* + +if "%TOOLKIT%" == "KEIL" ( + # 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 + + # 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" ( + # Generate ASM file + %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 +) + +# Copy nspe.bin to the image path as ota image +copy %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 +