; -------------------------------------------------------------------------------- ; @Title: Flash declaration of Cypress FM0 S6E1A internal flash. ; @Description: ; Board info: ; Flash info: Internal Flash ; Script arguments: ; ; DO s6e1a [PREPAREONLY] [CPU=] [DUALPORT=0|1] ; [PREPAREONLY] Only declares flash but does not execute flash programming ; CPU= selects CPU derivative ; DUALPORT default value is 0 (disabled). If DualPort mode is enabled ; flash algorithm stays running until flash programming is ; finished. Data is tranferred via dual port memory access. ; ; Example: ; ; DO ~~/demo/arm/flash/s6e1a CPU=S6E1A12C DUALPORT=1 PREPAREONLY ; ; Flash memory up to 1 MB and SRAM up to 512 KB ; ; -------------------------------------------------------------------------------- ; CPU-Type Flash size RAM size ; [kByte] [kByte] ; -------------------------------------------------------------------------------- ; S6E1A11B 56 6 ; S6E1A11C 56 6 ; S6E1A12B 88 6 ; S6E1A12C 88 6 ; ; Flash base address is 0x00000000 ; SRAM base address is 0x20000000 ; ; @Keywords: FM0 S6E1A ; @Author: sphilipp ; @Chip: S6E1A1* ; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: s6e1a.cmm 10516 2022-02-02 11:39:30Z bschroefel $ PRIVATE ¶meters ENTRY %LINE ¶meters PRIVATE ¶m_prepareonly ¶m_cpu &DualPort &DualPortOpt ¶m_prepareonly=(STRing.SCAN(STRing.UPpeR("¶meters"),"PREPAREONLY",0)!=-1) ¶m_cpu=STRing.SCANAndExtract(STRing.UPpeR("¶meters"),"CPU=","") &DualPort=STRing.SCANAndExtract(STRing.UPpeR("¶meters"),"DUALPORT=","0") if "&DualPort"!="0" &DualPortOpt="/DualPort" ; ------------------------------------------------------------------------------ ; Setup CPU IF !SYStem.Up() ( SYStem.RESet IF "¶m_cpu"!="" SYStem.CPU ¶m_cpu IF !CPUIS(S6E1A*) SYStem.CPU S6E1A* SYStem.CONFIG.DEBUGPORTTYPE SWD SYStem.Option ResBreak OFF SYStem.Option WaitIDCODE ON SYStem.Up ) ; -------------------------------------------------------------------------------- ; Flash declaration FLASH.RESet GOSUB FlashDeclaration &DualPortOpt ; Flash script ends here if called with parameter PREPAREONLY IF ¶m_prepareonly ENDDO PREPAREDONE ; ------------------------------------------------------------------------------ ; Flash programming DIALOG.YESNO "Program flash memory?" PRIVATE &progflash ENTRY &progflash IF &progflash ( FLASH.Erase.ALL FLASH.ReProgram.ALL Data.LOAD.auto * FLASH.ReProgram.off ; Reset device SYStem.Down SYStem.Up ) ENDDO ; ------------------------------------------------------------------------------ ; Flash declaration FlashDeclaration: ( PRIVATE &DualPortOpt ENTRY &DualPortOpt PRIVATE &flash_start &flashsize1 &flashsize2 §orsize1 §orsize2 PRIVATE &ram_start &flashDriverSize &bufferSize &ram_start=0x20000000 &flashDriverSize=0x400 &bufferSize=0x500 &flash_start=0x0 §orsize1=0x2000 §orsize2=0x8000 IF CPUIS("S6E1A11*") ( &flashsize1=0x6000 &flashsize2=0x8000 ) ELSE IF CPUIS("S6E1A12*") ( &flashsize1=0x6000 &flashsize2=0x10000 ) ELSE ( PRINT %ERROR "FLASH size of CPU type is unknown" ENDDO ) FLASH.Create 1. &flash_start++(&flashsize1-1) §orsize1 TARGET Word FLASH.Create 1. (&flash_start+&flashsize1)++(&flashsize2-1) §orsize2 TARGET Word FLASH.TARGET &ram_start (&ram_start+&flashDriverSize) &bufferSize ~~/demo/arm/flash/word/fm0se61a.bin &DualPortOpt RETURN )