; ; @Title: Flash declaration example of EnergyMicro EFR32 BluePearl Gecko internal flash. ; ; @Description: ; Script arguments: ; ; DO efr32xg [PREPAREONLY] [CPU=] ; ; PREPAREONLY only declares flash but does not execute flash programming ; ; CPU= selects CPU derivative ; ; Example: ; ; DO ~~/demo/arm/flash/efr32xg CPU=EFM32PG12B500F1024 PREPAREONLY ; ; List of EFM32 Pearl Gecko derivatives and their configuration: ; ; CPU FlashSize RamSize ; Derivative [kB] [kB] ; -------------------------------------------------------------------------------- ; EFR32BG13P532F512 512. 64 ; EFR32BG13P632F512 512 64 ; EFR32BG13P732F512 512 64 ; EFR32BG13P733F512 512 64 ; EFR32BG21A010F512 512 64 ; EFR32BG21A010F768 768 64 ; EFR32BG21A010F1024 1024 96 ; EFR32BG21A020F512 512 64 ; EFR32BG21A020F768 768 64 ; EFR32BG21A020F1024 1024 96 ; EFR32BG22C112F352 352 32 ; EFR32BG22C222F352 352 32 ; EFR32BG22C224F512 512 32 ; EFR32BG24A010F1024 1024 128 ; EFR32BG24B110F1536 1536 256 ; EFR32BG24B210F1024 1024 128 ; EFR32BG24B220F1024 1024 128 ; EFR32BG27C140F768 768 64 ; EFR32BG27C230F768 768 64 ; EFR32BG27C320F768 768 64 ; EFR32MG1P132F256 256 32 ; EFR32MG1B232F256 256 32 ; EFR32MG1B232F256 256 32 ; EFR32MG1V132F256 256 32 ; EFR32MG12P431F1024 1024 256 ; EFR32MG12P432F1024 1024 256 ; EFR32MG12P433F1024 1024 256 ; EFR32MG12P332F1024 1024 256 ; EFR32MG12P232F1024 1024 128 ; EFR32MG12P232F512 512 64 ; EFR32MG12P232F1024 1024 128 ; EFR32MG12P231F1024 1024 128 ; EFR32MG12P132F1024 1024 128 ; EFR32MG12P132F512 512 64 ; EFR32MG12P132F1024 1024 128 ; EFR32MG13P733F512 512 64 ; EFR32MG13P732F512 512 64 ; EFR32MG13P632F512 512 64 ; EFR32MG14P733F256 256 32 ; EFR32MG14P732F256 256 32 ; EFR32MG14P731F256 256 32 ; EFR32MG14P632F256 256 32 ; EFR32FG22C121F512 512 32 ; EFR32FG23A010F256 256 32 ; EFR32FG23A010F512 512 64 ; EFR32FG23A011F512 512 64 ; EFR32FG23A020F256 256 32 ; EFR32FG23A020F512 512 64 ; EFR32FG23A021F512 512 64 ; EFR32FG23B010F128 128 32 ; EFR32FG23B010F512 512 64 ; EFR32FG23B020F128 128 32 ; EFR32FG23B020F512 512 64 ; EFR32FG25A111F1152 1152 256 ; EFR32FG25A121F1152 1152 256 ; EFR32FG25A211F1920 1920 512 ; EFR32FG25A221F1920 1920 512 ; EFR32FG25B111F1152 1152 256 ; EFR32FG25B121F1152 1152 256 ; EFR32FG25B211F1920 1920 512 ; EFR32FG25B212F1920 1920 512 ; EFR32FG25B221F1920 1920 512 ; EFR32FG25B222F1920 1920 512 ; EFR32FG28A010F1024 1024 128 ; EFR32FG28A110F1024 1024 256 ; EFR32FG28A112F1024 1024 256 ; EFR32FG28A120F1024 1024 256 ; EFR32FG28A122F1024 1024 256 ; EFR32FG28B310F1024 1024 256 ; EFR32FG28B312F1024 1024 256 ; EFR32FG28B320F1024 1024 256 ; EFR32FG28B322F1024 1024 256 ; ; @Author: MAM ; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only ; @Chip: EFR32BG* ; -------------------------------------------------------------------------------- ; $Rev: 13371 $ ; $Id: efr32xg.cmm 13371 2024-04-23 17:05:15Z mtrabelsi $ LOCAL ¶meters ¶m_prepareonly ENTRY %LINE ¶meters ¶m_prepareonly=(STRing.SCAN(STRing.UPpeR("¶meters"),"PREPAREONLY",0)!=-1) LOCAL ¶m_cpu ¶m_cpu=STRing.SCANAndExtract("¶meters","CPU=","") LOCAL &FlashSize ; ------------------------------------------------------------------------------ ; Start debugging IF SYStem.MODE()<5 ( SYStem.RESet IF "¶m_cpu"!="" SYStem.CPU ¶m_cpu IF !CPUIS(EFR32?G*) SYStem.CPU EFR32?G* SYStem.Option.ResBreak OFF IF CABLE.TWOWIRE() ( SYStem.CONFIG.DEBUGPORTTYPE SWD ) ELSE ( PRINT %ERROR "Serial Wire Debug (SWD) not supported by debug cable" ENDDO ) SYStem.JtagClock 500Khz SYStem.Attach Break ; After SYStem.Up the JTAG clock can be set to higher frequency. SYStem.JtagClock 10Mhz ) ; ------------------------------------------------------------------------------ ; Flash declaration IF CPUIS(*F256*) &FlashSize=0x40000 ELSE IF CPUIS(*F512*) &FlashSize=0x80000 ELSE IF CPUIS(*F1024*) &FlashSize=0x100000 ELSE IF CPUIS(*F1152*) &FlashSize=0x120000 ELSE IF CPUIS(*F1920*) &FlashSize=0x1E0000 ELSE ( PRINT %ERROR "FLASH size of CPU type is not supported by the script" ENDDO ) FLASH.RESet IF CPUIS(EFR32BG1*) ( FLASH.Create 1. 0x00000000++(&FlashSize-1) 0x800 TARGET Byte FLASH.TARGET 0x10000000 0x10001000 0x800 ~~/demo/arm/flash/long/efr32bg13.bin ) ELSE IF CPUIS(EFR32BG2*) ( FLASH.Create 1. 0x00000000++(&FlashSize-1) 0x2000 TARGET Byte FLASH.TARGET 0x10000000 0x10001000 0x2000 ~~/demo/arm/flash/long/efr32bg22.bin ) ELSE IF CPUIS(EFR32FG2*) ( FLASH.Create 1. 0x00000000++(&FlashSize-1) 0x2000 TARGET Byte FLASH.TARGET 0x10000000 0x10001000 0x2000 ~~/demo/arm/flash/long/efr32fg22.bin ) ELSE ( PRINT %ERROR "FLASH of CPU type is not supported by the script" ENDDO ) ; Flash script ends here if called with parameter PREPAREONLY IF ¶m_prepareonly ENDDO PREPAREDONE ; ------------------------------------------------------------------------------ ; Flash programming example DIALOG.YESNO "Program flash memory?" LOCAL &progflash ENTRY &progflash IF &progflash ( FLASH.ReProgram.ALL /Erase Data.LOAD.auto * FLASH.ReProgram.off ; Reset device SYStem.Down SYStem.Up ) ENDDO