549 lines
18 KiB
Plaintext
549 lines
18 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: Flash declaration for NXP LPC11xx internal flash
|
|
; @Description:
|
|
; Script arguments:
|
|
; DO temp [PREPAREONLY] [CPU=<cpu>] [DUALPORT=<0|1>]
|
|
; PREPAREONLY only declares flash but does not execute flash programming
|
|
; CPU=<cpu> selects CPU derivative <cpu>
|
|
; DUALPORT=<0|1> use dual port memory access, default 1
|
|
; Example:
|
|
; DO ~~/demo/arm/flash/lpc11xx CPU=LPC1110 DUALPORT=1 PREPAREONLY
|
|
; Note:
|
|
; The boot sector can't be erased or programmed (for LPC111x/LPCCxx).
|
|
; This file must NOT be modified.
|
|
; This file is intended to stay within TRACE32 installation.
|
|
; Usage examples are available in the ~~/demo/arm/hardware/... subdirectories.
|
|
;
|
|
; List of LPC11xx derivatives and their configuration:
|
|
;
|
|
; CPU-Type FlashSize EEPromSize SRAM(0)
|
|
; [kB] [kB] [kB]
|
|
; --------------------------------------------------------------------------------
|
|
; LPC11xx series:
|
|
; LPC1102 32. - 8. LPC1102UK
|
|
; LPC1104 32. - 8. LPC1104UK
|
|
; LPC1110 4. - 1.
|
|
; LPC1111/002 8. - 2.
|
|
; LPC1111/101 8. - 2.
|
|
; LPC1111/102 8. - 2.
|
|
; LPC1111/103 8. - 2.
|
|
; LPC1111/201 8. - 4.
|
|
; LPC1111/202 8. - 4.
|
|
; LPC1111/203 8. - 4.
|
|
; LPC1112/101 16. - 2.
|
|
; LPC1112/102 16. - 2.
|
|
; LPC1112/103 16. - 2.
|
|
; LPC1112/201 16. - 4.
|
|
; LPC1112/202 16. - 4.
|
|
; LPC1112/203 16. - 4.
|
|
; LPC1113/201 24. - 4.
|
|
; LPC1113/202 24. - 4.
|
|
; LPC1113/203 24. - 4.
|
|
; LPC1113/301 24. - 8.
|
|
; LPC1113/302 24. - 8.
|
|
; LPC1113/303 24. - 8.
|
|
; LPC1114/102 32. - 4.
|
|
; LPC1114/201 32. - 4.
|
|
; LPC1114/202 32. - 4.
|
|
; LPC1114/203 32. - 4.
|
|
; LPC1114/301 32. - 8.
|
|
; LPC1114/302 32. - 8.
|
|
; LPC1114/303 32. - 8.
|
|
; LPC1114/323 48. - 8.
|
|
; LPC1114/333 56. - 8.
|
|
; LPC1115/303 64. - 8.
|
|
; LPC1124JBD48 32. - 8.
|
|
; LPC1125JBD48 64. - 8.
|
|
; --------------------------------------------------------------------------------
|
|
; LPC11xxLV series:
|
|
; LPC1101LV 32. - 2.
|
|
; LPC1102LV 32. - 8.
|
|
; LPC1112LV/003 16. - 2.
|
|
; LPC1112LV/103 16. - 4.
|
|
; LPC1114LV/103 32. - 4.
|
|
; LPC1114LV/303 32. - 8.
|
|
; --------------------------------------------------------------------------------
|
|
; LPC11Axx series:
|
|
; LPC11A02 16. 2. 4.
|
|
; LPC11A04 32. 4. 8.
|
|
; LPC11A11/001 8. 0.5 2.
|
|
; LPC11A12/101 16. 1. 4.
|
|
; LPC11A13/201 24. 2. 6.
|
|
; LPC11A14/301 32. 4. 8.
|
|
; --------------------------------------------------------------------------------
|
|
; LPC11Cxx series:
|
|
; LPC11C12/301 16. - 8.
|
|
; LPC11C14/301 32. - 8.
|
|
; LPC11C22/301 16. - 8.
|
|
; LPC11C24/301 32. - 8.
|
|
; --------------------------------------------------------------------------------
|
|
; LPC11Dxx series:
|
|
; LPC11D14/302 32. - 8.
|
|
; --------------------------------------------------------------------------------
|
|
; LPC11Exx series:
|
|
; LPC11E11/101 8. 0.5 4.
|
|
; LPC11E12/201 16. 1. 6.
|
|
; LPC11E13/301 24. 2. 8.
|
|
; LPC11E14/401 32. 4. 8.
|
|
; LPC11E35/501 64. 4. 12. (8KB SRAM0)
|
|
; LPC11E36/501 96. 4. 12. (8KB SRAM0)
|
|
; LPC11E37/401 128. 4. 12. (8KB SRAM0)
|
|
; LPC11E37/501 128. 4. 12. (8KB SRAM0)
|
|
; LPC11E37H/401 128. 4. 10. (8KB SRAM0)
|
|
; LPC11E66 64. 4. 12. ..JBD48
|
|
; LPC11E67 128. 4. 20. ..JBD48,..JBD64,..JBD100
|
|
; LPC11E68 256. 4. 36. ..JBD48,..JBD64,..JBD100
|
|
; --------------------------------------------------------------------------------
|
|
; LPC11Uxx series:
|
|
; LPC11U12/201 16. - 4.
|
|
; LPC11U13/201 24. - 4.
|
|
; LPC11U14/201 32. - 4.
|
|
; LPC11U22/301 16. 1. 6.
|
|
; LPC11U23/301 24. 1. 6.
|
|
; LPC11U24/301 32. 2. 6.
|
|
; LPC11U24/401 32. 4. 8.
|
|
; LPC11U34/311 40. 4. 8.
|
|
; LPC11U34/421 48. 4. 10.
|
|
; LPC11U35/401 64. 4. 10.
|
|
; LPC11U35/501 64. 4. 12.
|
|
; LPC11U36/401 96. 4. 10.
|
|
; LPC11U37/401 128. 4. 10.
|
|
; LPC11U37/501 128. 4. 12.
|
|
; LPC11U66 64. 4. 12. ..JBD48
|
|
; LPC11U67 128. 4. 20. ..JBD48,..JBD64,..JBD100
|
|
; LPC11U68 256. 4. 36. ..JBD48,..JBD64,..JBD100
|
|
;
|
|
; Code Read Protection (CRP):
|
|
; CRP is invoked by programming a specific pattern in flash location
|
|
; at 0x000002FC.
|
|
;
|
|
; Name Pattern Description
|
|
; --------------------------------------------------------------------------------
|
|
; NO_ISP 0x4E697370 Prevents sampling of pin PIO0_1 for entering ISP mode.
|
|
; PIO0_1 is available for other uses.
|
|
; CRP1 0x12345678 Access to chip via the JTAG pins is disabled. This
|
|
; mode allows partial flash update using the following
|
|
; ISP commands and restrictions
|
|
; - Write to RAM command cannot access RAM below
|
|
; 0x10000300.
|
|
; - Copy RAM to flash command can not write to Sector 0.
|
|
; - Erase command can erase Sector 0 only when all
|
|
; sectors are selected for erase.
|
|
; - Compare command is disabled.
|
|
; - Read Memory command is disabled.
|
|
; This mode is useful when CRP is required and flash
|
|
; field updates are needed but all sectors can not be
|
|
; erased.
|
|
; CRP2 0x87654321 Access to chip via the JTAG pins is disabled. The
|
|
; following ISP commands are disabled:
|
|
; - Read Memory
|
|
; - Write to RAM
|
|
; - Go
|
|
; - Copy RAM to flash
|
|
; - Compare
|
|
; When CRP2 is enabled the ISP erase command only allows
|
|
; erasure of all user sectors.
|
|
; CRP3 0x43218765 Access to chip via the JTAG pins is disabled. ISP
|
|
; entry by pulling PIO0_1 LOW is disabled if a valid
|
|
; user code is present in flash sector 0.
|
|
; This mode effectively disables ISP override using
|
|
; PIO0_1 pin.
|
|
; It is up to the user's application to provide a flash
|
|
; update mechanism using IAP calls or call reinvoke ISP
|
|
; command to enable flash update via UART.
|
|
; Caution: If CRP3 is selected, no future factory
|
|
; testing can be performed on the device.
|
|
;
|
|
; RAM used by IAP command handler:
|
|
; Flash programming commands use the top 32 bytes of on-chip RAM. The
|
|
; maximum stack usage in the user allocated stack space is 128 bytes and it
|
|
; grows downwards.
|
|
;
|
|
; Hints:
|
|
; Flash clock has to match System Clock Frequency (CCLK).
|
|
; FLASH.CLocK.AUTO can be used for automatic flash clock measurement.
|
|
; Boot flash cannot be programmed or erased with builtin flash
|
|
; algorithm.
|
|
; Data has to be loaded to flash alignment to page boundaries.
|
|
; Vector table checksum generation is done by script, so that it
|
|
; can be used or switched off, as needed.
|
|
; @Author: WRD
|
|
; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; @Chip: LPC11*
|
|
; --------------------------------------------------------------------------------
|
|
; $Rev: 12730 $
|
|
; $Id: lpc11xx.cmm 12730 2023-11-17 07:18:01Z mschaeffner $
|
|
LOCAL ¶meters
|
|
ENTRY %LINE ¶meters
|
|
|
|
LOCAL ¶m_prepareonly ¶m_cpu ¶m_dualport
|
|
¶m_prepareonly=(STRing.SCAN(STRing.UPpeR("¶meters"),"PREPAREONLY",0)!=-1)
|
|
|
|
IF VERSION.BUILD()>=29755.
|
|
¶m_cpu=STRing.SCANAndExtract(STRing.UPpeR("¶meters"),"CPU=","")
|
|
ELSE
|
|
PRINT "Argument CPU= ignored because Trace32 software is too old"
|
|
|
|
¶m_dualport=0
|
|
IF VERSION.BUILD.BASE()>=43441.
|
|
¶m_dualport=STRing.SCANAndExtract(STRing.UPpeR("¶meters"),"DUALPORT=","1")
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; Start debugging
|
|
|
|
IF SYStem.MODE()<5
|
|
(
|
|
SYStem.RESet
|
|
|
|
IF "¶m_cpu"!=""
|
|
SYStem.CPU ¶m_cpu
|
|
IF !CPUIS(LPC11*)
|
|
(
|
|
IF VERSION.BUILD()>=37389.
|
|
SYStem.CPU LPC11*
|
|
ELSE
|
|
SYStem.CPU LPC1114
|
|
)
|
|
|
|
SYStem.Option.EnReset OFF
|
|
IF CABLE.TWOWIRE()
|
|
(
|
|
SYStem.CONFIG.DEBUGPORTTYPE SWD
|
|
)
|
|
|
|
SYStem.Up
|
|
)
|
|
|
|
; Switch memory mapping to user flash mode, so that on-chip flash is
|
|
; mapped to address 0x0--0x1ff. System Memory Remap register
|
|
; SYSMEMREMAP:0..1 = 10b
|
|
Data.Set 0x40048000 %Long 0x02
|
|
|
|
|
|
; ------------------------------------------------------------------------------
|
|
; Flash declaration
|
|
|
|
FLASH.RESet
|
|
GOSUB FlashDeclaration "¶m_dualport"
|
|
|
|
; 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
|
|
(
|
|
; Example for download
|
|
FLASH.ReProgram.ALL /Erase
|
|
; 1. Download file
|
|
Data.LOAD.auto *
|
|
; 2. Checksum generation
|
|
Data.SUM 0x0--0x1B /Long ;Calculate checksum of all (other) vectors
|
|
Data.Set 0x1C %Long -Data.SUM() ;Write the 2's complement in reserved vector's spot
|
|
; 3. Flash programming
|
|
FLASH.ReProgram.off
|
|
|
|
; Reset device and execute boot code until application start
|
|
LOCAL &startAddress
|
|
&startAddress=Data.Long(SD:0x04)&0xFFFFFFFE
|
|
SYStem.Up
|
|
Go.direct &startAddress
|
|
WAIT 100.ms
|
|
IF STATE.RUN()
|
|
(
|
|
Break.direct
|
|
Data.List
|
|
PRINT %ERROR "Boot code didn't branch to application start"
|
|
ENDDO
|
|
)
|
|
)
|
|
|
|
ENDDO
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; Flash declaration depending on selected CPU
|
|
|
|
FlashDeclaration:
|
|
PARAMETERS ¶m_dualport
|
|
|
|
PRIVATE &FlashSize &FlashDriver &RAMSize
|
|
|
|
&FlashDriver="lpc1100.bin"
|
|
IF ((SYStem.CPU()=="LPC11U37/501"))
|
|
(
|
|
&FlashSize=0x20000
|
|
&RAMSize=0x3000
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11U37/401"))
|
|
(
|
|
&FlashSize=0x20000
|
|
&RAMSize=0x2800
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF (CPUIS("LPC11E37*"))
|
|
(
|
|
&FlashSize=0x20000
|
|
&RAMSize=0x2000
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF (CPUIS("LPC11E66*")||CPUIS("LPC11U66*"))
|
|
(
|
|
&FlashSize=0x10000
|
|
&RAMSize=0x3000
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF (CPUIS("LPC11E67*")||CPUIS("LPC11U67*"))
|
|
(
|
|
&FlashSize=0x20000
|
|
&RAMSize=0x5000
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF (CPUIS("LPC11E68*")||CPUIS("LPC11U68*"))
|
|
(
|
|
&FlashSize=0x40000
|
|
&RAMSize=0x9000
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11U36/401"))
|
|
(
|
|
&FlashSize=0x18000
|
|
&RAMSize=0x2800
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11E36"))
|
|
(
|
|
&FlashSize=0x18000
|
|
&RAMSize=0x2000
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11U35/501"))
|
|
(
|
|
&FlashSize=0x10000
|
|
&RAMSize=0x3000
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11U35/401"))
|
|
(
|
|
&FlashSize=0x10000
|
|
&RAMSize=0x2800
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1115")||(SYStem.CPU()=="LPC1115/303")||CPUIS("LPC1125*")||CPUIS("LPC11E35*"))
|
|
(
|
|
&FlashSize=0x10000
|
|
&RAMSize=0x2000
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1114/333"))
|
|
(
|
|
&FlashSize=0xE000
|
|
&RAMSize=0x2000
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11U34/421"))
|
|
(
|
|
&FlashSize=0xC000
|
|
&RAMSize=0x2800
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1114/323"))
|
|
(
|
|
&FlashSize=0xC000
|
|
&RAMSize=0x2000
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11U34/311"))
|
|
(
|
|
&FlashSize=0xA000
|
|
&RAMSize=0x2000
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11E14"))
|
|
(
|
|
&FlashSize=0x8000
|
|
&RAMSize=0x2800
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1102")||(SYStem.CPU()=="LPC1104")||CPUIS("LPC1124*")||(SYStem.CPU()=="LPC11C14")||(SYStem.CPU()=="LPC11C24")||(SYStem.CPU()=="LPC11D14")||(SYStem.CPU()=="LPC1114/301")||(SYStem.CPU()=="LPC1114/302")||(SYStem.CPU()=="LPC1114/303")||(SYStem.CPU()=="LPC1102LV"))
|
|
(
|
|
&FlashSize=0x8000
|
|
&RAMSize=0x2000
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11U24/401")||(SYStem.CPU()=="LPC11A04")||(SYStem.CPU()=="LPC11A14"))
|
|
(
|
|
&FlashSize=0x8000
|
|
&RAMSize=0x2000
|
|
; EEPROM size 4 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11U24/301")||(SYStem.CPU()=="LPC11U24"))
|
|
(
|
|
&FlashSize=0x8000
|
|
&RAMSize=0x1800
|
|
; EEPROM size 2 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1114/102")||(SYStem.CPU()=="LPC1114/201")||(SYStem.CPU()=="LPC1114/202")||(SYStem.CPU()=="LPC1114/203")||(SYStem.CPU()=="LPC1114")||(SYStem.CPU()=="LPC11U14/201")||(SYStem.CPU()=="LPC11U14")||(SYStem.CPU()=="LPC1114LV"))
|
|
(
|
|
&FlashSize=0x8000
|
|
&RAMSize=0x1000
|
|
)
|
|
ELSE IF (SYStem.CPU()=="LPC1101LV")
|
|
(
|
|
&FlashSize=0x8000
|
|
&RAMSize=0x800
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1113/301")||(SYStem.CPU()=="LPC1113/302")||(SYStem.CPU()=="LPC1113/303"))
|
|
(
|
|
&FlashSize=0x6000
|
|
&RAMSize=0x2000
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11E13"))
|
|
(
|
|
&FlashSize=0x6000
|
|
&RAMSize=0x2000
|
|
; EEPROM size 2 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11A13"))
|
|
(
|
|
&FlashSize=0x6000
|
|
&RAMSize=0x1800
|
|
; EEPROM size 2 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11U23/301")||(SYStem.CPU()=="LPC11U23"))
|
|
(
|
|
&FlashSize=0x6000
|
|
&RAMSize=0x1800
|
|
; EEPROM size 1 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1113/201")||(SYStem.CPU()=="LPC1113/202")||(SYStem.CPU()=="LPC1113/203")||(SYStem.CPU()=="LPC1113")||(SYStem.CPU()=="LPC11U13/201")||(SYStem.CPU()=="LPC11U13"))
|
|
(
|
|
&FlashSize=0x6000
|
|
&RAMSize=0x1000
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11C12")||(SYStem.CPU()=="LPC11C22"))
|
|
(
|
|
&FlashSize=0x4000
|
|
&RAMSize=0x2000
|
|
)
|
|
ELSE IF (SYStem.CPU()=="LPC11E12")
|
|
(
|
|
&FlashSize=0x4000
|
|
&RAMSize=0x1800
|
|
; EEPROM size 1 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11U12/201")||(SYStem.CPU()=="LPC11U12")||(SYStem.CPU()=="LPC1112/201")||(SYStem.CPU()=="LPC1112/202")||(SYStem.CPU()=="LPC1112/203"))
|
|
(
|
|
&FlashSize=0x4000
|
|
&RAMSize=0x1000
|
|
)
|
|
ELSE IF (SYStem.CPU()=="LPC11U22*")
|
|
(
|
|
&FlashSize=0x4000
|
|
&RAMSize=0x1800
|
|
)
|
|
ELSE IF (SYStem.CPU()=="LPC11A02")
|
|
(
|
|
&FlashSize=0x4000
|
|
&RAMSize=0x1000
|
|
; EEPROM size 2 kB
|
|
)
|
|
ELSE IF (SYStem.CPU()=="LPC11A12")
|
|
(
|
|
&FlashSize=0x4000
|
|
&RAMSize=0x1000
|
|
; EEPROM size 1 kB
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1112/101")||(SYStem.CPU()=="LPC1112/102")||(SYStem.CPU()=="LPC1112/103")||(SYStem.CPU()=="LPC1112")||(SYStem.CPU()=="LPC1112LV"))
|
|
(
|
|
&FlashSize=0x4000
|
|
&RAMSize=0x0800
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1111/201")||(SYStem.CPU()=="LPC1111/202")||(SYStem.CPU()=="LPC1111/203"))
|
|
(
|
|
&FlashSize=0x2000
|
|
&RAMSize=0x1000
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11E11"))
|
|
(
|
|
&FlashSize=0x2000
|
|
&RAMSize=0x1000
|
|
; EEPROM size 512 B
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1111/002")||(SYStem.CPU()=="LPC1111/101")||(SYStem.CPU()=="LPC1111/102")||(SYStem.CPU()=="LPC1111/103")||(SYStem.CPU()=="LPC1111"))
|
|
(
|
|
&FlashSize=0x2000
|
|
&RAMSize=0x0800
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC11A11"))
|
|
(
|
|
&FlashSize=0x2000
|
|
&RAMSize=0x0800
|
|
; EEPROM size 512 B
|
|
)
|
|
ELSE IF ((SYStem.CPU()=="LPC1110"))
|
|
(
|
|
&FlashSize=0x1000
|
|
&RAMSize=0x0400
|
|
)
|
|
ELSE
|
|
(
|
|
PRINT %ERROR "FLASH size of CPU type is unknown"
|
|
ENDDO
|
|
)
|
|
|
|
IF (((CPUIS("LPC11?67*")||CPUIS("LPC11?68*")))&&(&FlashSize>=0x18000))
|
|
(
|
|
FLASH.Create 1. 0x0--0x00017FFF 0x1000 TARGET Long
|
|
FLASH.Create 1. 0x00018000--(&FlashSize-1) 0x8000 TARGET Long
|
|
&FlashDriver="lpc11x6.bin"
|
|
)
|
|
ELSE
|
|
FLASH.Create 1. 0x0--(&FlashSize-1) 0x1000 TARGET Long
|
|
|
|
IF (("¶m_dualport"=="0")||SYStem.ACCESS.DENIED())
|
|
(
|
|
IF &RAMSize>=0x1800
|
|
FLASH.TARGET 0x10001200 0x10000000 0x1000 ~~/demo/arm/flash/long/&FlashDriver
|
|
ELSE IF &RAMSize>=0x1000
|
|
FLASH.TARGET 0x10000A00 0x10000000 0x800 ~~/demo/arm/flash/long/&FlashDriver
|
|
ELSE IF &RAMSize>=0x0800
|
|
FLASH.TARGET 0x10000500 0x10000000 0x300 ~~/demo/arm/flash/long/&FlashDriver
|
|
ELSE IF &RAMSize>=0x0400
|
|
FLASH.TARGET 0x10000180 0x10000000 0x100 ~~/demo/arm/flash/long/&FlashDriver /STACKSIZE 0x40
|
|
ELSE
|
|
(
|
|
PRINT %ERROR "RAM size is not supported by the script"
|
|
ENDDO
|
|
)
|
|
)
|
|
ELSE
|
|
(
|
|
IF &RAMSize>=0x1800
|
|
FLASH.TARGET 0x10001200 E:0x10000000 0x1000 ~~/demo/arm/flash/long/&FlashDriver /DualPort
|
|
ELSE IF &RAMSize>=0x1000
|
|
FLASH.TARGET 0x10000A00 E:0x10000000 0x800 ~~/demo/arm/flash/long/&FlashDriver /DualPort
|
|
ELSE IF &RAMSize>=0x0800
|
|
FLASH.TARGET 0x10000500 E:0x10000000 0x300 ~~/demo/arm/flash/long/&FlashDriver /DualPort
|
|
ELSE IF &RAMSize>=0x0400
|
|
FLASH.TARGET 0x10000180 E:0x10000000 0x100 ~~/demo/arm/flash/long/&FlashDriver /STACKSIZE 0x40
|
|
ELSE
|
|
(
|
|
PRINT %ERROR "RAM size is not supported by the script"
|
|
ENDDO
|
|
)
|
|
)
|
|
|
|
FLASH.CLocK.AUTO
|
|
|
|
IF (&FlashSize>0x10000)&&(FLASH.TARGET.BUILD(~~/demo/arm/flash/long/&FlashDriver)<1934.)
|
|
(
|
|
PRINT %ERROR "Please request flash algorithm update to support more than 64 kByte flash"
|
|
ENDDO
|
|
)
|
|
|
|
RETURN
|