📄 jload.cmm
字号:
;****************************************************************************
;** jload.CMM **
;** This script sets up MSM6250 for software load **
;** and debug **
;** **
;** Changes: **
;** 05-12-03 MSM6250 changes **
;** 05-01-02 First version **
;** 09-25-02 Cleanup **
;****************************************************************************
;This .cmm script acts as a main routine for setting up a MSM6250 platform.
;
; detect if this script has already been run -- only do this for parts that
; get called when the jtag reconnects with the target
;
;
;
; CMM script variables
;
;
;
; image to load to target
global &ELFname
global &ELFdir
ENTRY &ELFname
IF "&ELFname"!=""
(
&ELFdir=OS.FILE.PATH(&ELFname)
//PRINT "&ELFdir"
&ELFname=OS.FILE.NAME(&ELFname)
//PRINT "&ELFname"
)
; load up globals, reset config to blank
DO Constants.cmm
WinClear
System.Reset
map.reset
; WINDOW work, pre-load
;winpos X.start y.start x.width y.height x.scalearea y.scalearea name mode title
; WinPOS sets up the parameters for the next window-generating command
; start, width, height parameters can be in
; % (percentage) of the T32 app window, upper left is 0%,0%
; nn. (integer), in units of rows or columns of text
; for scale area, see online help (units of rows & cols only)
; Delete all existing windows.
WinPage.Reset
SCREEN.ON // refresh screen after every print command
;create CMM logging window, named LOG_WIN
WINPOS 50% 5% 50. 20. 0. 0. LOG_WIN NORMAL "CMM Log Window"
area
&DATE=CLOCK.DATE()
&TIME=CLOCK.TIME()
PRINT " "
PRINT "JLOAD &ELFname commenced &DATE at &TIME"
;
; system options
;
;
; Turbo mode of debug state accesses - CPU makes checks of memory access in debug mode
System.Option TURBO off
; Disable "Emulator berr error"
System.Option ShowError OFF
; Disassembler selection - Automatically selects correct one.
System.Option DisMode Auto
; select CPU and options
SYSTEM.CPU ARM926EJ
SYSTEM.OPTION BIGENDIAN OFF
SYSTEM.OPTION ENRESET ON
; jtag clock is set for real in DetectTarget.cmm
system.jtagclock 1000000. //hack in a safe value until detecttarget
system.up
;
; Target specific setup information
;
;
;
&TARGET_TYPE="MASTODON_SURF" //MASTODON_SURF, FFA
do DetectTarget
do didwdogreset
local &platform &memconf &temp
IF "&ELFname"!=""
(
&platform=STRING.CHAR("&ELFname",0)
&memconf=STRING.CHAR("&ELFname",1)
;
; Check SURF/FFA first
;
IF CONV.CHAR(&platform)=='S'
(
IF STRING.SCAN("&TARGET_TYPE","SURF",0)==-1
(
print "ERROR: Image is for SURF, target is not a SURF (&TARGET_TYPE)"
enddo
)
)
ELSE IF CONV.CHAR(&platform)=='s'
(
IF STRING.SCAN("&TARGET_TYPE","SURF",0)==-1
(
print "ERROR: Image is for SURF, target is not a SURF (&TARGET_TYPE)"
enddo
)
)
ELSE IF CONV.CHAR(&platform)=='F'
(
IF STRING.SCAN("&TARGET_TYPE","FFA",0)==-1
(
print "ERROR: Image is for FFA, target is not an FFA (&TARGET_TYPE)"
enddo
)
)
ELSE IF CONV.CHAR(&platform)=='f'
(
IF STRING.SCAN("&TARGET_TYPE","FFA",0)==-1
(
print "ERROR: Image is for FFA, target is not an FFA (&TARGET_TYPE)"
enddo
)
)
;
; CHECK memory config now
;
IF CONV.CHAR(&memconf)=='S'
(
&SHADOW_MODE=0x1
IF STRING.SCAN("&BOOT_MODE","NOR",0)==-1
(
print "ERROR: Image is for Shadow, mem config is not NOR (&BOOT_MODE)"
enddo
)
)
ELSE IF CONV.CHAR(&memconf)=='s'
(
&SHADOW_MODE=0x1
IF STRING.SCAN("&BOOT_MODE","NOR",0)==-1
(
print "ERROR: Image is for Shadow, mem config is not NOR (&BOOT_MODE)"
enddo
)
)
ELSE IF CONV.CHAR(&memconf)=='A'
(
IF STRING.SCAN("&BOOT_MODE","NOR",0)==-1
(
print "ERROR: Image is for Async, mem config is not NOR (&BOOT_MODE)"
enddo
)
PRINT "You're loading a NOR build without using JFLASH -- please use JFLASH instead"
PRINT "Starting JFLASH for you..."
PRINT "cd.do ..\..\tools\jtag\jf29bds640 &ELFdir &ELFname"
cd.do ..\..\tools\jtag\jf29bds640 &ELFdir &ELFname
cd ..\..\build\ms
enddo
)
ELSE IF CONV.CHAR(&memconf)=='B'
(
IF STRING.SCAN("&BOOT_MODE","NOR",0)==-1
(
print "ERROR: Image is for Burst, mem config is not NOR (&BOOT_MODE)"
enddo
)
PRINT "You're loading a burst build without using JFLASH -- please use JFLASH instead"
PRINT "Starting JFLASH for you..."
PRINT "cd.do ..\..\tools\jtag\jf29bds640 &ELFdir &ELFname"
cd.do ..\..\tools\jtag\jf29bds640 &ELFdir &ELFname
cd ..\..\build\ms
enddo
)
ELSE IF CONV.CHAR(&memconf)=='b'
(
IF STRING.SCAN("&BOOT_MODE","NOR",0)==-1
(
print "ERROR: Image is for Burst, mem config is not NOR (&BOOT_MODE)"
enddo
)
PRINT "You're loading a burst build without using JFLASH -- please use JFLASH instead"
PRINT "Starting JFLASH for you..."
PRINT "cd.do ..\..\tools\jtag\jf29bds640 &ELFdir &ELFname"
cd.do ..\..\tools\jtag\jf29bds640 &ELFdir &ELFname
cd ..\..\build\ms
enddo
)
ELSE IF CONV.CHAR(&memconf)=='N'
(
IF STRING.SCAN("&BOOT_MODE","NAND",0)==-1
(
print "ERROR: Image is for SDRAM/NAND, mem config is not SDRAM/NAND (&BOOT_MODE)"
enddo
)
)
ELSE IF CONV.CHAR(&memconf)=='M'
(
IF STRING.SCAN("&BOOT_MODE","NAND",0)==-1
(
print "ERROR: Image is for SDRAM/NAND, mem config is not SDRAM/NAND (&BOOT_MODE)"
enddo
)
)
)
;
;
; Establish the memory map for the memory configuration, and set flags
; for the memories to configure
;
;
do setupMemMap
;
; get clock rates setup, for JTAG session. doesn't change clocks used during boot
&MCLK_RATE=19200000. // don't forget the decimal or you'll be using 19.2mil hex
&HCLK_RATE=19200000.
&MEM_CTL_MARGIN_NS=5. // timing margin for memory controller settings, in nanoseconds
; 5ns is a reasonable number when things are stable
;
;
; Setup MSM for download -- memory registers, GPIOs, Memory controller if needed
;
do setupmems
;
;
;
; Setup environment defaults
;
Symbol.AsmFrame on
Symbol.CutLine 3
Symbol.Spath + ".."
Symbol.case off
;
;
; Download and set initial breakpoints
;
; load the image
IF "&ELFname"==""
(
area.create WARNING 120. 60.
AREA.view WARNING
AREA.select WARNING
PRINT " use 'DO JLOAD <buildtype>' to check memory config against loaded image!"
PRINT " "
PRINT " "
PRINT " "
PRINT " "
PRINT " "
PRINT " "
PRINT " "
PRINT " "
PRINT " "
PRINT " "
PRINT " "
PRINT " "
PRINT " "
WAIT 3.s
area.close WARNING
area.select A000
print "select file to program in browser: "
d.load.elf *.elf
)
ELSE
(
print "Loading &ELFname.elf target image "
data.load.elf &ELFdir\&ELFname.elf
)
; resets registers
register.reset
; setup breakpoints
break.delete /all
do breakpoints.cmm
tronchip.set RESET off
;
;
;
; Setup Path for source code (y.spath env variable)
;
;
do setupyspath.cmm
;
;
;
; Window Setup
;
;
;
do setupWindows.cmm
;
; ETM setup
;
do setupETM.cmm
PRINT "Completed JLOAD &ELFname ..."
PRINT " ...for &TARGET_TYPE boot: &BOOT_MODE"
ENDDO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -