📄 mpc551x.cmm
字号:
;
; Example script for programming of MPC551x internal flash.
;
; Internal Flash Memory 1.0 MByte:
; Low address range 256 kByte (8x 16kByte, 2x 64 kByte)
; 0x00000000--0x0003ffff
; Mid address range 256 kByte (2 * 128 kByte)
; 0x00040000--0x0007ffff
; High address range 512 kByte (4 * 128 kByte)
; 0x00080000--0x000fffff
; Shadow row 32 kByte
; 0x00ff8000--0x00ffffff
;
; Internal SRAM 48 kByte
; 0x40000000--0x4000bfff
;
; Flash register base address is 0xc3f88000
;
; Flash algorithm may depend on processor revision:
; MPC551x all revisions h7fb5510_v323.bin or higher
;
; h7fb5510.bin contains latest version of flash algorithm.
;
; NOTES:
;
; Flash register base address has to be 0xffff8000, because target
; program does currently not support another base address.
;
; wrd - 26.02.2007
;
&flashbase=0x00000000
&shadowbase=0x00ff8000
&rambase=0x40000000
&flashdriver="tbd.bin"
&flashsize=0x000100000
; Optimize flash programming time by switching on PLL
; Check thar the PLL setup is matching your target before
; enabling this option
&optimize=0
;========================================================================
; CPU setup
SYStem.RESet
SYStem.BdmClock 4.0MHz
SYStem.CPU MPC5516
SYStem.Up
if &optimize==1
(
; setup PLL
Data.Set A:0xFFFE89A0 %LONG 0y00XXxxxxXXXXxxxxXXXXxxxxXXXXxxxx
Data.Set A:0xFFFF0008 %LONG 0xF0020080
Data.Set A:0xFFFF000C %LONG 0x00000007
WAIT 100.ms
Data.Set A:0xFFFF000C %LONG 0x00000005
Data.Set A:0xFFFE89A0 %LONG 0y00XXxxxxXXXXxxxxXXXXxxxxXXXXxxxx
; set JTAG clock to 25 MHz
SYStem.BdmClock 25MHz
)
; initialize internal SRAM
Data.Set EA:0x40000000--0x4000bfff %quad 0
; setup MMU for flash, RAM and register access
MMU.TLB1.SET 0x1 0xC0000500 0xFFF0000A 0xFFF0003F
MMU.TLB1.SET 0x2 0xC0000400 0x40000008 0x4000003F
MMU.TLB1.SET 0x3 0xC0000700 0x00000000 0x0000003F
;========================================================================
; Check SIU_MIDR register to select flash driver depending on processor
; revision
&flashdriver="~~/demo/powerpc/flash/quad/h7fb5510.bin"
;========================================================================
; Flash declaration
FLASH.RESet
FLASH.Create 1. (&flashbase+0x00000000)++0x03fff TARGET Quad 0. ; L0
FLASH.Create 1. (&flashbase+0x00004000)++0x03fff TARGET Quad 1. ; L1
FLASH.Create 1. (&flashbase+0x00008000)++0x03fff TARGET Quad 2. ; L2
FLASH.Create 1. (&flashbase+0x0000C000)++0x03fff TARGET Quad 3. ; L3
FLASH.Create 1. (&flashbase+0x00010000)++0x03fff TARGET Quad 4. ; L4
FLASH.Create 1. (&flashbase+0x00014000)++0x03fff TARGET Quad 5. ; L5
FLASH.Create 1. (&flashbase+0x00018000)++0x03fff TARGET Quad 6. ; L6
FLASH.Create 1. (&flashbase+0x0001C000)++0x03fff TARGET Quad 7. ; L7
FLASH.Create 1. (&flashbase+0x00020000)++0x0ffff TARGET Quad 8. ; L8
FLASH.Create 1. (&flashbase+0x00030000)++0x0ffff TARGET Quad 9. ; L9
FLASH.Create 2. (&flashbase+0x00040000)++0x1ffff TARGET Quad 0. ; M0
FLASH.Create 2. (&flashbase+0x00060000)++0x1ffff TARGET Quad 1. ; M1
&flashaddr=&flashbase+0x00080000
&Hx=0.
while &flashaddr<(&flashbase+0x000100000)
(
FLASH.Create 3. &flashaddr++0x1ffff TARGET Quad &Hx ; H0..H3
&flashaddr=&flashaddr+0x20000
&Hx=&Hx+1.
)
; Shadow row
FLASH.Create 4. (&shadowbase+0x00000000)++0x7fff NOP Quad
FLASH.TARGET E:&rambase E:&rambase+0x2000 0x1000 &flashdriver
;========================================================================
; Flash programming example
;
; Flash programming speed is about three times faster when memory class E:
; is used for data buffer (DUALPORT memory access). For DUALPORT access it
; is required to setup MemAccess NEXUS for both, NEXUS and JTAG debugger.
DIALOG.YESNO "Program flash memory?"
entry &progflash
if &progflash
(
FLASH.Auto ALL
; optional set unused flash memory to 0xFF
;Data.Set E:0x00--(&flashsize-1) %Quad 0xFFFFFFFFFFFFFFFF
Data.LOAD * E:0x00--(&flashsize-1)
FLASH.Auto OFF
)
;set JTAG clock back to default
SYStem.BdmClock 4MHz
ENDDO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -