From 1e99e3b3289902e18266c1768ded8c67fb829cc4 Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 13 Jul 2023 11:14:05 +0700 Subject: [PATCH] correct hex file address --- ports/mimxrt10xx/Makefile | 2 +- ports/mimxrt10xx/apps/app.cmake | 5 +++- ports/mimxrt10xx/family.cmake | 43 ++++++++++++++++----------------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/ports/mimxrt10xx/Makefile b/ports/mimxrt10xx/Makefile index 9fc24fcfc..3ba312dcd 100644 --- a/ports/mimxrt10xx/Makefile +++ b/ports/mimxrt10xx/Makefile @@ -75,7 +75,7 @@ SDP_JUMP_ADDR := $(shell sed -n 's/_ivt_origin.*\(0x.*\);/\1/p' $(TOP)/$(PORT_DI $(BUILD)/$(OUTNAME).hex: $(BUILD)/$(OUTNAME).elf @echo CREATE $@ - @$(OBJCOPY) -O ihex --change-addresses $(UF2_$(MCU)_WRITE_ADDR) $^ $@ + $(OBJCOPY) -O ihex --change-addresses $$(( $(UF2_$(MCU)_WRITE_ADDR)-$(SDP_WRITE_ADDR) )) $^ $@ # SDPHOST is a variable if you need to change the path SDPHOST = sdphost diff --git a/ports/mimxrt10xx/apps/app.cmake b/ports/mimxrt10xx/apps/app.cmake index b8ccb0531..fdd536534 100644 --- a/ports/mimxrt10xx/apps/app.cmake +++ b/ports/mimxrt10xx/apps/app.cmake @@ -4,7 +4,7 @@ set(APPLICATION_ADDR 0x6000C000) function(family_add_bin_hex TARGET) add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_OBJCOPY} -O binary -R .flash_config -R .ivt $ $/${TARGET}.bin - COMMAND ${CMAKE_OBJCOPY} -Oihex -R .flash_config -R .ivt $ $/${TARGET}.hex + COMMAND ${CMAKE_OBJCOPY} -Oihex $ $/${TARGET}.hex VERBATIM) endfunction() @@ -16,6 +16,9 @@ function(configure_app TARGET) "LINKER:--script=${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../linker/common.ld" ) + family_add_bin_hex(${TARGET}) family_add_uf2(${TARGET} ${UF2_FAMILY_ID}) + family_flash_uf2(${TARGET} ${UF2_FAMILY_ID}) + family_flash_jlink(${TARGET} hex) endfunction() diff --git a/ports/mimxrt10xx/family.cmake b/ports/mimxrt10xx/family.cmake index 240497703..5db6008a1 100644 --- a/ports/mimxrt10xx/family.cmake +++ b/ports/mimxrt10xx/family.cmake @@ -60,6 +60,11 @@ set(UF2_MIMXRT1176_WRITE_ADDR 0x30000000) set(SDP_PID ${SDP_${MCU_VARIANT}_PID}) set(UF2_WRITE_ADDR ${UF2_${MCU_VARIANT}_WRITE_ADDR}) +file(STRINGS ${CMAKE_CURRENT_LIST_DIR}/linker/${MCU_VARIANT}_ram.ld FCFB_ORIGIN REGEX "_fcfb_origin *=") +file(STRINGS ${CMAKE_CURRENT_LIST_DIR}/linker/${MCU_VARIANT}_ram.ld IVT_ORIGIN REGEX "_ivt_origin *=") +string(REGEX REPLACE ".*= *(0x[0-9a-fA-F]+).*" "\\1" FCFB_ORIGIN ${FCFB_ORIGIN}) +string(REGEX REPLACE ".*= *(0x[0-9a-fA-F]+).*" "\\1" IVT_ORIGIN ${IVT_ORIGIN}) + #------------------------------------ # BOARD_TARGET #------------------------------------ @@ -123,12 +128,27 @@ endfunction() #------------------------------------ function(family_add_bin_hex TARGET) + math(EXPR HEX_OFFSET "${UF2_WRITE_ADDR} - ${FCFB_ORIGIN}") add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_OBJCOPY} -Obinary $ $/${TARGET}.bin - COMMAND ${CMAKE_OBJCOPY} -Oihex --change-addresses ${UF2_WRITE_ADDR} $ $/${TARGET}.hex + COMMAND ${CMAKE_OBJCOPY} -Oihex --change-addresses ${HEX_OFFSET} $ $/${TARGET}.hex VERBATIM) endfunction() + +function(family_flash_sdp TARGET) + if (NOT DEFINED SDPHOST) + set(SDPHOST sdphost) + endif () + + add_custom_target(${TARGET}-sdp + DEPENDS ${TARGET} + COMMAND ${SDPHOST} -u 0x1fc9,${SDP_PID} write-file ${FCFB_ORIGIN} $/${TARGET}.bin + COMMAND ${SDPHOST} -u 0x1fc9,${SDP_PID} jump-address ${IVT_ORIGIN} + ) +endfunction() + + function(family_flash_jlink TARGET) if (NOT DEFINED JLINKEXE) set(JLINKEXE JLinkExe) @@ -154,24 +174,3 @@ exit" COMMAND ${JLINKEXE} -device ${JLINK_DEVICE} -if swd -JTAGConf -1,-1 -speed auto -CommandFile ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.jlink ) endfunction() - -function(family_flash_sdp TARGET) - if (NOT DEFINED SDPHOST) - set(SDPHOST sdphost) - endif () - - file(STRINGS ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/linker/${MCU_VARIANT}_ram.ld FCFB_ORIGIN - REGEX "_fcfb_origin *=" - ) - file(STRINGS ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/linker/${MCU_VARIANT}_ram.ld IVT_ORIGIN - REGEX "_ivt_origin *=" - ) - string(REGEX REPLACE ".*= *(0x[0-9a-fA-F]+).*" "\\1" FCFB_ORIGIN ${FCFB_ORIGIN}) - string(REGEX REPLACE ".*= *(0x[0-9a-fA-F]+).*" "\\1" IVT_ORIGIN ${IVT_ORIGIN}) - - add_custom_target(${TARGET}-sdp - DEPENDS ${TARGET} - COMMAND ${SDPHOST} -u 0x1fc9,${SDP_PID} write-file ${FCFB_ORIGIN} $/${TARGET}.bin - COMMAND ${SDPHOST} -u 0x1fc9,${SDP_PID} jump-address ${IVT_ORIGIN} - ) -endfunction()