| ;******************************************************************************* |
| ; 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 |
| ) |