; --------------------------------------------------------------------------------
; @Title: Example script for programming of MPC5726L/SPC572L (Lavaredo) internal flash.
;
; @Description: -
; @Author: rweiss
; @Chip: MPC5726L SPC572L*
; @Copyright: (C) 1989-2014 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Rev: 2903 $
; $Id: jpc572l.cmm 2903 2014-07-16 11:19:46Z kjmal $
;

; Check if script is called with parameters
; Valid parameters:
;   PREPAREONLY     : prepare flash programming without user interaction
;   SKIPCONFIG      : skip configuration part to allow script external configuration
  LOCAL &parameters &param_prepareonly &param_skipconfig
  ENTRY %LINE &parameters
  &param_prepareonly=(STRing.SCAN(STRing.UPpeR("&parameters"),"PREPAREONLY",0)!=-1)
  &param_skipconfig=(STRing.SCAN(STRing.UPpeR("&parameters"),"SKIPCONFIG",0)!=-1)

; --------------------------------------------------------------------------------
; CPU setup

  IF !&param_skipconfig
  (
    SYStem.RESet
    SYStem.BdmClock 2.0MHz
    SYStem.DETECT.CPU
    SYStem.Option.WATCHDOG OFF
    SYStem.Up

    ; Initialize internal SRAM (only partially used)
    Data.Set EA:0x40000000--0x4000ffff %Quad 0
  )

; --------------------------------------------------------------------------------
; Flash declaration

  FLASH.RESet

  ; Low address space
  FLASH.Create 1. 0x00404000--0x00405FFF NOP    Quad 0x0000 /INFO "BAF - read only"
  ; High address space
  FLASH.Create 3. 0x00800000--0x00803FFF TARGET Quad 0x0200
  FLASH.Create 3. 0x00804000--0x00807FFF TARGET Quad 0x0201
  ; 256k address space
  FLASH.Create 4. 0x01000000--0x0103FFFF TARGET Quad 0x0300
  FLASH.Create 4. 0x01040000--0x0107FFFF TARGET Quad 0x0301
  FLASH.Create 4. 0x01080000--0x010BFFFF TARGET Quad 0x0302
  FLASH.Create 4. 0x010C0000--0x010FFFFF TARGET Quad 0x0303
  FLASH.Create 4. 0x01100000--0x0113FFFF TARGET Quad 0x0304
  FLASH.Create 4. 0x01140000--0x0117FFFF TARGET Quad 0x0305
  ; UTEST address space
  FLASH.Create 6. 0x00400000--0x00401FFF TARGET Quad 0x0500 /OTP /INFO "UTEST"

  ; Overlay enabled mapping
  FLASH.CreateALIAS 0x08A00000--0x08FFFFFF 0x00A00000   ; Small & medium flash blocks
  FLASH.CreateALIAS 0x09000000--0x09FFFFFF 0x01000000   ; Large flash blocks

  FLASH.TARGET E:0x40000000 E:0x40002000 0x1000 ~~/demo/powerpc/flash/quad/c55fmspc570s.bin /STACKSIZE 0x0200

  ;flash script ends here if called with parameter PREPAREONLY
  IF &param_prepareonly
    ENDDO

; --------------------------------------------------------------------------------
; Flash programming

  DIALOG.YESNO "Flash programming prepared. Program flash memory now?"
  LOCAL &progflash
  ENTRY &progflash

  IF &progflash 
  (
    FLASH.ReProgram ALL /Erase
    Data.LOAD.auto *
    FLASH.ReProgram.off 
  )
  ELSE
  (
    FLASH.List
  )

  ENDDO
