T32: Default startup scripts for ARM Cortex-M3
This commit is contained in:
@ -5,4 +5,5 @@ include_directories(${CMAKE_BINARY_DIR}/src/core)
|
|||||||
|
|
||||||
add_subdirectory(api)
|
add_subdirectory(api)
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
|
add_subdirectory(cmm)
|
||||||
|
|
||||||
|
|||||||
11
debuggers/t32/cmm/CMakeLists.txt
Normal file
11
debuggers/t32/cmm/CMakeLists.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
## Setup T32 target architecture for startup scripts
|
||||||
|
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/cmm)
|
||||||
|
configure_file(t32.cmm ${PROJECT_BINARY_DIR}/cmm/t32.cmm COPYONLY)
|
||||||
|
|
||||||
|
set(T32_ARCHITECTURE armm3 CACHE PATH "Setup target architecture for default cmm scripts (currently only armm3)")
|
||||||
|
message(STATUS "[FAIL*] T32 Architecture: ${T32_ARCHITECTURE}")
|
||||||
|
add_subdirectory(${T32_ARCHITECTURE})
|
||||||
|
|
||||||
|
message(STATUS "[FAIL*] T32 CPU name: ${T32_CPUNAME}")
|
||||||
|
|
||||||
9
debuggers/t32/cmm/armm3/CMakeLists.txt
Normal file
9
debuggers/t32/cmm/armm3/CMakeLists.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
### Configure cmm Scripts for ARM Cortex-M3
|
||||||
|
|
||||||
|
set(T32_CPUNAME STM32F103RG CACHE PATH "CPU name for SYSTEM.CPU call. (e.g. STM32F103RG)")
|
||||||
|
configure_file(armm3cfg.cmm.in ${PROJECT_BINARY_DIR}/cmm/armm3cfg.cmm)
|
||||||
|
configure_file(init.cmm ${PROJECT_BINARY_DIR}/cmm/init.cmm COPYONLY)
|
||||||
|
configure_file(loadelf.cmm ${PROJECT_BINARY_DIR}/cmm/loadelf.cmm COPYONLY)
|
||||||
|
configure_file(t32term.cmm ${PROJECT_BINARY_DIR}/cmm/t32term.cmm COPYONLY)
|
||||||
|
|
||||||
|
|
||||||
169
debuggers/t32/cmm/armm3/armm3cfg.cmm.in
Normal file
169
debuggers/t32/cmm/armm3/armm3cfg.cmm.in
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
;========================================================================
|
||||||
|
; CPU setup
|
||||||
|
|
||||||
|
IF SYSTEM.MODE()<5
|
||||||
|
(
|
||||||
|
SYStem.RESet
|
||||||
|
SYStem.CPU @T32_CPUNAME@
|
||||||
|
SYStem.Up
|
||||||
|
)
|
||||||
|
|
||||||
|
;========================================================================
|
||||||
|
; Flash declaration
|
||||||
|
|
||||||
|
FLASH.RESet
|
||||||
|
GOSUB FlashDeclaration
|
||||||
|
|
||||||
|
ENDDO
|
||||||
|
|
||||||
|
;========================================================================
|
||||||
|
; Flash declaration depending on selected CPU
|
||||||
|
|
||||||
|
FlashDeclaration:
|
||||||
|
LOCAL &FlashSize
|
||||||
|
LOCAL &RAMSize
|
||||||
|
|
||||||
|
IF ((CPU()=="STM32F100C4")||(CPU()=="STM32F100R4")||(CPU()=="STM32F101C4")||(CPU()=="STM32F101R4")||(CPU()=="STM32F101T4")||(CPU()=="STM32F102C4")||(CPU()=="STM32F102R4"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x4000
|
||||||
|
&RAMSize=0x1000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F103C4")||(CPU()=="STM32F103R4")||(CPU()=="STM32F103T4"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x4000
|
||||||
|
&RAMSize=0x1800
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F100C6")||(CPU()=="STM32F100R6"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x8000
|
||||||
|
&RAMSize=0x1000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F101C6")||(CPU()=="STM32F101R6")||(CPU()=="STM32F101T6")||(CPU()=="STM32F102C6")||(CPU()=="STM32F102R6"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x8000
|
||||||
|
&RAMSize=0x1800
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F103C6")||(CPU()=="STM32F103R6")||(CPU()=="STM32F103T6"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x8000
|
||||||
|
&RAMSize=0x2800
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F100C8")||(CPU()=="STM32F100R8")||(CPU()=="STM32F100V8"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x10000
|
||||||
|
&RAMSize=0x2000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F101C8")||(CPU()=="STM32F101R8")||(CPU()=="STM32F101T8")||(CPU()=="STM32F101V8")||(CPU()=="STM32F102C8")||(CPU()=="STM32F102R8"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x10000
|
||||||
|
&RAMSize=0x2800
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F103C8")||(CPU()=="STM32F103R8")||(CPU()=="STM32F103T8")||(CPU()=="STM32F103V8")||(CPU()=="STM32F105R8")||(CPU()=="STM32F105V8"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x10000
|
||||||
|
&RAMSize=0x2800
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F100CB")||(CPU()=="STM32F100RB")||(CPU()=="STM32F100VB"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x20000
|
||||||
|
&RAMSize=0x2000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F101CB")||(CPU()=="STM32F101RB")||(CPU()=="STM32F101VB")||(CPU()=="STM32F102CB")||(CPU()=="STM32F102RB"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x20000
|
||||||
|
&RAMSize=0x4000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F103CB")||(CPU()=="STM32F103RB")||(CPU()=="STM32F103VB"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x20000
|
||||||
|
&RAMSize=0x5000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F105RB")||(CPU()=="STM32F105VB"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x20000
|
||||||
|
&RAMSize=0x8000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F107RB")||(CPU()=="STM32F107VB"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x20000
|
||||||
|
&RAMSize=0x8000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F101RC")||(CPU()=="STM32F101VC")||(CPU()=="STM32F101ZC"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x40000
|
||||||
|
&RAMSize=0x8000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F103RC")||(CPU()=="STM32F103VC")||(CPU()=="STM32F103ZC"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x40000
|
||||||
|
&RAMSize=0xc000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F105RC")||(CPU()=="STM32F105VC")||(CPU()=="STM32F107RC")||(CPU()=="STM32F107VC"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x40000
|
||||||
|
&RAMSize=0x10000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F101RD")||(CPU()=="STM32F101VD")||(CPU()=="STM32F101ZD"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x60000
|
||||||
|
&RAMSize=0xc000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F103RD")||(CPU()=="STM32F103VD")||(CPU()=="STM32F103ZD"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x60000
|
||||||
|
&RAMSize=0x10000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F101RE")||(CPU()=="STM32F101VE")||(CPU()=="STM32F101ZE"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x80000
|
||||||
|
&RAMSize=0xc000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F103RE")||(CPU()=="STM32F103VE")||(CPU()=="STM32F103ZE"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x80000
|
||||||
|
&RAMSize=0x10000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F101RF")||(CPU()=="STM32F101VF")||(CPU()=="STM32F101ZF")||(CPU()=="STM32F103RF")||(CPU()=="STM32F103VF")||(CPU()=="STM32F103ZF"))
|
||||||
|
(
|
||||||
|
&FlashSize=0xc0000
|
||||||
|
&RAMSize=0x18000
|
||||||
|
)
|
||||||
|
ELSE IF ((CPU()=="STM32F101RG")||(CPU()=="STM32F101VG")||(CPU()=="STM32F101ZG")||(CPU()=="STM32F103RG")||(CPU()=="STM32F103VG")||(CPU()=="STM32F103ZG"))
|
||||||
|
(
|
||||||
|
&FlashSize=0x100000
|
||||||
|
&RAMSize=0x18000
|
||||||
|
)
|
||||||
|
ELSE
|
||||||
|
(
|
||||||
|
PRINT %ERROR "FLASH size of CPU type is unknown"
|
||||||
|
ENDDO
|
||||||
|
)
|
||||||
|
|
||||||
|
IF &FlashSize>=0x40000
|
||||||
|
(
|
||||||
|
FLASH.Create 1. 0x08000000++(&FlashSize-0x01) 0x800 TARGET Word
|
||||||
|
)
|
||||||
|
ELSE
|
||||||
|
(
|
||||||
|
FLASH.Create 1. 0x08000000++(&FlashSize-0x01) 0x400 TARGET Word
|
||||||
|
)
|
||||||
|
|
||||||
|
IF &FlashSize>0x80000
|
||||||
|
(
|
||||||
|
FLASH.TARGET 0x20000000 0x20001000 0x800 ~~/demo/arm/flash/word/stm32f100xl.bin
|
||||||
|
)
|
||||||
|
ELSE IF &RAMSize>=0x1800
|
||||||
|
(
|
||||||
|
FLASH.TARGET 0x20000000 0x20000800 0x800 ~~/demo/arm/flash/word/stm32f100.bin
|
||||||
|
)
|
||||||
|
ELSE IF &RAMSize>=0x1000
|
||||||
|
(
|
||||||
|
FLASH.TARGET 0x20000000 0x20000800 0x400 ~~/demo/arm/flash/word/stm32f100.bin
|
||||||
|
)
|
||||||
|
ELSE
|
||||||
|
(
|
||||||
|
DIALOG.OK "Not enough memory for flash algorithm."
|
||||||
|
ENDDO
|
||||||
|
)
|
||||||
|
|
||||||
|
RETURN
|
||||||
29
debuggers/t32/cmm/armm3/init.cmm
Normal file
29
debuggers/t32/cmm/armm3/init.cmm
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
;RESET
|
||||||
|
|
||||||
|
&t32scriptdir=OS.PPD()
|
||||||
|
|
||||||
|
;========================================================================
|
||||||
|
; CPU setup
|
||||||
|
|
||||||
|
SYStem.RESet
|
||||||
|
|
||||||
|
if OS.FILE(&(t32scriptdir)/armm3cfg.cmm)
|
||||||
|
(
|
||||||
|
DO &(t32scriptdir)/armm3cfg.cmm
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
;========================================================================
|
||||||
|
; Flash programming
|
||||||
|
;
|
||||||
|
DO &(t32scriptdir)/loadelf.cmm
|
||||||
|
|
||||||
|
|
||||||
|
;========================================================================
|
||||||
|
; Optional Parts
|
||||||
|
if OS.FILE(&(t32scriptdir)/t32term.cmm)
|
||||||
|
(
|
||||||
|
DO &(t32scriptdir)/t32term.cmm
|
||||||
|
)
|
||||||
|
|
||||||
|
ENDDO
|
||||||
15
debuggers/t32/cmm/armm3/loadelf.cmm
Normal file
15
debuggers/t32/cmm/armm3/loadelf.cmm
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
;========================================================================
|
||||||
|
; Flash programming example
|
||||||
|
|
||||||
|
FLASH.ReProgram ALL /Erase
|
||||||
|
Data.LOAD.elf &appimage /GNU /CPP /GLOBTYPES
|
||||||
|
FLASH.ReProgram off
|
||||||
|
|
||||||
|
; Verify flash programming
|
||||||
|
Data.LOAD.ELF &appimage /ComPare
|
||||||
|
|
||||||
|
; Reset device
|
||||||
|
SYStem.Down
|
||||||
|
SYStem.Up
|
||||||
|
|
||||||
|
Symbol.Demangle ON ON
|
||||||
6
debuggers/t32/cmm/armm3/t32term.cmm
Normal file
6
debuggers/t32/cmm/armm3/t32term.cmm
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
; This is currently output only, to support input we'd need a separate buffer
|
||||||
|
TERM.METHOD BUFFERE e:_ZN2hw3hal7T32Term9OutBufferE e:_ZN2hw3hal7T32Term9OutBufferE
|
||||||
|
TERM.MODE ASCII
|
||||||
|
TERM.GATE
|
||||||
|
|
||||||
|
|
||||||
10
debuggers/t32/cmm/t32.cmm
Normal file
10
debuggers/t32/cmm/t32.cmm
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
;===== Cortex-M3 Lauterbach initialisation ====
|
||||||
|
|
||||||
|
&appimage="OS.ENV(FAIL_ELF_PATH)"
|
||||||
|
|
||||||
|
DO init.cmm
|
||||||
|
|
||||||
|
VAr.Frame /LOCALS /CALLER
|
||||||
|
REGISTER /SPOTLIGHT
|
||||||
|
Data.ListAsm
|
||||||
|
|
||||||
Reference in New Issue
Block a user