Files
Gen4_R-Car_Trace32/2_Trunk/demo/arm/flash/at91sam9g45-i2c256.cmm
2025-10-14 09:52:32 +09:00

107 lines
3.2 KiB
Plaintext

; --------------------------------------------------------------------------------
; @Title: AT91SAM9G45 EEPROM Programming Script
; @Description:
; EEPROM (ATMEL, AT24C256) is connected the TWI0 (PA20=TWD0 and PA21=TWCK0)
;
; Internal SRAM : 0x300000
; Serial FLASH Controller Addr: 0xFFF84000
;
; @Author: jjeong
; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
; @Chip: AT91SAM9G45
; --------------------------------------------------------------------------------
; $Id: at91sam9g45-i2c256.cmm 12049 2023-04-20 12:32:16Z bschroefel $
; $Rev: 12049 $
//SYStem Configuration
IF SYStem.MODE()<5
(
SYStem.RESet
SYStem.CPU AT91SAM9G45
SYStem.JtagClock RTCK
SYStem.Option IMASKASM ON
SYStem.Option IMASKHLL ON
SYStem.Option RESBREAK OFF
SYStem.Option ENRESET ON
SYStem.Mode Go
)
IF STATE.RUN()
Break.direct
PER.Set.simple C15:0x1 %Long %LE 0x50078 ; disable mmu & data cache
PER.Set.simple ASD:0xFFFFFD44 %Long %LE 0x8000 ; disable Watchdog
GOSUB cpu_init
GOSUB i2c_Init
Break.RESet
FLASHFILE.RESet
; FLASHFILE.CONFIG <I2C_base> <(extra_addr_mask<<8)|addressbytes> <write page size> <I2C device address>
//FLASHFILE.CONFIG 0xFFF84000 0x01 8. 0x50 ;I2C 24C02
FLASHFILE.CONFIG 0xFFF84000 0x02 64. 0x50 ;I2C 24C256
//FLASHFILE.TARGET <code range> <data range> <Algorithm file>
FLASHFILE.TARGET 0x00300000++0x1FFF 0x00302000++0x1FFF ~~/demo/arm/flash/byte/i2c_at91sam.bin /KEEP
//Read FLASH Manufacture and Device ID
FLASHFILE.GETID
//Dump window for Serial FLASH
FLASHFILE.DUMP 0x0
//Erase EEPROM
; FLASHFILE.ERASE 0x0--0x7FFF
//Write EEPROM
; FLASHFILE.LOAD * 0x0
ENDDO
i2c_Init:
PER.Set.simple ASD:0xFFFFF200 %Long %LE 0xFFCFFFFF
PER.Set.simple ASD:0xFFFFF204 %Long %LE 0x00300000
PER.Set.simple ASD:0xFFFFF214 %Long %LE 0x00300000
PER.Set.simple ASD:0xFFFFF210 %Long %LE 0x00300000
PER.Set.simple ASD:0xFFFFF250 %Long %LE 0x00300000
PER.Set.simple ASD:0xFFFFF260 %Long %LE 0x00300000
PER.Set.simple ASD:0xFFFFF270 %Long %LE 0x00000000; PIO20, PIO21
PER.Set.simple ASD:0xFFFFFC10 %Long %LE 0x00005004
PER.Set.simple ASD:0xFFF84000 %Long %LE 0x80 ;reset i2c controller
PER.Set.simple ASD:0xFFF84000 %Long %LE 0x24
;PER.S ASD:0xFFF84004 %LONG %LE 0x00501100 ;1 byte address for at24c02
PER.Set.simple ASD:0xFFF84004 %Long %LE 0x00501200 ;2 bytes address for at24c256
PER.Set.simple ASD:0xFFF84010 %Long %LE 0x17676 ;clock for i2c
RETURN
cpu_init:
PER.Set.simple ASD:0xFFFFFC80 %Long %LE 0
PER.Set.simple ASD:0xFFFFFD50 %Long %LE 0x0000000A
PER.Set.simple ASD:0xFFFFFC20 %Long %LE 0x0000FF01
PER.Set.simple ASD:0xFFFFFC28 %Long %LE 0x203F3F01
PER.Set.simple ASD:0xFFFFFC30 %Long %LE 0x0000110A
PER.Set.simple ASD:0x20000000 %Long %LE 0x1
PER.Set.simple ASD:0xFFFFE000 %Long %LE 1
PER.Set.simple ASD:0xFFFFED14 %Long %LE 0x0
PER.Set.simple ASD:0xFFFFED00 %Long %LE 0x0
PER.Set.simple ASD:0xFFFFFC00 %Long %LE 0x45
PER.Set.simple ASD:0xFFFFFC10 %Long %LE 0x260d03c
PER.Set.simple ASD:0xFFFFFC1C %Long %LE 0x11210000
PER.Set.simple ASD:0xFFFFFC20 %Long %LE 0x20c73f0d
PER.Set.simple ASD:0xFFFFFC30 %Long %LE 0x1302
PER.Set.simple ASD:0xFFFFFC20 %Long %LE 0xff01
RETURN