; -------------------------------------------------------------------------------- ; @Title: Flash declaration of Cypress FM0 S6E1C internal flash. ; @Description: ; Board info: ; Flash info: Internal Flash ; Script arguments: ; ; DO s6e1c [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/s6e1c CPU=S6E1C1 DUALPORT=1 PREPAREONLY ; ; Flash memory up to 1 MB and SRAM up to 512 KB ; ; -------------------------------------------------------------------------------- ; CPU-Type Flash size RAM size ; [kByte] [kByte] ; -------------------------------------------------------------------------------- ; S6E1C11B0A 64 12 ; S6E1C11C0A 64 12 ; S6E1C11D0A 64 12 ; S6E1C31B0A 64 12 ; S6E1C31C0A 64 12 ; S6E1C31D0A 64 12 ; S6E1C12B0A 128 16 ; S6E1C12C0A 128 16 ; S6E1C12D0A 128 16 ; S6E1C32B0A 128 16 ; S6E1C32C0A 128 16 ; S6E1C32D0A 128 16 ; ; Flash base address is 0x00000000 ; SRAM base address is 0x20000000 ; ; @Keywords: FM0 S6E1C ; @Author: sphilipp ; @Board: ; @Chip: S6E1A1* ; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: s6e1c.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(S6E1C*) SYStem.CPU S6E1C* 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 &flashsize3 §orsize1 §orsize2 §orsize3 PRIVATE &ram_start &flashDriverSize &bufferSize &ram_start=0x20000000 &flashDriverSize=0x400 &bufferSize=0x1000 &flash_start=0x0 §orsize1=0x2000-16. §orsize2=0x2000 §orsize3=0x8000 IF (CPUIS("S6E1C11*")||CPUIS("S6E1C31*")) ( &flashsize1=§orsize1 &flashsize2=0x6000 &flashsize3=0x8000 ) ELSE IF (CPUIS("S6E1C12*")||CPUIS("S6E1C32*")) ( &flashsize1=§orsize1 &flashsize2=0x6000 &flashsize3=0x18000 ) 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.Create 1. (&flash_start+&flashsize1+&flashsize2)++(&flashsize3-1) §orsize3 TARGET Word FLASH.TARGET &ram_start (&ram_start+&flashDriverSize) &bufferSize ~~/demo/arm/flash/word/fm0se61c.bin &DualPortOpt /STACKSIZE 0x120 RETURN )