208 lines
4.7 KiB
Plaintext
208 lines
4.7 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: R-CarV3M Customer board MSIOF SPI Flash script
|
|
; @Description:
|
|
; SPI FLASH Program script by the core (CR7)
|
|
; The M95256 (Spansion, SPI EEPROM) is on the SPI MSIOF controller
|
|
;
|
|
; Prerequisites:
|
|
; * set
|
|
; MD21 = 1 -> SW20[3] = 0 : CoreSight enable
|
|
; MD7 = 1 -> SW3[1] = 0 : Cortex-R7 enable
|
|
;
|
|
;
|
|
; SRAM: 0xE6328000
|
|
; MSIOF Base: 0xE6EA0000
|
|
;
|
|
; @Keywords: ARM, Cortex-R7 Spansion Flash SPI RCarV3M
|
|
; @Author: jjeong
|
|
; @Chip: RCARV3M-CR7
|
|
; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Id: rcarv3m-msiof.cmm 12742 2023-11-17 08:05:09Z mschaeffner $
|
|
|
|
LOCAL &arg1
|
|
ENTRY &arg1
|
|
&arg1=STRing.UPpeR("&arg1") // for example "PREPAREONLY"
|
|
|
|
&BASE=0xE6EA0000
|
|
|
|
RESet
|
|
SYStem.RESet
|
|
SYStem.Option RB OFF
|
|
SYStem.Option ER OFF
|
|
SYStem.CPU RCARV3M-CR7
|
|
SYStem.MemAccess DAP
|
|
SYStem.JtagClock CTCK 10MHz
|
|
|
|
; Activate Cortex-R7
|
|
SYStem.Mode Prepare
|
|
DO ~~/demo/arm/hardware/r_carv3m/scripts/kick_cores "R7"
|
|
Trace.DISable
|
|
SYStem.Up
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; enable the SRAM & MPU - alternative execute BootROM e.g. Go/Wait/Break
|
|
IF TRUE()
|
|
(
|
|
; enable SRAM
|
|
Data.Set AD:0xE67F0018 %LE %Long 0x1
|
|
; disable MPU
|
|
Data.Set C15:0x1 %Long 0xC50078
|
|
; disable all regions
|
|
PRIVATE &i
|
|
&i=0
|
|
RePeaT 16.
|
|
(
|
|
; set MRNR
|
|
Data.Set C15:0x26 %Long &i
|
|
; clear RSER
|
|
Data.Set C15:0x216 %Long 0x0
|
|
&i=&i+1.
|
|
)
|
|
; setup regions for simplicity only region 0&1
|
|
; region 0: 0x00000000--0xffffffff - Shareable Device - all permissions
|
|
Data.Set C15:0x26 %Long 0x0
|
|
Data.Set C15:0x16 %Long 0x0
|
|
Data.Set C15:0x216 %Long 0x3f
|
|
Data.Set C15:0x416 %Long 0x305
|
|
; region 1: 0xe6300000--0xe637ffff - non-cacheable - all permissions
|
|
Data.Set C15:0x26 %Long 0x1
|
|
Data.Set C15:0x16 %Long 0xe6300000
|
|
Data.Set C15:0x216 %Long 0x25
|
|
Data.Set C15:0x416 %Long 0x30c
|
|
|
|
; enable MPU
|
|
Data.Set C15:0x1 %Long Data.Long(C15:0x1)|0x1
|
|
)
|
|
ELSE
|
|
(
|
|
Go.direct 0x268
|
|
WAIT !STATE.RUN() 0.2s
|
|
IF STATE.RUN()
|
|
Break.direct
|
|
)
|
|
|
|
//SMSTPCR2, bit[11-8] MSIOF0 -> MSIOF3 should be 0x0
|
|
&temp=data.long(A:0xE6150138)
|
|
&temp=(&temp&~0xF00)
|
|
Data.Set A:0xE6150900 %LE %Long ~(&temp)
|
|
Data.Set A:0xE6150138 %LE %Long &temp
|
|
|
|
//MSOCKCR, bit[8]:0 bit[5:0]:div
|
|
Data.Set A:0xE6150900 %LE %Long ~(0xE)
|
|
Data.Set A:0xE6150014 %LE %Long 0xE
|
|
|
|
Data.Set A:0xEE20007C %Long 0x80000260
|
|
Data.Set A:0xEE200000 %Long 0x81fff300
|
|
|
|
GOSUB PIN_CONFIG_MSIOF1
|
|
GOSUB MSIOF_CONFIG
|
|
|
|
//FLASH READ ID TEST
|
|
AREA.CLEAR
|
|
AREA.view
|
|
GOSUB READ_ID_TEST
|
|
|
|
Break.RESet
|
|
|
|
FLASHFILE.RESet
|
|
|
|
//FLASHFILE.CONFIG <SPI Base AddRESs>
|
|
FLASHFILE.CONFIG &BASE
|
|
|
|
// FLASHFILE.TARGET <code range> <data range> <Algorithm file>
|
|
FLASHFILE.TARGET 0xE6328000++0x1FFF 0xE632A000++0x21FF ~~/demo/arm/flash/byte/spi16ee_shmsiof.bin /KEEP
|
|
|
|
FLASHFILE.GETID
|
|
|
|
//End of the test prepareonly
|
|
IF "&arg1"=="PREPAREONLY"
|
|
ENDDO
|
|
|
|
|
|
//Read SPI FLASH
|
|
FLASHFILE.DUMP 0x0
|
|
|
|
//Erase SPI FLASH
|
|
; FLASHFILE.ERASE 0x0--0xFFFFF
|
|
|
|
//Write SPI FLASH
|
|
; FLASHFILE.LOAD * 0x0
|
|
|
|
ENDDO
|
|
|
|
; --------------------------------------------------------------------------------
|
|
|
|
READ_ID_TEST:
|
|
(
|
|
|
|
Data.Set AD:0xE6EA0040 %Long -1 ;clear status
|
|
Data.Set AD:0xE6EA0004 %Long 0x07000000|(0x7<<16.) ;Tx 8bytes
|
|
Data.Set AD:0xE6EA0014 %Long 0x07000000|(0x7<<16.) ;Rx 8bytes
|
|
|
|
Data.Set AD:0xE6EA0050 %Byte 0x83 ; EEPROM M95256 Read-ID Command 0x83, not 0x9F
|
|
RePeaT 7.
|
|
(
|
|
Data.Set AD:0xE6EA0050 %Byte 0x00
|
|
)
|
|
|
|
|
|
Data.Set A:&BASE+0x28 %Long 0xAC00C300 //set TSCKE, TFSE ,TXE ,RXE
|
|
|
|
//read
|
|
LOCAL &idx
|
|
&idx=0.
|
|
RePeaT 8.
|
|
(
|
|
PRINT "&idx read: 0x" Data.Long(AD:0xE6EA0060)
|
|
&idx=&idx+1.
|
|
)
|
|
|
|
Data.Set A:&BASE+0x28 %Long 0xAC000003 // clear TSCKE, TFSE, TXE , RXE
|
|
|
|
Data.Set AD:0xE6EA0040 %Long -1
|
|
|
|
|
|
RETURN
|
|
)
|
|
|
|
|
|
PIN_CONFIG_MSIOF1:
|
|
(
|
|
&BASE_PMMR=0xE6060000 // LSI Multiplexed Pin Setting Mask Register
|
|
|
|
//&GPSR3=0xE606010C
|
|
// GP3[4:0] set pins to the peripheral function not GPIO
|
|
&val=0x1F
|
|
Data.Set A:&BASE_PMMR %Long ~&val
|
|
Data.Set A:(&BASE_PMMR+0x10C) %Long &val
|
|
|
|
//IPSR5[19:0]0x11111
|
|
// Peripheral Function Select register 5: &BASE_PMMR+0x214
|
|
&val=0x11111
|
|
Data.Set A:&BASE_PMMR %Long ~&val
|
|
Data.Set A:(&BASE_PMMR+0x214) %Long &val
|
|
|
|
RETURN
|
|
)
|
|
|
|
|
|
MSIOF_CONFIG:
|
|
(
|
|
|
|
Data.Set AD:0xE6EA0028 %Long 0xAC000003
|
|
|
|
Data.Set AD:0xE6EA0000 %Long 0xe655000C
|
|
Data.Set AD:0xE6EA0004 %Long 0x07000000|(0x7<<16.) ;8bytes
|
|
Data.Set AD:0xE6EA0008 %Long 0x0f000000
|
|
Data.Set AD:0xE6EA0010 %Long 0x22000000
|
|
Data.Set AD:0xE6EA0014 %Long 0x07000000|(0x7<<16.) ;8bytes
|
|
Data.Set AD:0xE6EA0018 %Long 0x0F000000
|
|
|
|
Data.Set AD:0xE6EA0020 %Word 0x00000003 ;SITSCR div/16 spi_clk maybe around 4Mhz.
|
|
|
|
Data.Set AD:0xE6EA0030 %Long 0x0400A000
|
|
|
|
RETURN
|
|
)
|