247 lines
7.7 KiB
Plaintext
247 lines
7.7 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: Flash declaration for ST SR6P7G7 internal flash
|
|
; @Description:
|
|
; Script arguments:
|
|
; DO sr6p7g7 [PREPAREONLY] [CPU=<cpu>] [DUALPORT=<0|1>]
|
|
; PREPAREONLY only declares flash but does not execute flash programming
|
|
; CPU=<cpu> selects CPU derivative <cpu>
|
|
; DUALPORT=<0|1> use dual port memory access, default 1
|
|
; SKIPPARITYRESET skips the default behavior of zeroing SRAM to avoid faults
|
|
;
|
|
; Example:
|
|
; DO ~~/demo/arm/flash/sr6p7g7 PREPAREONLY SKIPPARITYRESET
|
|
;
|
|
; 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 SR6x7 derivatives and their configuration:
|
|
; CPU-Type Flash Code/Data Ram
|
|
; --------------------------------------------------------------------------------
|
|
; SR6P7x 19 MB/512 KB 3.8 MB
|
|
; SR6G7x 19 MB/512 KB 3.3 MB
|
|
;
|
|
; Flash is divided into NVM0--2, UTest (one-time-programmable), and HSM NVM
|
|
; RAM is divided into 512/560 KB system RAM global memory 0 at 0x64000000
|
|
; global memory 1 at 0x64000000
|
|
; 2304/2816 KB Cluster local RAM at 0x60000000
|
|
; 576 KB Local Core RAM
|
|
;
|
|
; @Chip: SR6P7*
|
|
; @Author: PHI, BWR
|
|
; @Keywords: SR6P7G7 FLASH
|
|
; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Rev: 13228 $
|
|
; $Id: sr6p7g7.cmm 13228 2024-03-20 15:07:23Z bschroefel $
|
|
|
|
PRIVATE ¶meters
|
|
ENTRY %LINE ¶meters
|
|
|
|
PRIVATE ¶m_prepareonly ¶m_cpu ¶m_dualport &skip_parity_reset
|
|
¶meters=STRing.UPpeR("¶meters")
|
|
¶m_prepareonly=(STRing.SCAN("¶meters","PREPAREONLY",0)!=-1)
|
|
¶m_cpu=STRing.SCANAndExtract("¶meters","CPU=","")
|
|
¶m_dualport=STRing.SCANAndExtract("¶meters","DUALPORT=","1")
|
|
¶m_skipparityreset=(STRing.SCAN("¶meters","SKIPPARITYRESET",0)!=-1)
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; Initialize and start the debugger
|
|
IF !SYStem.Up()
|
|
(
|
|
SYStem.RESet
|
|
|
|
IF "¶m_cpu"!=""
|
|
SYStem.CPU ¶m_cpu
|
|
ELSE
|
|
SYStem.CPU SR6P7-G7
|
|
|
|
CORE.ASSIGN 1.
|
|
SYStem.Option WaitDBGREG ON
|
|
Trace.DISable
|
|
SYStem.Up
|
|
)
|
|
|
|
IF !CPUIS(SR6P7*)
|
|
(
|
|
PRINT "Wrong CPU"
|
|
ENDDO
|
|
)
|
|
|
|
IF STATE.RUN()
|
|
Break.direct
|
|
|
|
IF (¶m_skipparityreset)
|
|
(
|
|
Data.Set NAXI:0x60000000--0x600023FF %Quad 0x0 ; Allocate for flash binary
|
|
)
|
|
ELSE
|
|
(
|
|
; Initialize all RAM to ensure parity checking
|
|
Data.Set NAXI:0x60000000--0x6007FFFF %Quad 0x0
|
|
Data.Set NAXI:0x60400000--0x6047FFFF %Quad 0x0
|
|
Data.Set NAXI:0x60800000--0x6085FFFF %Quad 0x0
|
|
Data.Set NAXI:0x60C00000--0x60C5FFFF %Quad 0x0
|
|
Data.Set NAXI:0x61000000--0x6103FFFF %Quad 0x0
|
|
Data.Set NAXI:0x61400000--0x6143FFFF %Quad 0x0
|
|
)
|
|
|
|
GOSUB DisableWatchdog
|
|
GOSUB WatchdogDisabled
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; Flash declaration
|
|
FLASH.RESet
|
|
GOSUB FlashDeclaration "¶m_dualport"
|
|
|
|
; Deny write accesses by software breakpoints on NVM read port to avoid errors.
|
|
; Deny read accesses on NVWM write port to avoid errors.
|
|
MAP.BOnchip 0x28000000--0x2FFFFFFF
|
|
MAP.DenyAccess 0x30000000--0x337FFFFF
|
|
|
|
; Flash script ends here if called with parameter PREPAREONLY
|
|
IF ¶m_prepareonly
|
|
ENDDO PREPAREDONE
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; Flash programming example
|
|
DIALOG.YESNO "Program flash memory?"
|
|
PRIVATE &progflash
|
|
ENTRY &progflash
|
|
IF &progflash
|
|
(
|
|
FLASH.ReProgram ALL /Erase
|
|
Data.LOAD.auto *
|
|
FLASH.ReProgram OFF
|
|
|
|
; Reset device
|
|
SYStem.Down
|
|
SYStem.Up
|
|
)
|
|
|
|
ENDDO
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; 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: ;(param_dualport)
|
|
(
|
|
PARAMETERS ¶m_dualport
|
|
PRIVATE &FlashDriver
|
|
PRIVATE &RamAddress
|
|
PRIVATE &NVM_0 &NVM_0_UT &NVM_1 &NVM_2
|
|
|
|
&NVM_0=0x711BC000
|
|
&NVM_0_UT=0x711BC001
|
|
&NVM_1=0x717BC000
|
|
&NVM_2=0x711C4000
|
|
&RamAddress=0x60000000 // Cluster_0 Local RAM
|
|
|
|
IF CPUIS(SR6P7*)
|
|
(
|
|
&FlashDriver="sr6p7.bin"
|
|
)
|
|
|
|
// RWW partition 0 = Cluster 0_0
|
|
FLASH.Create 1. 0x28000000--0x2800FFFF 0x4000 TARGET quad &NVM_0
|
|
FLASH.Create 1. 0x28010000--0x2801FFFF 0x8000 TARGET quad &NVM_0
|
|
FLASH.Create 1. 0x28020000--0x2803FFFF 0x10000 TARGET quad &NVM_0
|
|
FLASH.Create 1. 0x28040000--0x281BFFFF 0x40000 TARGET quad &NVM_0
|
|
|
|
// RWW partition 1 = Cluster 0_0
|
|
FLASH.Create 2. 0x281C0000--0x283BFFFF 0x40000 TARGET quad &NVM_0
|
|
|
|
// RWW partition 2 = Cluster 0_1
|
|
FLASH.Create 3. 0x28400000--0x2840FFFF 0x4000 TARGET quad &NVM_0
|
|
FLASH.Create 3. 0x28410000--0x2841FFFF 0x8000 TARGET quad &NVM_0
|
|
FLASH.Create 3. 0x28420000--0x2843FFFF 0x10000 TARGET quad &NVM_0
|
|
FLASH.Create 3. 0x28440000--0x285BFFFF 0x40000 TARGET quad &NVM_0
|
|
|
|
// RWW partition 3 = Cluster 0_1
|
|
FLASH.Create 4. 0x285C0000--0x287BFFFF 0x40000 TARGET quad &NVM_0
|
|
|
|
// RWW partition 4 = Cluster 1_0
|
|
FLASH.Create 5. 0x28800000--0x2880FFFF 0x4000 TARGET quad &NVM_1
|
|
FLASH.Create 5. 0x28810000--0x2881FFFF 0x8000 TARGET quad &NVM_1
|
|
FLASH.Create 5. 0x28820000--0x2883FFFF 0x10000 TARGET quad &NVM_1
|
|
FLASH.Create 5. 0x28840000--0x289FFFFF 0x40000 TARGET quad &NVM_1
|
|
|
|
// RWW partition 5 = Cluster 1_0
|
|
FLASH.Create 6. 0x28A00000--0x28BFFFFF 0x40000 TARGET quad &NVM_1
|
|
|
|
// RWW partition 6 = Cluster 1_1
|
|
FLASH.Create 7. 0x28C00000--0x28C0FFFF 0x4000 TARGET quad &NVM_1
|
|
FLASH.Create 7. 0x28C10000--0x28C1FFFF 0x8000 TARGET quad &NVM_1
|
|
FLASH.Create 7. 0x28C20000--0x28C3FFFF 0x10000 TARGET quad &NVM_1
|
|
FLASH.Create 7. 0x28C40000--0x28DFFFFF 0x40000 TARGET quad &NVM_1
|
|
|
|
// RWW partition 7 = Cluster 1_1
|
|
FLASH.Create 8. 0x28E00000--0x28FFFFFF 0x40000 TARGET quad &NVM_1
|
|
|
|
// RWW partition 8 = Cluster 2_0
|
|
FLASH.Create 9. 0x29000000--0x2900FFFF 0x4000 TARGET quad &NVM_2
|
|
FLASH.Create 9. 0x29010000--0x2901FFFF 0x8000 TARGET quad &NVM_2
|
|
FLASH.Create 9. 0x29020000--0x2903FFFF 0x10000 TARGET quad &NVM_2
|
|
FLASH.Create 9. 0x29040000--0x291FFFFF 0x40000 TARGET quad &NVM_2
|
|
|
|
// RWW partition 9 = Cluster 2_1
|
|
FLASH.Create 10. 0x29400000--0x2940FFFF 0x4000 TARGET quad &NVM_2
|
|
FLASH.Create 10. 0x29410000--0x2941FFFF 0x8000 TARGET quad &NVM_2
|
|
FLASH.Create 10. 0x29420000--0x2943FFFF 0x10000 TARGET quad &NVM_2
|
|
FLASH.Create 10. 0x29440000--0x295FFFFF 0x40000 TARGET quad &NVM_2
|
|
|
|
// RWW partition 10 = EEPROM Data
|
|
FLASH.Create 11. 0x29E00000--0x29E7FFFF 0x10000 TARGET quad &NVM_0 /INFO "EEPROM Data"
|
|
|
|
// UTest (RWW partition 1)
|
|
FLASH.Create 12. 0x29F80000--0x29F87DFF NOP quad &NVM_0_UT /INFO "UTEST"
|
|
|
|
// Boot record (RWW partition 1)
|
|
FLASH.Create 12. 0x29F87E00--0x29F87FFF 0x200 TARGET quad &NVM_0_UT /INFO "Boot records"
|
|
|
|
// BCS (RWW partition 1)
|
|
FLASH.Create 13. 0x29FB8000--0x29FBBFFF NOP quad &NVM_0_UT /INFO "BCS"
|
|
|
|
IF ("¶m_dualport"!="1")
|
|
FLASH.TARGET &RamAddress &RamAddress+0x1000 0x1000 ~~/demo/arm/flash/quad/&FlashDriver
|
|
ELSE
|
|
(
|
|
SYStem.MemAccess AXI
|
|
FLASH.TARGET &RamAddress E:&RamAddress+0x1000 0x1000 ~~/demo/arm/flash/quad/&FlashDriver /DualPort
|
|
)
|
|
RETURN
|
|
)
|
|
|
|
|
|
DisableWatchdog:
|
|
(
|
|
PRIVATE &cr
|
|
|
|
//Disable SWT_SYS_0 Watchdog
|
|
&cr=Data.Long(EAXI:0x70F40000)
|
|
Data.Set EAXI:0x70F40010 %Long 0xC520
|
|
Data.Set EAXI:0x70F40010 %Long 0xD928
|
|
Data.Set EAXI:0x70F40000 %Long &cr&~0x1
|
|
|
|
RETURN
|
|
)
|
|
|
|
|
|
WatchdogDisabled:
|
|
(
|
|
IF (Data.Long(EAXI:0x70F40000)&0x1)==0x1
|
|
(
|
|
PRINT "SWT_SYS_0: Watchdog couldn't be disabled !"
|
|
STOP
|
|
)
|
|
|
|
RETURN
|
|
)
|