; -------------------------------------------------------------------------------- ; @Title: netX90 SPI Flash Programming CMM ; @Description: ; internal RAM: 0x00020000 (NETX_RAM0) ; SPI Flash is connected to the SQI (Serial Quad I/O) interface CS0 ; SQI Tx/Rx Register : 0xF801d308 ; SQI CS Register (SQI_CTRL1) : 0xF801d304 ; ; @Keywords: ; @Author: jjeong ; @Board: NXHX90-JTAG REV2 ; @Chip: NETX90 ; @Copyright: (C) 1989-2024 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: netx90-spi64.cmm 13468 2024-05-22 08:51:26Z pegold $ &SQI_BASE=0xff401640 RESet SYStem.CPU NETX90-COM SYStem.CONFIG.DEBUGPORTTYPE SWD SYStem.Option.ResBreak OFF SYStem.Option.WaitReset 100ms SYStem.Option.SYSRESETREQ OFF Trace.DISable SYStem.Up ; enable NETX90-APP &ioconfig=Data.Long(ASD:0xff401250) Data.Set ASD:0xff4012c0 %Long Data.Long(ASD:0xff4012c0) Data.Set ASD:0xff401250 %Long (&ioconfig|0x00000800) 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 FLASHFILE.CONFIG &SQI_BASE+0x8 &SQI_BASE+0x8 &SQI_BASE+0x4 0 //FLASHFILE.TARGET FLASHFILE.TARGET 0x00020000++0x1FFF 0x00022000++0x1FFF ~~/demo/arm/flash/byte/spi64_netx51.bin /KEEP FLASHFILE.GETID //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