Files
Gen4_R-Car_Trace32/2_Trunk/demo/arm/flash/da1469x-spi.cmm
2025-10-14 09:52:32 +09:00

114 lines
2.8 KiB
Plaintext

; --------------------------------------------------------------------------------
; @Title: SPI FLASH Programming script for DA1469x
; @Description:
; SPI FLASH(Micronix, MX25U3235) is connected QSPIC
;
; pin connection
; QSPIC - SPI_Flash
; QSPIF_D0 - MOSI
; QSPIF_D1 - MISO
; QSPIF_CLK - SCLK
; QSPIF_CS - SS0
;
; Internal SRAM : 0x20000000
; Tx Register : 0x38000018
; Rx Register : 0x3800001C
; Base Register : 0x38000000
;
; @Chip: DA14697-CM33
; @Board:
; @Author: JIM
; @Keywords: ARM, Cortex-M33 MX25U
; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: da1469x-spi.cmm 10516 2022-02-02 11:39:30Z bschroefel $
LOCAL &arg1
ENTRY &arg1
&arg1=STRing.UPpeR("&arg1") // for example "PREPAREONLY"
&QSPI_BASE=0x38000000
;WinCLEAR
; --------------------------------------------------------------------------------
; system up procedure
IF SYStem.MODE()<5
(
RESet
SYStem.RESet
SYStem.CPU DA14697-CM33
SYStem.CONFIG.DEBUGPORTTYPE SWD
IF COMBIPROBE()||UTRACE()
(
SYStem.CONFIG.CONNECTOR MIPI20T
)
SYStem.Option.DUALPORT ON
SYStem.Option.ResBreak off
SYStem.Option.WaitIDCODE ON
SYStem.MemAccess DAP
SYStem.JtagClock 10MHz
Trace.DISable
SYStem.Up
)
; --------------------------------------------------------------------------------
; Watchdog disable
Data.Set A:0x50000704 %LE %Long 0x1<<2.
Data.Set A:0x50040300 %LE %Long 0x1<<3. ; Watchdog timer is frozen.
; --------------------------------------------------------------------------------
; Read flash id by a direct access
GOSUB READ_ID_TEST
; --------------------------------------------------------------------------------
; FLASHFILE Configuration
Break.RESet
FLASHFILE.RESet
//FLASFILE.CONFIG <Tx Reg> <Rx Reg> <BASE Reg>
FLASHFILE.CONFIG (&QSPI_BASE+0x18) (&QSPI_BASE+0x1C) &QSPI_BASE
// FLASHFILE.TARGET <code range> <data range> <Algorithm file>
FLASHFILE.TARGET 0x20000000++0x1FFF E:0x20002000++0x1FFF ~~/demo/arm/flash/byte/spi64_da1469x.bin /KEEP /DualPort
FLASHFILE.GETID
//End of the test prepareonly
IF "&arg1"=="PREPAREONLY"
ENDDO
FLASHFILE.DUMP 0x0
//Erase Serial FLASH
;FLASHFILE.ERASE 0x0--0xFFFFF
//Write
;FLASHFILE.LOAD * 0x0
;FLASHFILE.LOAD * 0x0 /ComPare ;verify
ENDDO
READ_ID_TEST:
Data.Set &QSPI_BASE %Long 0x08 ; enable_CS
WAIT 100.ms
Data.Set &QSPI_BASE %Long 0x10 ; disable_CS
WAIT 100.ms
Data.Set &QSPI_BASE %Long 0x08 ; EN_CS
Data.Set &QSPI_BASE+0x18 %Byte 0x9F ; write command byte , it comes write/read together.
&temp=Data.Long(A:&QSPI_BASE+0x1C)
PRINT "read 1st: 0x" &temp&0xFF " (manufacture ID)"
PRINT "read 2nd: 0x" (&temp>>8.)&0xFF " (device ID)"
PRINT "read 3rd: 0x" (&temp>>16.)&0xFF
PRINT "read 4th: 0x" (&temp>>24.)&0xFF
Data.Set &QSPI_BASE %Long 0x10 ; Disable_CS
RETURN