; -------------------------------------------------------------------------------- ; @Title: Flash declaration for ST STM32L0xx internal flash ; @Description: ; Script arguments: ; DO stm32l0xx [PREPAREONLY] [CPU=] ; PREPAREONLY only declares flash but does not execute flash programming ; CPU= selects CPU derivative ; Example: ; DO ~~/demo/arm/flash/stm32l0xx PREPAREONLY ; Note: ; This file must NOT be modified. ; This file is intended to stay within TRACE32 installation. ; Usage examples are available in the ~~/demo/arm/hardware/... subdirectories. ; ; List of STM32L0xx derivatives and their configuration: ; ; CPU-Type Flash size EEPROM size SRAM size ; (kByte) (kByte) (kByte) ; -------------------------------------------------------------------------------- ; STM32L011D3 8. 0.5 2. ; STM32L011D4 16. 0.5 2. ; STM32L011E3 8. 0.5 2. ; STM32L011E4 16. 0.5 2. ; STM32L011F3 8. 0.5 2. ; STM32L011F4 16. 0.5 2. ; STM32L011G3 8. 0.5 2. ; STM32L011G4 16. 0.5 2. ; STM32L011K3 8. 0.5 2. ; STM32L011K4 16. 0.5 2. ; -------------------------------------------------------------------------------- ; STM32L021D4 16. 0.5 2. ; STM32L021F4 16. 0.5 2. ; STM32L021G4 16. 0.5 2. ; STM32L021K4 16. 0.5 2. ; -------------------------------------------------------------------------------- ; STM32L031C4 16. 1. 8. ; STM32L031C6 32. 1. 8. ; STM32L031E4 16. 1. 8. ; STM32L031E6 32. 1. 8. ; STM32L031F4 16. 1. 8. ; STM32L031F6 32. 1. 8. ; STM32L031G4 16. 1. 8. ; STM32L031G6 32. 1. 8. ; STM32L031K4 16. 1. 8. ; STM32L031K6 32. 1. 8. ; -------------------------------------------------------------------------------- ; STM32L041C6 32. 1. 8. ; STM32L041F6 32. 1. 8. ; STM32L041G6 32. 1. 8. ; STM32L041K6 32. 1. 8. ; -------------------------------------------------------------------------------- ; STM32L051C6 32. 2. 8. ; STM32L051C8 64. 2. 8. ; STM32L051K6 32. 2. 8. ; STM32L051K8 64. 2. 8. ; STM32L051R6 32. 2. 8. ; STM32L051R8 64. 2. 8. ; STM32L051T6 32. 2. 8. ; STM32L051T8 64. 2. 8. ; -------------------------------------------------------------------------------- ; STM32L052C6 32. 2. 8. ; STM32L052C8 64. 2. 8. ; STM32L052K6 32. 2. 8. ; STM32L052K8 64. 2. 8. ; STM32L052R6 32. 2. 8. ; STM32L052R8 64. 2. 8. ; STM32L052T6 32. 2. 8. ; STM32L052T8 64. 2. 8. ; STM32L062K8 64. 2. 8. ; -------------------------------------------------------------------------------- ; STM32L053C6 32. 2. 8. ; STM32L053C8 64. 2. 8. ; STM32L053R6 32. 2. 8. ; STM32L053R8 64. 2. 8. ; -------------------------------------------------------------------------------- ; STM32L063C8 64. 2. 8. ; STM32L063R8 64. 2. 8. ; -------------------------------------------------------------------------------- ; STM32L071C8 64. 3. 20. ; STM32L071CB 128. 6. 20. ; STM32L071CZ 192. 6. 20. ; STM32L071K8 64. 3. 20. ; STM32L071KB 128. 6. 20. ; STM32L071KZ 192. 6. 20. ; STM32L071RB 128. 6. 20. ; STM32L071RZ 192. 6. 20. ; STM32L071V8 64. 3. 20. ; STM32L071VB 128. 6. 20. ; STM32L071VZ 192. 6. 20. ; -------------------------------------------------------------------------------- ; STM32L072CB 128. 6. 20. ; STM32L072KB 128. 6. 20. ; STM32L072KZ 192. 6. 20. ; STM32L072RB 128. 6. 20. ; STM32L072RZ 192. 6. 20. ; STM32L072V8 64. 3. 20. ; STM32L072VB 128. 6. 20. ; STM32L072VZ 192. 6. 20. ; STM32L073CB 128. 6. 20. ; STM32L073CZ 192. 6. 20. ; -------------------------------------------------------------------------------- ; STM32L073RB 128. 6. 20. ; STM32L073RZ 192. 6. 20. ; STM32L073V8 64. 3. 20. ; STM32L073VB 128. 6. 20. ; STM32L073VZ 192. 6. 20. ; -------------------------------------------------------------------------------- ; STM32L081CZ 192. 6. 20. ; STM32L081KZ 192. 6. 20. ; -------------------------------------------------------------------------------- ; STM32L082KB 128. 6. 20. ; STM32L082KZ 192. 6. 20. ; -------------------------------------------------------------------------------- ; STM32L083CB 128. 6. 20. ; STM32L083CZ 192. 6. 20. ; STM32L083RB 128. 6. 20. ; STM32L083RZ 192. 6. 20. ; STM32L083V8 64. 3. 20. ; STM32L083VB 128. 6. 20. ; STM32L083VZ 192. 6. 20. ; -------------------------------------------------------------------------------- ; ; Flash base address is 0x08000000 ; SRAM base address is 0x20000000 ; ; @Author: FLC ; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only ; @Chip: STM32L0* ; -------------------------------------------------------------------------------- ; $Rev: 10516 $ ; $Id: stm32l0xx.cmm 10516 2022-02-02 11:39:30Z bschroefel $ LOCAL ¶meters ENTRY %LINE ¶meters LOCAL ¶m_prepareonly ¶m_prepareonly=(STRing.SCAN(STRing.UPpeR("¶meters"),"PREPAREONLY",0)!=-1) LOCAL ¶m_cpu ¶m_cpu=STRing.SCANAndExtract(STRing.UPpeR("¶meters"),"CPU=","") ; ------------------------------------------------------------------------------ ; CPU setup IF SYStem.MODE()<5 ( SYStem.RESet IF "¶m_cpu"!="" SYStem.CPU ¶m_cpu IF !CPUIS(STM32L0*) SYStem.CPU STM32L0* SYStem.Up ) Data.Set C:0x40002C00 %Long 0xFF ; ------------------------------------------------------------------------------ ; Flash declaration FLASH.RESet LOCAL &FlashSize &EEPROMSize GOSUB FlashDeclaration ENTRY &FlashSize &EEPROMSize ; 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 0x08000000++(&FlashSize-1) /Erase Data.LOAD.auto * FLASH.ReProgram off ; Reset device SYStem.Down SYStem.Up ) DIALOG.YESNO "Program data EEPROM memory?" ENTRY &progflash IF &progflash ( ; EEPROM memory can be reprogrammed without erase command FLASH.Program 0x08080000++(&EEPROMSize-1) Data.dump 0x08080000++(&EEPROMSize-1) Data.Set ) ENDDO ; -------------------------------------------------------------------------------- ; SUBROUTINES ; -------------------------------------------------------------------------------- ; Flash declaration depending on selected CPU ; ; Please do NOT modify the TRACE32 flash declaration. ; ; Modifications can result in unpredictable behavior. ; Please contact support@lauterbach.com for any changes. FlashDeclaration: ( LOCAL &FlashSize LOCAL &EEPROMSize LOCAL &SmallRam &FlashSize=0 &EEPROMSize=0 &SmallRam=FALSE() IF CPUIS("STM32L0???3*") ( &FlashSize=0x2000 ) ELSE IF CPUIS("STM32L0???4*") ( &FlashSize=0x4000 ) ELSE IF CPUIS("STM32L0???6*") ( &FlashSize=0x8000 ) ELSE IF CPUIS("STM32L0???8*") ( &FlashSize=0x10000 ) ELSE IF CPUIS("STM32L0???B*") ( &FlashSize=0x20000 ) ELSE IF CPUIS("STM32L0???Z*") ( &FlashSize=0x30000 ) IF CPUIS("STM32L01*")||CPUIS("STM32L02*") ( &EEPROMSize=0x200 &SmallRam=TRUE() ) ELSE IF CPUIS("STM32L03*")||CPUIS("STM32L04*") ( &EEPROMSize=0x400 ) ELSE IF CPUIS("STM32L05*")||CPUIS("STM32L06*") ( &EEPROMSize=0x800 ) ELSE IF CPUIS("STM32L0???8") ( &EEPROMSize=0xC00 ) ELSE IF CPUIS("STM32L0???B")||CPUIS("STM32L0???Z") ( &EEPROMSize=0x1800 ) IF (&FlashSize==0)&&(&EEPROMSize==0) ( PRINT %ERROR "FLASH size of CPU type is unknown" ENDDO ) ; Program memory flash IF &FlashSize>=0x2000 FLASH.Create 1. 0x08000000--0x08001FFF 0x80 TARGET Long IF &FlashSize>=0x4000 FLASH.Create 1. 0x08002000--0x08003FFF 0x80 TARGET Long IF &FlashSize>=0x8000 FLASH.Create 1. 0x08004000--0x08007FFF 0x80 TARGET Long IF &FlashSize>=0x10000 FLASH.Create 1. 0x08008000--0x0800FFFF 0x80 TARGET Long IF &FlashSize>=0x20000 FLASH.Create 1. 0x08010000--0x0801FFFF 0x80 TARGET Long IF &FlashSize>=0x30000 FLASH.Create 1. 0x08020000--0x0802FFFF 0x80 TARGET Long IF &EEPROMSize==0x200 FLASH.Create 2. 0x08080000--0x080801FF TARGET Byte ELSE IF &EEPROMSize==0x400 FLASH.Create 2. 0x08080000--0x080803FF TARGET Byte ELSE IF &EEPROMSize==0x800 FLASH.Create 2. 0x08080000--0x080807FF TARGET Byte ELSE IF &EEPROMSize==0xC00 FLASH.Create 2. 0x08080000--0x08080BFF TARGET Byte ELSE IF &EEPROMSize==0x1800 FLASH.Create 2. 0x08080000--0x080817FF TARGET Byte ; For Main Flash memory boot mode flash memory is aliased to address 0x0 ; Because SYSCFG_MEMRMP:MEM_MODE[1:0] is not indicating active memory remap ; we are comparing flash reset vector against reset vector at alias address Data.ComPare 0x0--0x7 0x08000000 IF !FOUND() FLASH.CreateALIAS 0x00000000++(&FlashSize-1) 0x08000000 IF &SmallRam FLASH.TARGET 0x20000000 0x20000600 0x100 ~~/demo/arm/flash/byte/stm32l0.bin /STACKSIZE 0x80 ELSE FLASH.TARGET 0x20000000 0x20000600 0x400 ~~/demo/arm/flash/byte/stm32l0.bin /STACKSIZE 0x80 RETURN &FlashSize &EEPROMSize )