135 lines
3.9 KiB
Plaintext
135 lines
3.9 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: AR1443/AR1642(TI) EVM QSPI FLASH Program script
|
|
; @Description:
|
|
; SRAM: 0x200000
|
|
; FLASH: S25FL116K (2MBytes)
|
|
; QSPI Base Register Address : 0xC0800000 , CS0
|
|
; Prerequisites:
|
|
;
|
|
; @Keywords: QSPI
|
|
; @Props: Template Confidential
|
|
; @Author: JIM
|
|
; @Board: AR1443EVM AR1632EVM
|
|
; @Chip: AR1443 AR1642
|
|
; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Id: ar1xxx-snor.cmm 10516 2022-02-02 11:39:30Z bschroefel $
|
|
|
|
&QSPI_BASE=0xC0800000
|
|
&RAM_BASE=0x200000
|
|
|
|
PRIVATE ¶meters
|
|
ENTRY %LINE ¶meters
|
|
|
|
PRIVATE ¶m_prepareonly
|
|
¶m_prepareonly=(STRing.SCAN(STRing.UPpeR("¶meters"),"PREPAREONLY",0)!=-1)
|
|
|
|
PRIVATE ¶m_cpu
|
|
¶m_cpu=STRing.SCANAndExtract(STRing.UPpeR("¶meters"),"CPU=","")
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; Start debugging
|
|
IF !SYStem.UP()
|
|
(
|
|
SYStem.RESet
|
|
IF "¶m_cpu"!=""
|
|
SYStem.CPU ¶m_cpu
|
|
ELSE
|
|
SYStem.CPU AR1443-CORE0
|
|
|
|
SYStem.CONFIG.DEBUGPORTTYPE JTAG
|
|
|
|
SYStem.Up
|
|
)
|
|
|
|
; try to cleanup the cores state - Supervisor, MPU off
|
|
Register.Init
|
|
Data.Set C15:0x1 %Long 0xE70878
|
|
|
|
// IOMUX for QSPI flash
|
|
Data.Set A:0xFFFFEBF8 %LE %Long 0x83E70B13 ; IOCFGKICK0, unlock
|
|
Data.Set A:0xFFFFEBFC %LE %Long 0x95A4F1E0 ; IOCFGKICK1, unlock
|
|
|
|
Data.Set A:0xFFFFEA2C %LE %Long 0x81 ;QSPI[0]
|
|
Data.Set A:0xFFFFEA30 %LE %Long 0x81 ;QSPI[1]
|
|
Data.Set A:0xFFFFEA34 %LE %Long 0x281 ;QSPI[2]
|
|
Data.Set A:0xFFFFEA38 %LE %Long 0x281 ;QSPI[3]
|
|
Data.Set A:0xFFFFEA3C %LE %Long 0x081 ;QSPI_CLK
|
|
Data.Set A:0xFFFFEA40 %LE %Long 0x281 ;QSPI_CS
|
|
|
|
|
|
Data.Set A:&QSPI_BASE+0x040 %LE %Long 0x80000009;SPI_CLOCK_CNTRL, SPI Clock Control Register
|
|
Data.Set A:&QSPI_BASE+0x054 %LE %Long 0x20203 ;SPI_SETUP0, Memory Mapped SPI Setup0
|
|
Data.Set A:&QSPI_BASE+0x058 %LE %Long 0x20203 ;SPI_SETUP1
|
|
Data.Set A:&QSPI_BASE+0x05C %LE %Long 0x20203 ;SPI_SETUP2
|
|
Data.Set A:&QSPI_BASE+0x060 %LE %Long 0x20203 ;SPI_SETUP3
|
|
Data.Set A:&QSPI_BASE+0x064 %LE %Long 0x1 ;SPI_SWITCH, Enabled the Memory mapped the QSPI at 0xC000_0000
|
|
|
|
;GOSUB READ_ID_TEST
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; Flash declaration
|
|
|
|
FLASH.RESet
|
|
GOSUB FlashDeclaration
|
|
|
|
; Flash script ends here if called with parameter PREPAREONLY
|
|
IF ¶m_prepareonly
|
|
ENDDO PREPAREDONE
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; Flash programming example
|
|
|
|
DIALOG.YESNO "Program flash memory?"
|
|
LOCAL &progflash
|
|
ENTRY &progflash
|
|
IF &progflash
|
|
(
|
|
FLASH.ReProgram.ALL
|
|
Data.LOAD.auto *
|
|
;Data.LOAD.Binary * 0xC0000000
|
|
FLASH.ReProgram.off
|
|
|
|
; Reset device
|
|
PRINT "Please power-cycle the board after flash program is complete"
|
|
)
|
|
|
|
ENDDO
|
|
|
|
READ_ID_TEST:
|
|
(
|
|
&QSPI_CMD_REG=&QSPI_BASE+0x48
|
|
&QSPI_DAT_REG=&QSPI_BASE+0x50
|
|
&QSPI_STAT_REG=&QSPI_BASE+0x4C
|
|
|
|
&RE=(0x1<<16.) ; read
|
|
&WR=(0x2<<16.) ; write
|
|
&END=(0x4<<16.) ;
|
|
&cmd_reg_def=0x0|(0x7<<19.)|(0x0<<28.)|0xFFF ;
|
|
|
|
Data.Set A:&QSPI_DAT_REG %Long 0x9F ;write data reg
|
|
Data.Set A:&QSPI_CMD_REG %Long (&cmd_reg_def|&WR);cmd reg
|
|
//print "status 0x" data.long(A:&QSPI_STAT_REG) ;read status reg
|
|
|
|
Data.Set A:&QSPI_CMD_REG %Long (&cmd_reg_def|&RE) ;cmd reg
|
|
PRINT "read 1st 0x" Data.Long(A:&QSPI_DAT_REG) " (manufacture ID)" ; read data reg
|
|
|
|
Data.Set A:&QSPI_CMD_REG %Long (&cmd_reg_def|&RE) ;cmd reg
|
|
PRINT "read 2nd 0x" Data.Long(A:&QSPI_DAT_REG) " (device ID)" ; read data reg
|
|
|
|
Data.Set A:&QSPI_CMD_REG %Long (&cmd_reg_def|&RE);cmd reg
|
|
PRINT "read 3rd 0x" Data.Long(A:&QSPI_DAT_REG) ; read data reg
|
|
|
|
Data.Set A:&QSPI_BASE+0x48 %Long (&cmd_reg_def|&END)
|
|
WAIT 100.ms
|
|
|
|
RETURN
|
|
)
|
|
|
|
FlashDeclaration:
|
|
(
|
|
FLASH.Create 0xC0000000++0x01fffff 0x10000 TARGET Byte
|
|
FLASH.TARGET &RAM_BASE &RAM_BASE+0x2000 0x1000 ~~/demo/arm/flash/byte/snor3b_ar1xxx.bin
|
|
RETURN
|
|
)
|