172 lines
4.9 KiB
Plaintext
172 lines
4.9 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: Example for flash declaration of Toshiba TMPM33x internal flash.
|
|
;
|
|
; @Description:
|
|
; Script arguments:
|
|
;
|
|
; DO tmpm33x [PREPAREONLY] [CPU=<cpu>] [DUALPORT=0|1]
|
|
;
|
|
; PREPAREONLY only declares flash but does not execute flash programming
|
|
; example
|
|
;
|
|
; CPU=<cpu> selects CPU derivative <cpu>
|
|
;
|
|
; 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/tmpm33x CPU=TMPM330FD DUALPORT=1 PREPAREONLY
|
|
;
|
|
; List of TMPM33x derivatives and their configuration:
|
|
;
|
|
; CPU-Type Flash size SRAM size Page size
|
|
; [Byte] [Byte] [Byte]
|
|
; --------------------------------------------------------------------------------
|
|
; TMPM330FD 0x80000 0x8000 0x200
|
|
; TMPM330FY 0x40000 0x4000 0x200
|
|
; TMPM330FW 0x20000 0x2000 0x100
|
|
; TMPM332FW 0x20000 0x2000
|
|
;
|
|
; The internal flash is located at 0x00000000 (User boot mode)
|
|
; or 0x3F800000 (Single boot mode)
|
|
; The internal RAM is located at 0x20000000
|
|
; The BOOTROM is located at 0x00000000 (Single boot mode)
|
|
;
|
|
; @Author: WRD
|
|
; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; @Chip: TMPM33*
|
|
; --------------------------------------------------------------------------------
|
|
; $Rev: 10516 $
|
|
; $Id: tmpm33x.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
|
|
IF VERSION.BUILD()>=29755.
|
|
¶m_cpu=STRing.SCANAndExtract(STRing.UPpeR("¶meters"),"CPU=","")
|
|
|
|
LOCAL ¶m_dualport
|
|
¶m_dualport=0
|
|
IF VERSION.BUILD.BASE()>=43441.
|
|
¶m_dualport=STRing.SCANAndExtract(STRing.UPpeR("¶meters"),"DUALPORT=","0")
|
|
|
|
LOCAL &flashbase
|
|
LOCAL &flashsize
|
|
LOCAL &flashdriver
|
|
&flashdriver="tbd.bin"
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; Setup CPU
|
|
|
|
IF SYStem.MODE()<5
|
|
(
|
|
SYStem.RESet
|
|
|
|
IF "¶m_cpu"!=""
|
|
SYStem.CPU ¶m_cpu
|
|
IF !CPUIS(TMPM33*)
|
|
(
|
|
IF VERSION.BUILD()>=37389.
|
|
SYStem.CPU TMPM33*
|
|
ELSE
|
|
SYStem.CPU TMPM330FD
|
|
)
|
|
|
|
SYStem.Option.EnReset OFF
|
|
SYStem.Up
|
|
)
|
|
|
|
; Disable watchdog
|
|
Data.Set 0x40040000 %Long 0x00000000 ; disable timer
|
|
Data.Set 0x40040004 %Long 0x000000B1 ; write key
|
|
|
|
; Setup flash base address depending on boot mode
|
|
&flashbase=0x00000000
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; Setup flash configuration depending on selected CPU.
|
|
|
|
IF (CPUIS("TMPM330FD*"))
|
|
(
|
|
&flashsize=0x80000
|
|
&flashdriver="~~/demo/arm/flash/long/tmpm330.bin"
|
|
)
|
|
ELSE IF (CPUIS("TMPM330FY*"))
|
|
(
|
|
&flashsize=0x40000
|
|
&flashdriver="~~/demo/arm/flash/long/tmpm330.bin"
|
|
)
|
|
ELSE IF (CPUIS("TMPM330FW*")||CPUIS("TMPM332FW*"))
|
|
(
|
|
&flashsize=0x20000
|
|
&flashdriver="~~/demo/arm/flash/long/tmpm330fw.bin"
|
|
)
|
|
ELSE
|
|
(
|
|
PRINT %ERROR "FLASH size of CPU type is unknown"
|
|
ENDDO
|
|
)
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; Flash declaration
|
|
|
|
FLASH.RESet
|
|
|
|
IF &flashsize==0x20000
|
|
(
|
|
FLASH.Create 1. (&flashbase+0x00000)++0x07FFF 0x04000 TARGET Long
|
|
FLASH.Create 1. (&flashbase+0x08000)++0x07FFF 0x08000 TARGET Long
|
|
FLASH.Create 1. (&flashbase+0x10000)++0x0FFFF 0x10000 TARGET Long
|
|
)
|
|
ELSE IF &flashsize==0x40000
|
|
(
|
|
FLASH.Create 1. (&flashbase+0x00000)++0x0FFFF 0x08000 TARGET Long
|
|
FLASH.Create 1. (&flashbase+0x10000)++0x0FFFF 0x10000 TARGET Long
|
|
FLASH.Create 1. (&flashbase+0x20000)++0x1FFFF 0x20000 TARGET Long
|
|
)
|
|
ELSE IF &flashsize==0x80000
|
|
(
|
|
FLASH.Create 1. (&flashbase+0x00000)++0x0FFFF 0x08000 TARGET Long
|
|
FLASH.Create 1. (&flashbase+0x10000)++0x0FFFF 0x10000 TARGET Long
|
|
FLASH.Create 1. (&flashbase+0x20000)++0x5FFFF 0x20000 TARGET Long
|
|
)
|
|
ELSE
|
|
(
|
|
PRINT %ERROR "Flash size is not supported by the script"
|
|
ENDDO
|
|
)
|
|
|
|
IF ¶m_dualport==0
|
|
FLASH.TARGET 0x20000400 0x20000C00 0x1000 &flashdriver
|
|
ELSE
|
|
FLASH.TARGET 0x20000400 EAHB:0x20000C00 0x1000 &flashdriver /DualPort
|
|
|
|
; 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
|