129 lines
3.7 KiB
Plaintext
129 lines
3.7 KiB
Plaintext
|
;*******************************************************************************
|
||
|
; Copyright 2023 NXP *
|
||
|
; SPDX-License-Identifier: Apache-2.0 *
|
||
|
; *
|
||
|
; Lauterbach Trace32 start-up script for S32K146 / Cortex-M4F *
|
||
|
; *
|
||
|
; Parameters: *
|
||
|
; - command operation to execute *
|
||
|
; valid values: flash, debug *
|
||
|
; - elfFile filepath of ELF to load *
|
||
|
; - loadTo if "flash", the application will be downloaded to SoC *
|
||
|
; program flash by a flash programming routine; if "sram" it *
|
||
|
; will be downloaded to SoC SRAM. *
|
||
|
; valid values: flash, sram *
|
||
|
; default: flash *
|
||
|
; - eraseFlash if set to "yes", the whole content in Flash device will be *
|
||
|
; erased before the application is downloaded to either Flash *
|
||
|
; or SRAM. This routine takes time to execute *
|
||
|
; default: "no" *
|
||
|
; - verifyFlash if set to "yes", verify after program application to Flash *
|
||
|
; default: "no" *
|
||
|
;*******************************************************************************
|
||
|
|
||
|
ENTRY %LINE &args
|
||
|
|
||
|
&command=STRing.SCANAndExtract("&args","command=","")
|
||
|
&elfFile=STRing.SCANAndExtract("&args","elfFile=","")
|
||
|
&loadTo=STRing.SCANAndExtract("&args","loadTo=","flash")
|
||
|
&eraseFlash=STRing.SCANAndExtract("&args","eraseFlash=","no")
|
||
|
&verifyFlash=STRing.SCANAndExtract("&args","verifyFlash=","no")
|
||
|
|
||
|
IF ("&elfFile"=="")
|
||
|
(
|
||
|
AREA.view
|
||
|
PRINT %ERROR "Missing ELF file path"
|
||
|
PLIST
|
||
|
STOP
|
||
|
ENDDO
|
||
|
)
|
||
|
|
||
|
; Initialize debugger
|
||
|
RESet
|
||
|
SYStem.RESet
|
||
|
SYStem.CPU S32K146
|
||
|
SYStem.CONFIG.DEBUGPORTTYPE SWD
|
||
|
SYStem.Option DUALPORT ON
|
||
|
SYStem.MemAccess DAP
|
||
|
SYStem.JtagClock CTCK 10MHz
|
||
|
Trace.DISable
|
||
|
SYStem.Up
|
||
|
|
||
|
GOSUB DisableBootrom
|
||
|
|
||
|
; Only declares flash, does not execute flash programming
|
||
|
DO ~~/demo/arm/flash/s32k.cmm PREPAREONLY
|
||
|
|
||
|
IF ("&eraseFlash"=="yes")
|
||
|
(
|
||
|
FLASH.Erase ALL
|
||
|
)
|
||
|
|
||
|
IF ("&loadTo"=="flash")
|
||
|
(
|
||
|
; Switch target flash to reprogramming state, erase virtual flash programming memory,
|
||
|
; all target non-empty flash sectors are marked as pending, to be reprogrammed.
|
||
|
FLASH.ReProgram ALL /Erase
|
||
|
|
||
|
; Write contents of the file to virtual Flash programming memory
|
||
|
Data.LOAD.Elf &elfFile
|
||
|
|
||
|
; Program only changed sectors to target flash and erase obsolete code
|
||
|
FLASH.ReProgram off
|
||
|
|
||
|
IF ("&verifyFlash"=="yes")
|
||
|
(
|
||
|
Data.LOAD.Elf &elfFile /DIFF
|
||
|
|
||
|
IF FOUND()
|
||
|
(
|
||
|
AREA.view
|
||
|
PRINT %ERROR "Failed to download the code to flash"
|
||
|
Data.LOAD.Elf &elfFile /ComPare
|
||
|
ENDDO
|
||
|
)
|
||
|
)
|
||
|
|
||
|
; Reset the processor again
|
||
|
SYStem.Up
|
||
|
GOSUB DisableBootrom
|
||
|
)
|
||
|
ELSE
|
||
|
(
|
||
|
; Load program to SRAM
|
||
|
Data.LOAD.Elf &elfFile
|
||
|
)
|
||
|
|
||
|
IF ("&command"=="flash")
|
||
|
(
|
||
|
; Execute the application and quit
|
||
|
Go
|
||
|
QUIT
|
||
|
)
|
||
|
ELSE IF ("&command"=="debug")
|
||
|
(
|
||
|
; Setup minimal debug environment
|
||
|
WinCLEAR
|
||
|
SETUP.Var.%SpotLight
|
||
|
WinPOS 0. 0. 120. 30.
|
||
|
List.auto
|
||
|
WinPOS 125. 0. 80. 10.
|
||
|
Frame.view
|
||
|
WinPOS 125. 18.
|
||
|
Register.view /SpotLight
|
||
|
)
|
||
|
ELSE
|
||
|
(
|
||
|
AREA.view
|
||
|
PRINT %ERROR "Invalid command: &command"
|
||
|
)
|
||
|
|
||
|
ENDDO
|
||
|
|
||
|
DisableBootrom:
|
||
|
(
|
||
|
Data.Set SD:0x4007F010 %LE %Long 0x6
|
||
|
Data.Set SD:0x4007F014 %LE %Long 0x0
|
||
|
RETURN
|
||
|
)
|