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

105 lines
2.7 KiB
Plaintext

; --------------------------------------------------------------------------------
; @Title: NXHX51 SPI Flash Programming Script
; @Description:
; Board info: NetX NXHX51-ETM evaluation board
; Flash info: SPI Flash(Winbond, W25Q32)
;
; internal RAM: 0x08000000
;
; SPI Flash is connected to the SQI (Serial Quad I/O) interface CS0
; SQI Tx/Rx Register : 0x1018C5C8
; SQI CS Register (SQI_CTRL1) : 0x1018C5C4
;
; @Author: jjeong
; @Chip: NETX51
; @Board: NXHX51-ETM
; @Keywords: Winbond W25Q32 SPI
; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: netx51-spi64.cmm 10516 2022-02-02 11:39:30Z bschroefel $
LOCAL &arg1
ENTRY &arg1
&arg1=STRing.UPpeR("&arg1") // for example "PREPAREONLY"
&SQI_BASE=0x1018C5C0
RESet
SYStem.CPU NETX51
SYStem.Option EnReset OFF
SYStem.Option WaitReset 15ms
SYStem.Up
Data.Set ASD:&SQI_BASE+0x38 %LE %LONG 0x0 ; sqi_sqirom_cfg
Data.Set ASD:&SQI_BASE+0x10 %LE %LONG 0x0 ; SQI transfer control, 1bit Standard SPI mode
Data.Set ASD:&SQI_BASE+0x00 %LE %LONG 0x00080007 ; spi_clk 50Mhz
//dummy access
Data.Set ASD:&SQI_BASE+0x04 %LE %LONG 0x18180902 ; cs0 low
Data.Set ASD:&SQI_BASE+0x8 %LE %LONG 0xF0
print "dummy: 0x" data.long(ASD:&SQI_BASE+0x8)
Data.Set ASD:&SQI_BASE+0x4 %LE %LONG 0x18180802 ; cs0 high
//FLASH READ ID TEST
GOSUB READ_ID_TEST
Break.RESet
FLASHFILE.RESet
//FLASFILE.CONFIG <Tx Reg> <Rx Reg> <SQI_CTRL1> <CS#>
FLASHFILE.CONFIG &SQI_BASE+0x8 &SQI_BASE+0x8 &SQI_BASE+0x4 0
//FLASHFILE.TARGET <code range> <data range> <Algorithm file>
FLASHFILE.TARGET 0x08000000++0x1FFF 0x08002000++0x1FFF ~~/demo/arm/flash/byte/spi64_netx51.bin /KEEP
FLASHFILE.GETID
//End of the test prepareonly
IF "&arg1"=="PREPAREONLY"
ENDDO
//Dump window for Serial FLASH
FLASHFILE.DUMP 0x0
//Unlock Serial FLASH
;FLASHFILE.UNLOCK 0x0--0x3FFFFF
//Write Serial FLASH
;FLASHFILE.ERASE 0x0--0x3FFFFF
//Write Serial FLASH
;FLASHFILE.LOAD * 0x0
;FLASHFILE.LOAD * 0x0 /CP
ENDDO
READ_ID_TEST:
Data.Set ASD:&SQI_BASE+0x0 %LE %Long 0x80080007
Data.Set ASD:&SQI_BASE+0x4 %LE %Long 0x08080902 ; cs0 low
Data.Set ASD:&SQI_BASE+0x8 %LE %Long 0x9F
PRINT "1st: 0x" Data.Long(ASD:&SQI_BASE+0x8)
Data.Set ASD:&SQI_BASE+0x8 %LE %Long 0xFF
PRINT "2nd: 0x" Data.Long(ASD:&SQI_BASE+0x8)
Data.Set ASD:&SQI_BASE+0x8 %LE %Long 0xFF
PRINT "3rd: 0x" Data.Long(ASD:&SQI_BASE+0x8)
Data.Set ASD:&SQI_BASE+0x8 %LE %Long 0xFF
PRINT "4th: 0x" Data.Long(ASD:&SQI_BASE+0x8)
Data.Set ASD:&SQI_BASE+0x8 %LE %Long 0xFF
PRINT "5th: 0x" Data.Long(ASD:&SQI_BASE+0x8)
Data.Set ASD:&SQI_BASE+0x4 %LE %Long 0x08080802 ; cs0 high
RETURN