; -------------------------------------------------------------------------------- ; @Title: Load the Position Independent Sieve Demo ; @Description: ; ; Load the position independent sieve demo into RAM. ; The base address of the RAM is required. The instruction set supported by ; the CPU is automatically detected by the CORENAME(). ; Prerequisites: ; * System is connected ; * RAM is accessible Read/Write/Execute ; * 12k of RAM required ; ; Usage: ; DO ~~/demo/arm/compiler/gnu-pic/demo_sieve ; e.g. DO ~~/demo/arm/compiler/gnu-pic/demo_sieve 0x1000 ; ; @Author: AME ; @Copyright: (C) 1989-2019 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: demo_sieve.cmm 15223 2019-11-05 16:29:45Z bschroefel $ PRIVATE &arm &armbe &thumbv4 &thumbv6m &thumb_ii_v7 PRIVATE ¶m &offset ENTRY ¶m IF "¶m"==""&&INTERFACE.SIM() ¶m=0x0 GOSUB ParseParameters ¶m RETURNVALUES &offset GOSUB GetCpuModes RETURNVALUES &arm &armbe &thumbv4 &thumbv6m &thumb_ii_v7 IF &arm Data.LOAD.Elf ~~~~/sieve_arm.elf &offset /RelPATH /Verify ELSE IF &armbe Data.LOAD.Elf ~~~~/sieve_armbe.elf &offset /RelPATH /Verify ELSE IF &thumbv4 Data.LOAD.Elf ~~~~/sieve_thumb_v4.elf &offset /RelPATH /Verify ELSE IF &thumbv6m Data.LOAD.Elf ~~~~/sieve_thumb_v6m.elf &offset /RelPATH /Verify ELSE IF &thumb_ii_v7 Data.LOAD.Elf ~~~~/sieve_thumb_ii_v7m.elf &offset /RelPATH /Verify ELSE ( PRINT %ERROR "Error: Coretype not supported by this script." ENDDO FALSE() ) ENDDO TRUE() ; -------------------------------------------------------------------------------- ; SUBROUTINES ; ParseParameters: ;(param) ( PRIVATE ¶m &offset ENTRY ¶m &offset=STRing.SCANAndExtract("¶m","0x","") IF "&offset"=="" ( PRINT %ERROR "Error: Missing Argument - Usage DO demo_sieve.cmm 0x " ENDDO FALSE() ) ; ensure parameter is HEX and round down to the nearest LONG &offset="0x&offset" &offset=(&offset)&~0x3 IF !SYStem.Up() ( PRINT %ERROR "Error: Not connected to target. - Please use SYStem.Up before." ENDDO FALSE() ) RETURN "&offset" ) GetCpuModes: ;() ( PRIVATE &arm &armbe &thumbv4 &thumbv6m &thumb_ii_v7 &arm=FALSE() &armbe=FALSE() &thumbv4=FALSE() &thumbv6m=FALSE() &thumb_ii_v7=FALSE() &arm=&arm||(STRing.SCAN(CORENAME(),"CORTEXA",0)>=0) &arm=&arm||(STRing.SCAN(CORENAME(),"CORTEXR",0)>=0) &arm=&arm||(STRing.SCAN(CORENAME(),"ARM7",0)>=0) &arm=&arm||(STRing.SCAN(CORENAME(),"ARM9",0)>=0) &arm=&arm||(STRing.SCAN(CORENAME(),"ARM11",0)>=0) if (&arm&&(STRing.SCAN(CORENAME(),"CORTEXR",0)>=0)) ( IF ((Data.Long(C15:0x1)&0x80000000)!=0x0) ( &armbe=TRUE() &arm=FALSE() ) ) &thumbv6m=&thumbv6m||(STRing.SCAN(CORENAME(),"CORTEXM0",0)>=0) &thumbv6m=&thumbv6m||(STRing.SCAN(CORENAME(),"CORTEXM1",0)>=0) &thumbv6m=&thumbv6m||(STRing.SCAN(CORENAME(),"CORTEXM23",0)>=0) &thumb_ii_v7=&thumb_ii_v7||(STRing.SCAN(CORENAME(),"CORTEXM3",0)>=0) &thumb_ii_v7=&thumb_ii_v7||(STRing.SCAN(CORENAME(),"CORTEXM4",0)>=0) &thumb_ii_v7=&thumb_ii_v7||(STRing.SCAN(CORENAME(),"CORTEXM7",0)>=0) &thumb_ii_v7=&thumb_ii_v7||(STRing.SCAN(CORENAME(),"CORTEXM33",0)>=0) RETURN "&arm" "&armbe" "&thumbv4" "&thumbv6m" "&thumb_ii_v7" )