129 lines
4.9 KiB
Plaintext
129 lines
4.9 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: i.MX6 SPI FLASH Programming Script
|
|
; @Description:
|
|
; FLASH Type: SPI FLASH(MACRONIX, MX25L25635F) connected eCSPI1_SS1
|
|
;
|
|
; S(D)RAM: 0x900000
|
|
; eCSPI1 Tx Register : 0x2008004
|
|
; eCSPI1 Rx Register : 0x2008000
|
|
; eCSPI1 CS Register : 0x2008008
|
|
;
|
|
; @Author: jjeong
|
|
; @Chip: IMX6SOLO
|
|
; @Keywords: MACRONIX MX25L25635F
|
|
; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Id: imx6solo-spi.cmm 10516 2022-02-02 11:39:30Z bschroefel $
|
|
|
|
LOCAL &arg1
|
|
ENTRY &arg1
|
|
&arg1=STRing.UPpeR("&arg1") // for example "PREPAREONLY"
|
|
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; 0. get access to i.MX6
|
|
; --------------------------------------------------------------------------------
|
|
RESet
|
|
SYStem.RESet
|
|
SYStem.CPU iMX6Solo ;SOLO
|
|
;CORE.ASSIGN 1 ;SOLO
|
|
SYStem.Option ResBreak OFF
|
|
IF VERSION.BUILD()<92177.
|
|
(
|
|
SYStem.Option WaitReset 1.3s
|
|
)
|
|
ELSE
|
|
(
|
|
SYStem.Option WaitIDCODE 1.5s
|
|
)
|
|
Trace.METHOD Onchip
|
|
SYStem.Up
|
|
|
|
Data.Set C15:0x1 %Long (Data.Long(C15:0x1)&~(0x1005)) ; disable cache and mmu
|
|
|
|
Data.Set ASD:0x020d8000 %Long 0x01C00521 ;SRC Control Register
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; 1. Clear the EN bit in ECSPI_CONREG to reset the block.
|
|
; --------------------------------------------------------------------------------
|
|
Data.Set ASD:0x2008008 %Long 0 ;ECSPI1_CONREG = enable eCSPI1_SS1 & master mode
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; 2. Enable the clocks for ECSPI.
|
|
; --------------------------------------------------------------------------------
|
|
Data.Set ASD:0x20C406C %Long 0xf0fc0003 ;enable clock for the eCSPI1
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; 3. Set the EN bit in ECSPI_CONREG to put ECSPI out of reset.
|
|
; --------------------------------------------------------------------------------
|
|
Data.Set ASD:0x2008008 %Long 1 ;ECSPI1_CONREG = enable eCSPI1_SS1 & master mode
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; 4. Configure corresponding IOMUX for ECSPI external signals.
|
|
; --------------------------------------------------------------------------------
|
|
Data.Set ASD:0x20E0144 %Long 0x01 ;IOMUXC_SW_MUX_CTL_PAD_EIM_D16
|
|
Data.Set ASD:0x20E0514 %Long 0x100B1 ;IOMUXC_SW_PAD_CTL_PAD_EIM_D16
|
|
|
|
Data.Set ASD:0x20E0148 %Long 0x01 ;IOMUXC_SW_MUX_CTL_PAD_EIM_D17
|
|
Data.Set ASD:0x20E0518 %Long 0x100B1 ;IOMUXC_SW_PAD_CTL_PAD_EIM_D17
|
|
|
|
Data.Set ASD:0x20E014C %Long 0x01 ;IOMUXC_SW_MUX_CTL_PAD_EIM_D18
|
|
Data.Set ASD:0x20E051C %Long 0x100B1 ;IOMUXC_SW_PAD_CTL_PAD_EIM_D18
|
|
|
|
Data.Set ASD:0x20E0150 %Long 0x01 ;IOMUXC_SW_MUX_CTL_PAD_EIM_D19
|
|
Data.Set ASD:0x20E0520 %Long 0x100B0 ;IOMUXC_SW_PAD_CTL_PAD_EIM_D19
|
|
|
|
Data.Set ASD:0x20E07D8 %LE %Long 0x2 ;IOMUXC_ECSPI1_IPP_CSPI_CLK_IN_SELECT_INPUT)
|
|
Data.Set ASD:0x20E07DC %LE %Long 0x2 ;IOMUXC_ECSPI1_IPP_IND_MISO_SELECT_INPUT
|
|
Data.Set ASD:0x20E07E0 %LE %Long 0x2 ;IOMUXC_ECSPI1_IPP_IND_MOSI_SELECT_INPUT
|
|
Data.Set ASD:0x20E07E8 %LE %Long 0x1 ;IOMUXC_ECSPI1_IPP_IND_SS_B_1_SELECT_INPUT
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; 5. Configure registers of ECSPI properly according to the specifications of the external SPI device.
|
|
; --------------------------------------------------------------------------------
|
|
Data.Set ASD:0x2008008 %Long 0x46021 ;ECSPI1_CONREG = enable eCSPI1_SS1 & master mode
|
|
Data.Set ASD:0x200800C %Long 0x0 ;ECSPI1_CONFIGREG
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; 6. Configure Trace32 FLASHFILE Settings and Load SPI Driver
|
|
; --------------------------------------------------------------------------------
|
|
Break.RESet
|
|
|
|
FLASHFILE.RESet
|
|
FLASHFILE.CONFIG 0x2008004 0x2008000 0x2008008
|
|
FLASHFILE.TARGET 0x900000++0x1fff 0x902000++0x1fff ~~/demo/arm/flash/byte/spi64_imx6.bin /KEEP ; for MX25L25635F spi flash
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; 7. Lauterbach FLASHFILE Commands are now ready to use
|
|
; --------------------------------------------------------------------------------
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; GETID: Read FLASH Manufacture and Device ID
|
|
; --------------------------------------------------------------------------------
|
|
AREA.CLEAR
|
|
AREA.view
|
|
|
|
//Read FLASH Manufacture and Device ID
|
|
FLASHFILE.GETID
|
|
|
|
//End of the test prepareonly
|
|
IF "&arg1"=="PREPAREONLY"
|
|
ENDDO
|
|
|
|
;FLASHFILE.DUMP 0x0 ; Read
|
|
|
|
;FLASHFILE.UNLOCK 0x0--0xFFFFF ; Unlock
|
|
;FLASHFILE.ERASE 0x0--0xFFFFF ; Erase
|
|
;FLASHFILE.LOAD * 0x0 ; Write
|
|
|
|
ENDDO
|
|
|