; -------------------------------------------------------------------------------- ; @Title: BCM53344 Serial FLASH Programming Script ; @Description: ; Serial FLASH (Numonyx, N25Q256) is connected the QSPI0 ; (Serial Peripheral Interface) ; ; SDRAM : 0x1b000000 ; Serial FLASH Controller Addr: 0x18027000 ; ; @Author: jjeong ; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only ; @Chip: BCM5334X ; @Keywords: Numonyx N25Q256 FLASH SPI ; -------------------------------------------------------------------------------- ; $Id: bcm53344-spi.cmm 12623 2023-10-15 23:46:31Z jjeong $ LOCAL &arg1 ENTRY &arg1 &arg1=STRing.UPpeR("&arg1") // for example "PREPAREONLY" RESet SYStem.CPU BCM5334X SYStem.Mode.Attach IF STATE.RUN() Break.direct PER.Set.simple C15:0x1 %Long Data.Long(C15:0x1)&~0x1005 Data.Set AZSD:0x18027200 %LE %Long 0x0A ;SPCR0_LSB Serial Clock, 10Mhz Data.Set AZSD:0x18027008 %LE %Long 0x1 ; SPI by MSPI not BSPI Data.Set AZSD:0x18027204 %LE %Long 0xA3 ; 8bits transfer, CPOL=1, CPHA=1 Data.Set AZSD:0x18027210 %LE %Long 0x0 ; new qp Data.Set AZSD:0x18027214 %LE %Long 0x7 ; end qp //FLASH READ ID TEST AREA.CLEAR AREA.view GOSUB READ_ID_TEST DIALOG.YESNO "the flash id is correct on AREA window?" ENTRY &result IF !&result ( PRINT "pls, check your register configuration to enable your flash controller" ENDDO ) //S(D)RAM TEST for algorithm file GOSUB SDRAM_INIT Data.Test 0x1b000000++0x3FFF /Prime ;s(d)ram test IF FOUND() ( PRINT "s(d)ram is NOT initialized around 0x" ADDRESS.OFFSET(TRACK.ADDRESS()) ENDDO ) programFlash: Break.RESet FLASHFILE.RESet FLASHFILE.CONFIG 0x18027000 0x0 0x0 // FLASHFILE.TARGET <> <> <> FLASHFILE.TARGET 0x1b000000++0x1FFF 0x1b002000++0x23FF ~~/demo/arm/flash/byte/spi4b64fs_bcmmspi.bin /KEEP /STACKSIZE 0x200 FLASHFILE.GETID //End of the test prepareonly IF "&arg1"=="PREPAREONLY" ENDDO FLASHFILE.DUMP 0x0 ;FLASHFILE.unlock 0x0--0xFFFFFF ;FLASHFILE.erase 0x0--0xFFFFF ;FLASHFILE.load * 0x0 ;FLASHFILE.load * 0x0 /ComPare ENDDO READ_ID_TEST: //write Data.Set AZSD:0x18027240 %LE %Long 0x9F ;tx Data.Set AZSD:0x18027248 %LE %Long 0x01 ;tx Data.Set AZSD:0x18027250 %LE %Long 0x02 ;tx Data.Set AZSD:0x18027258 %LE %Long 0x03 ;tx Data.Set AZSD:0x18027340 %LE %Long 0xC0 ;cmd Data.Set AZSD:0x18027344 %LE %Long 0xC0 ;cmd Data.Set AZSD:0x18027348 %LE %Long 0xC0 ;cmd Data.Set AZSD:0x1802734C %LE %Long 0xC0 ;cmd Data.Set AZSD:0x18027350 %LE %Long 0xC0 ;cmd Data.Set AZSD:0x18027358 %LE %Long 0xC0 ;cmd Data.Set AZSD:0x18027210 %LE %Long 0x0 ;new qp Data.Set AZSD:0x18027214 %LE %Long 0x3 ;end qp Data.Set AZSD:0x18027218 %LE %Long 0x40 ; QSPI_MSPI_SPCR2 //enable //Read PRINT "Read 1st = 0x" Data.Long(A:0x180272C4) PRINT "Read 2nd = 0x" Data.Long(A:0x180272CC) " (Manufacture ID)" PRINT "Read 3rd = 0x" Data.Long(A:0x180272D4) " (Device ID)" PRINT "Read 4th = 0x" Data.Long(A:0x180272DC) RETURN SDRAM_INIT: RETURN