; --------------------------------------------------------------------------------
; @Title: Linux Demo for TRACE32 OS Awareness
; @Description: 
;   
;   This batchfile demonstrates the use of the OS Awareness for Linux
;   
;   The example is generated for an Freescale MPC5121ADS board using an ICD.
;   It will NOT run on any other board, but may be used as a template
;   for others.
;   
; @Keywords: awareness, linux, mpc5121ads, RTOS
; @Author: DIE
; @Board: MPC5121ADS
; @Chip: MPC5121
; @Copyright: (C) 1989-2015 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: linux.cmm 13125 2018-09-11 14:03:01Z rdienstbeck $


;

  LOCAL &ka_path &awareness

  RESet
  WinPAGE.RESet

;open terminal window
  WinPOS 97.571 0.23077 80. 14. 0. 0. W001
  DO ~~\demo\etc\terminal\serial\term.cmm COM1 115200.

;debugger setup
  SYStem.CPU MPC5121
  SYStem.Option WATCHDOG ON
  SYStem.BdmClock 50MHz
  SYStem.Option MMUspaces ON       ; enable space ids to virtual addresses
  SYStem.Up
  Go.direct

;load debug symbols of kernel
  Data.LOAD.Elf vmlinux /NoCODE /StripPART 5 /SOURCEPATH "D:\Linux-BSPs\linux"

;prevent debugger memory accesses to unimplemented memory
  MAP.RESet
  MAP.DenyAccess   A:0x00000000--0xFFFFFFFF
  MAP.NoDenyAccess A:0x00000000--0x1FFFFFFF ;allow access to SDRAM    (512 MBytes)
  MAP.NoDenyAccess A:0x80000000--0x800FFFFF ;allow access to IMMR     (  1 MBytes)
  MAP.NoDenyAccess A:0x82000000--0x8200FFFF ;allow access to LPC_CS2  ( 16 KBytes)
  MAP.NoDenyAccess A:0x84000000--0x84FFFFFF ;allow access to PCI_LAW1 ( 16 MBytes)
  MAP.NoDenyAccess A:0xA0000000--0xBFFFFFFF ;allow access to PCI_LAW0 (512 MBytes)
  MAP.NoDenyAccess A:0xFC000000--0xFCFFFFFF ;allow access to LPC_CS0  ( 16 MBytes)

;MMU configuration
  TRANSlation.RESet
  MMU.FORMAT LINUX26 swapper_pg_dir
  
;set up debugger's address translation  
  TRANSlation.Create 0xC0000000--0xDFFFFFFF 0x00000000
  TRANSlation.COMMON 0xC0000000--0xFFFFFFFF
  TRANSlation.ON
  TRANSlation.TableWalk ON                               ; debugger uses a table walk to decode virtual addresses

;RTOS support
 
 ; check linux major version
 IF STRing.SCAN(Data.STRing(linux_banner), "Linux version 2.", 0)==0
 (
     &ka_path="~~/demo/powerpc/kernel/linux/linux-2.x"
     &awareness="linux.t32"
 )
 ELSE
 (
     &ka_path="~~/demo/powerpc/kernel/linux/linux-3.x"
     &awareness="linux3.t32"  
 )
 
 PRINT "initializing RTOS support..."
 TASK.CONFIG &ka_path/&awareness       	; loads Linux awareness 
 MENU.ReProgram &ka_path/linux    	; loads Linux menu 
  
 TASK.sYmbol.Option AutoLoad Process

;open some windows
  WinPOS 97.143 17.385 80. 33. 0. 1. W003
  WinTABS 9. 17. 11. 7. 7. 8. 5. 9. 4.
  TASK.DTASK

  WinPOS 0.28571 0.38462 91. 21. 18. 1. W002
  WinTABS 10. 10. 25. 62.
  List.auto

  WinPOS 0.85714 26.846 77. 21. 0. 0. W004
  Register.view

;group kernel area to be displayed with red bar
  GROUP.Create "kernel" 0xC0000000--0xFFFFFFFF /RED

ENDDO
