Initial commit

This commit is contained in:
OneOfEleven
2023-09-09 08:03:56 +01:00
parent 92305117f1
commit 54441e27d9
3388 changed files with 582553 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/Open-CMSIS-Pack/devtools/schemas/projmgr/1.3.0/tools/projmgr/schemas/cproject.schema.json
project:
layers:
# App: CMSIS-Core Validation for Cortex-M (Bootloader part)
- layer: ../Layer/App/Bootloader_Cortex-M/App.clayer.yml
for-context:
- .AC6_low
- .AC6_mid
- .AC6_high
- .AC6_size
- .AC6_tiny
- .GCC_low
- .GCC_mid
- .GCC_high
- .GCC_size
- .GCC_tiny
- .IAR_low
- .IAR_mid
- .IAR_high
- .IAR_size
- .IAR_tiny
#Target: CM23S
- layer: ../Layer/Target/CM23S_BL/Target.clayer.yml
for-context:
- .AC6_low+CM23S
- .AC6_mid+CM23S
- .AC6_high+CM23S
- .AC6_size+CM23S
- .AC6_tiny+CM23S
- .GCC_low+CM23S
- .GCC_mid+CM23S
- .GCC_high+CM23S
- .GCC_size+CM23S
- .GCC_tiny+CM23S
- .IAR_low+CM23S
- .IAR_mid+CM23S
- .IAR_high+CM23S
- .IAR_size+CM23S
- .IAR_tiny+CM23S
#Target: CM33S
- layer: ../Layer/Target/CM33S_BL/Target.clayer.yml
for-context:
- .AC6_low+CM33S
- .AC6_mid+CM33S
- .AC6_high+CM33S
- .AC6_size+CM33S
- .AC6_tiny+CM33S
- .GCC_low+CM33S
- .GCC_mid+CM33S
- .GCC_high+CM33S
- .GCC_size+CM33S
- .GCC_tiny+CM33S
- .IAR_low+CM33S
- .IAR_mid+CM33S
- .IAR_high+CM33S
- .IAR_size+CM33S
- .IAR_tiny+CM33S
#Target: CM35PS
- layer: ../Layer/Target/CM35PS_BL/Target.clayer.yml
for-context:
- .AC6_low+CM35PS
- .AC6_mid+CM35PS
- .AC6_high+CM35PS
- .AC6_size+CM35PS
- .AC6_tiny+CM35PS
- .GCC_low+CM35PS
- .GCC_mid+CM35PS
- .GCC_high+CM35PS
- .GCC_size+CM35PS
- .GCC_tiny+CM35PS
- .IAR_low+CM35PS
- .IAR_mid+CM35PS
- .IAR_high+CM35PS
- .IAR_size+CM35PS
- .IAR_tiny+CM35PS
#Target: CM55S
- layer: ../Layer/Target/CM55S_BL/Target.clayer.yml
for-context:
- .AC6_low+CM55S
- .AC6_mid+CM55S
- .AC6_high+CM55S
- .AC6_size+CM55S
- .AC6_tiny+CM55S
- .GCC_low+CM55S
- .GCC_mid+CM55S
- .GCC_high+CM55S
- .GCC_size+CM55S
- .GCC_tiny+CM55S
- .IAR_low+CM55S
- .IAR_mid+CM55S
- .IAR_high+CM55S
- .IAR_size+CM55S
- .IAR_tiny+CM55S
#Target: CM85S
- layer: ../Layer/Target/CM85S_BL/Target.clayer.yml
for-context:
- .AC6_low+CM85S
- .AC6_mid+CM85S
- .AC6_high+CM85S
- .AC6_size+CM85S
- .AC6_tiny+CM85S
- .GCC_low+CM85S
- .GCC_mid+CM85S
- .GCC_high+CM85S
- .GCC_size+CM85S
- .GCC_tiny+CM85S
- .IAR_low+CM85S
- .IAR_mid+CM85S
- .IAR_high+CM85S
- .IAR_size+CM85S
- .IAR_tiny+CM85S

View File

@@ -0,0 +1,491 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/Open-CMSIS-Pack/devtools/schemas/projmgr/1.3.0/tools/projmgr/schemas/cproject.schema.json
project:
layers:
# App: CMSIS-Core Validation for Cortex-M
- layer: ../Layer/App/Validation_Cortex-M/App.clayer.yml
for-context:
- +CM0
- +CM0plus
- +CM3
- +CM4
- +CM4FP
- +CM7
- +CM7SP
- +CM7DP
- +CM23
- +CM23S
- +CM23NS
- +CM33
- +CM33S
- +CM33NS
- +CM35P
- +CM35PS
- +CM35PNS
- +CM55S
- +CM55NS
- +CM85S
- +CM85NS
# App: CMSIS-Core Validation for Cortex-A
- layer: ../Layer/App/Validation_Cortex-A/App.clayer.yml
for-context:
- +CA5
- +CA7
- +CA9
#Target: CM0
- layer: ../Layer/Target/CM0/Target.clayer.yml
for-context:
- .AC6_low+CM0
- .AC6_mid+CM0
- .AC6_high+CM0
- .AC6_size+CM0
- .AC6_tiny+CM0
- .GCC_low+CM0
- .GCC_mid+CM0
- .GCC_high+CM0
- .GCC_size+CM0
- .GCC_tiny+CM0
- .IAR_low+CM0
- .IAR_mid+CM0
- .IAR_high+CM0
- .IAR_size+CM0
- .IAR_tiny+CM0
#Target: CM0plus
- layer: ../Layer/Target/CM0plus/Target.clayer.yml
for-context:
- .AC6_low+CM0plus
- .AC6_mid+CM0plus
- .AC6_high+CM0plus
- .AC6_size+CM0plus
- .AC6_tiny+CM0plus
- .GCC_low+CM0plus
- .GCC_mid+CM0plus
- .GCC_high+CM0plus
- .GCC_size+CM0plus
- .GCC_tiny+CM0plus
- .IAR_low+CM0plus
- .IAR_mid+CM0plus
- .IAR_high+CM0plus
- .IAR_size+CM0plus
- .IAR_tiny+CM0plus
#Target: CM3
- layer: ../Layer/Target/CM3/Target.clayer.yml
for-context:
- .AC6_low+CM3
- .AC6_mid+CM3
- .AC6_high+CM3
- .AC6_size+CM3
- .AC6_tiny+CM3
- .GCC_low+CM3
- .GCC_mid+CM3
- .GCC_high+CM3
- .GCC_size+CM3
- .GCC_tiny+CM3
- .IAR_low+CM3
- .IAR_mid+CM3
- .IAR_high+CM3
- .IAR_size+CM3
- .IAR_tiny+CM3
#Target: CM4
- layer: ../Layer/Target/CM4/Target.clayer.yml
for-context:
- .AC6_low+CM4
- .AC6_mid+CM4
- .AC6_high+CM4
- .AC6_size+CM4
- .AC6_tiny+CM4
- .GCC_low+CM4
- .GCC_mid+CM4
- .GCC_high+CM4
- .GCC_size+CM4
- .GCC_tiny+CM4
- .IAR_low+CM4
- .IAR_mid+CM4
- .IAR_high+CM4
- .IAR_size+CM4
- .IAR_tiny+CM4
#Target: CM4FP
- layer: ../Layer/Target/CM4FP/Target.clayer.yml
for-context:
- .AC6_low+CM4FP
- .AC6_mid+CM4FP
- .AC6_high+CM4FP
- .AC6_size+CM4FP
- .AC6_tiny+CM4FP
- .GCC_low+CM4FP
- .GCC_mid+CM4FP
- .GCC_high+CM4FP
- .GCC_size+CM4FP
- .GCC_tiny+CM4FP
- .IAR_low+CM4FP
- .IAR_mid+CM4FP
- .IAR_high+CM4FP
- .IAR_size+CM4FP
- .IAR_tiny+CM4FP
#Target: CM7
- layer: ../Layer/Target/CM7/Target.clayer.yml
for-context:
- .AC6_low+CM7
- .AC6_mid+CM7
- .AC6_high+CM7
- .AC6_size+CM7
- .AC6_tiny+CM7
- .GCC_low+CM7
- .GCC_mid+CM7
- .GCC_high+CM7
- .GCC_size+CM7
- .GCC_tiny+CM7
- .IAR_low+CM7
- .IAR_mid+CM7
- .IAR_high+CM7
- .IAR_size+CM7
- .IAR_tiny+CM7
#Target: CM7SP
- layer: ../Layer/Target/CM7SP/Target.clayer.yml
for-context:
- .AC6_low+CM7SP
- .AC6_mid+CM7SP
- .AC6_high+CM7SP
- .AC6_size+CM7SP
- .AC6_tiny+CM7SP
- .GCC_low+CM7SP
- .GCC_mid+CM7SP
- .GCC_high+CM7SP
- .GCC_size+CM7SP
- .GCC_tiny+CM7SP
- .IAR_low+CM7SP
- .IAR_mid+CM7SP
- .IAR_high+CM7SP
- .IAR_size+CM7SP
- .IAR_tiny+CM7SP
#Target: CM7DP
- layer: ../Layer/Target/CM7DP/Target.clayer.yml
for-context:
- .AC6_low+CM7DP
- .AC6_mid+CM7DP
- .AC6_high+CM7DP
- .AC6_size+CM7DP
- .AC6_tiny+CM7DP
- .GCC_low+CM7DP
- .GCC_mid+CM7DP
- .GCC_high+CM7DP
- .GCC_size+CM7DP
- .GCC_tiny+CM7DP
- .IAR_low+CM7DP
- .IAR_mid+CM7DP
- .IAR_high+CM7DP
- .IAR_size+CM7DP
- .IAR_tiny+CM7DP
#Target: CM23
- layer: ../Layer/Target/CM23/Target.clayer.yml
for-context:
- .AC6_low+CM23
- .AC6_mid+CM23
- .AC6_high+CM23
- .AC6_size+CM23
- .AC6_tiny+CM23
- .GCC_low+CM23
- .GCC_mid+CM23
- .GCC_high+CM23
- .GCC_size+CM23
- .GCC_tiny+CM23
- .IAR_low+CM23
- .IAR_mid+CM23
- .IAR_high+CM23
- .IAR_size+CM23
- .IAR_tiny+CM23
#Target: CM23S
- layer: ../Layer/Target/CM23S/Target.clayer.yml
for-context:
- .AC6_low+CM23S
- .AC6_mid+CM23S
- .AC6_high+CM23S
- .AC6_size+CM23S
- .AC6_tiny+CM23S
- .GCC_low+CM23S
- .GCC_mid+CM23S
- .GCC_high+CM23S
- .GCC_size+CM23S
- .GCC_tiny+CM23S
- .IAR_low+CM23S
- .IAR_mid+CM23S
- .IAR_high+CM23S
- .IAR_size+CM23S
- .IAR_tiny+CM23S
#Target: CM23NS
- layer: ../Layer/Target/CM23NS/Target.clayer.yml
for-context:
- .AC6_low+CM23NS
- .AC6_mid+CM23NS
- .AC6_high+CM23NS
- .AC6_size+CM23NS
- .AC6_tiny+CM23NS
- .GCC_low+CM23NS
- .GCC_mid+CM23NS
- .GCC_high+CM23NS
- .GCC_size+CM23NS
- .GCC_tiny+CM23NS
- .IAR_low+CM23NS
- .IAR_mid+CM23NS
- .IAR_high+CM23NS
- .IAR_size+CM23NS
- .IAR_tiny+CM23NS
#Target: CM33
- layer: ../Layer/Target/CM33/Target.clayer.yml
for-context:
- .AC6_low+CM33
- .AC6_mid+CM33
- .AC6_high+CM33
- .AC6_size+CM33
- .AC6_tiny+CM33
- .GCC_low+CM33
- .GCC_mid+CM33
- .GCC_high+CM33
- .GCC_size+CM33
- .GCC_tiny+CM33
- .IAR_low+CM33
- .IAR_mid+CM33
- .IAR_high+CM33
- .IAR_size+CM33
- .IAR_tiny+CM33
#Target: CM33S
- layer: ../Layer/Target/CM33S/Target.clayer.yml
for-context:
- .AC6_low+CM33S
- .AC6_mid+CM33S
- .AC6_high+CM33S
- .AC6_size+CM33S
- .AC6_tiny+CM33S
- .GCC_low+CM33S
- .GCC_mid+CM33S
- .GCC_high+CM33S
- .GCC_size+CM33S
- .GCC_tiny+CM33S
- .IAR_low+CM33S
- .IAR_mid+CM33S
- .IAR_high+CM33S
- .IAR_size+CM33S
- .IAR_tiny+CM33S
#Target: CM33NS
- layer: ../Layer/Target/CM33NS/Target.clayer.yml
for-context:
- .AC6_low+CM33NS
- .AC6_mid+CM33NS
- .AC6_high+CM33NS
- .AC6_size+CM33NS
- .AC6_tiny+CM33NS
- .GCC_low+CM33NS
- .GCC_mid+CM33NS
- .GCC_high+CM33NS
- .GCC_size+CM33NS
- .GCC_tiny+CM33NS
- .IAR_low+CM33NS
- .IAR_mid+CM33NS
- .IAR_high+CM33NS
- .IAR_size+CM33NS
- .IAR_tiny+CM33NS
#Target: CM35P
- layer: ../Layer/Target/CM35P/Target.clayer.yml
for-context:
- .AC6_low+CM35P
- .AC6_mid+CM35P
- .AC6_high+CM35P
- .AC6_size+CM35P
- .AC6_tiny+CM35P
- .GCC_low+CM35P
- .GCC_mid+CM35P
- .GCC_high+CM35P
- .GCC_size+CM35P
- .GCC_tiny+CM35P
- .IAR_low+CM35P
- .IAR_mid+CM35P
- .IAR_high+CM35P
- .IAR_size+CM35P
- .IAR_tiny+CM35P
#Target: CM35PS
- layer: ../Layer/Target/CM35PS/Target.clayer.yml
for-context:
- .AC6_low+CM35PS
- .AC6_mid+CM35PS
- .AC6_high+CM35PS
- .AC6_size+CM35PS
- .AC6_tiny+CM35PS
- .GCC_low+CM35PS
- .GCC_mid+CM35PS
- .GCC_high+CM35PS
- .GCC_size+CM35PS
- .GCC_tiny+CM35PS
- .IAR_low+CM35PS
- .IAR_mid+CM35PS
- .IAR_high+CM35PS
- .IAR_size+CM35PS
- .IAR_tiny+CM35PS
#Target: CM35PNS
- layer: ../Layer/Target/CM35PNS/Target.clayer.yml
for-context:
- .AC6_low+CM35PNS
- .AC6_mid+CM35PNS
- .AC6_high+CM35PNS
- .AC6_size+CM35PNS
- .AC6_tiny+CM35PNS
- .GCC_low+CM35PNS
- .GCC_mid+CM35PNS
- .GCC_high+CM35PNS
- .GCC_size+CM35PNS
- .GCC_tiny+CM35PNS
- .IAR_low+CM35PNS
- .IAR_mid+CM35PNS
- .IAR_high+CM35PNS
- .IAR_size+CM35PNS
- .IAR_tiny+CM35PNS
#Target: CM55S
- layer: ../Layer/Target/CM55S/Target.clayer.yml
for-context:
- .AC6_low+CM55S
- .AC6_mid+CM55S
- .AC6_high+CM55S
- .AC6_size+CM55S
- .AC6_tiny+CM55S
- .GCC_low+CM55S
- .GCC_mid+CM55S
- .GCC_high+CM55S
- .GCC_size+CM55S
- .GCC_tiny+CM55S
- .IAR_low+CM55S
- .IAR_mid+CM55S
- .IAR_high+CM55S
- .IAR_size+CM55S
- .IAR_tiny+CM55S
#Target: CM55NS
- layer: ../Layer/Target/CM55NS/Target.clayer.yml
for-context:
- .AC6_low+CM55NS
- .AC6_mid+CM55NS
- .AC6_high+CM55NS
- .AC6_size+CM55NS
- .AC6_tiny+CM55NS
- .GCC_low+CM55NS
- .GCC_mid+CM55NS
- .GCC_high+CM55NS
- .GCC_size+CM55NS
- .GCC_tiny+CM55NS
- .IAR_low+CM55NS
- .IAR_mid+CM55NS
- .IAR_high+CM55NS
- .IAR_size+CM55NS
- .IAR_tiny+CM55NS
#Target: CM85S
- layer: ../Layer/Target/CM85S/Target.clayer.yml
for-context:
- .AC6_low+CM85S
- .AC6_mid+CM85S
- .AC6_high+CM85S
- .AC6_size+CM85S
- .AC6_tiny+CM85S
- .GCC_low+CM85S
- .GCC_mid+CM85S
- .GCC_high+CM85S
- .GCC_size+CM85S
- .GCC_tiny+CM85S
- .IAR_low+CM85S
- .IAR_mid+CM85S
- .IAR_high+CM85S
- .IAR_size+CM85S
- .IAR_tiny+CM85S
#Target: CM85NS
- layer: ../Layer/Target/CM85NS/Target.clayer.yml
for-context:
- .AC6_low+CM85NS
- .AC6_mid+CM85NS
- .AC6_high+CM85NS
- .AC6_size+CM85NS
- .AC6_tiny+CM85NS
- .GCC_low+CM85NS
- .GCC_mid+CM85NS
- .GCC_high+CM85NS
- .GCC_size+CM85NS
- .GCC_tiny+CM85NS
- .IAR_low+CM85NS
- .IAR_mid+CM85NS
- .IAR_high+CM85NS
- .IAR_size+CM85NS
- .IAR_tiny+CM85NS
#Target: CA5
- layer: ../Layer/Target/CA5/Target.clayer.yml
for-context:
- .AC6_low+CA5
- .AC6_mid+CA5
- .AC6_high+CA5
- .AC6_size+CA5
- .AC6_tiny+CA5
- .GCC_low+CA5
- .GCC_mid+CA5
- .GCC_high+CA5
- .GCC_size+CA5
- .GCC_tiny+CA5
- .IAR_low+CA5
- .IAR_mid+CA5
- .IAR_high+CA5
- .IAR_size+CA5
- .IAR_tiny+CA5
#Target: CA7
- layer: ../Layer/Target/CA7/Target.clayer.yml
for-context:
- .AC6_low+CA7
- .AC6_mid+CA7
- .AC6_high+CA7
- .AC6_size+CA7
- .AC6_tiny+CA7
- .GCC_low+CA7
- .GCC_mid+CA7
- .GCC_high+CA7
- .GCC_size+CA7
- .GCC_tiny+CA7
- .IAR_low+CA7
- .IAR_mid+CA7
- .IAR_high+CA7
- .IAR_size+CA7
- .IAR_tiny+CA7
#Target: CA9
- layer: ../Layer/Target/CA9/Target.clayer.yml
for-context:
- .AC6_low+CA9
- .AC6_mid+CA9
- .AC6_high+CA9
- .AC6_size+CA9
- .AC6_tiny+CA9
- .GCC_low+CA9
- .GCC_mid+CA9
- .GCC_high+CA9
- .GCC_size+CA9
- .GCC_tiny+CA9
- .IAR_low+CA9
- .IAR_mid+CA9
- .IAR_high+CA9
- .IAR_size+CA9
- .IAR_tiny+CA9

View File

@@ -0,0 +1,235 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/Open-CMSIS-Pack/devtools/schemas/projmgr/1.3.0/tools/projmgr/schemas/csolution.schema.json
solution:
packs:
- pack: ARM::CMSIS
path: ../../../
misc:
- for-compiler: AC6
C: [-std=c99, -gdwarf-4, -ffunction-sections]
Link: [--entry=Reset_Handler, --symbols, --map]
- for-compiler: GCC
C: [-std=gnu99, -gdwarf-2, -ffunction-sections, -fdata-sections]
Link: [--specs=nano.specs, --specs=rdimon.specs]
- for-compiler: IAR
Link: [--semihosting]
target-types:
#CM0
- type: CM0
device: ARMCM0
#CM0plus
- type: CM0plus
device: ARMCM0P
#CM3
- type: CM3
device: ARMCM3
#CM4
- type: CM4
device: ARMCM4
#CM4FP
- type: CM4FP
device: ARMCM4_FP
#CM7
- type: CM7
device: ARMCM7
#CM7SP
- type: CM7SP
device: ARMCM7_SP
#CM7DP
- type: CM7DP
device: ARMCM7_DP
#CM23
- type: CM23
device: ARMCM23
processor:
trustzone: off
#CM23S
- type: CM23S
device: ARMCM23_TZ
processor:
trustzone: secure
#CM23NS
- type: CM23NS
device: ARMCM23_TZ
processor:
trustzone: non-secure
#CM33
- type: CM33
device: ARMCM33_DSP_FP
processor:
trustzone: off
#CM33S
- type: CM33S
device: ARMCM33_DSP_FP_TZ
processor:
trustzone: secure
#CM33NS
- type: CM33NS
device: ARMCM33_DSP_FP_TZ
processor:
trustzone: non-secure
#CM35P
- type: CM35P
device: ARMCM35P_DSP_FP
processor:
trustzone: off
#CM35PS
- type: CM35PS
device: ARMCM35P_DSP_FP_TZ
processor:
trustzone: secure
#CM35PNS
- type: CM35PNS
device: ARMCM35P_DSP_FP_TZ
processor:
trustzone: non-secure
#CM55S
- type: CM55S
device: ARMCM55
processor:
trustzone: secure
#CM55NS
- type: CM55NS
device: ARMCM55
processor:
trustzone: non-secure
#CM85S
- type: CM85S
device: ARMCM85
processor:
trustzone: secure
#CM85NS
- type: CM85NS
device: ARMCM85
processor:
trustzone: non-secure
#CA5
- type: CA5
device: ARMCA5
#CA7
- type: CA7
device: ARMCA7
#CA9
- type: CA9
device: ARMCA9
build-types:
#AC6_low, AC6_mid, AC6_high, AC6_size, AC6_OZ,
- type: AC6_low
compiler: AC6
misc:
- for-compiler: AC6
C: [-O1]
- type: AC6_mid
compiler: AC6
misc:
- for-compiler: AC6
C: [-O2]
- type: AC6_high
compiler: AC6
misc:
- for-compiler: AC6
C: [-O3]
- type: AC6_size
compiler: AC6
misc:
- for-compiler: AC6
C: [-Os]
- type: AC6_tiny
compiler: AC6
misc:
- for-compiler: AC6
C: [-Oz]
#GCC_low, GCC_mid, GCC_high, GCC_size, GCC_OZ,
- type: GCC_low
compiler: GCC
misc:
- for-compiler: GCC
C: [-O1]
- type: GCC_mid
compiler: GCC
misc:
- for-compiler: GCC
C: [-O2]
- type: GCC_high
compiler: GCC
misc:
- for-compiler: GCC
C: [-O3]
- type: GCC_size
compiler: GCC
misc:
- for-compiler: GCC
C: [-Os]
- type: GCC_tiny
compiler: GCC
misc:
- for-compiler: GCC
C: [-Ofast]
#IAR_low
- type: IAR_low
compiler: IAR
misc:
- for-compiler: IAR
C: [-Ol, --dlib_config DLib_Config_Full.h]
- type: IAR_mid
compiler: IAR
misc:
- for-compiler: IAR
C: [-Om, --dlib_config DLib_Config_Full.h]
- type: IAR_high
compiler: IAR
misc:
- for-compiler: IAR
C: [-Oh, --dlib_config DLib_Config_Full.h]
- type: IAR_size
compiler: IAR
misc:
- for-compiler: IAR
C: [-Ohz, --dlib_config DLib_Config_Full.h]
- type: IAR_tiny
compiler: IAR
misc:
- for-compiler: IAR
C: [-Ohs, --dlib_config DLib_Config_Full.h]
projects:
- project: ./Validation.cproject.yml
- project: ./Bootloader.cproject.yml
for-context:
- +CM23S
- +CM33S
- +CM35PS
- +CM55S
- +CM85S
output-dirs:
cprjdir: ./$Project$.$BuildType$+$TargetType$
intdir: ./$Project$.$BuildType$+$TargetType$/intdir
outdir: ./$Project$.$BuildType$+$TargetType$/outdir

View File

@@ -0,0 +1,39 @@
name: "RTOS2 Validation"
workdir: ../../../
backend:
aws:
ami-version: ~=1.3
instance-type: t2.micro
upload:
- ARM.CMSIS.pdsc
- CMSIS/Core/**/*
- CMSIS/Core_A/**/*
- CMSIS/CoreValidation/**/*
- -:CMSIS/CoreValidation/Project/Core_Validation-*.zip
- -:CMSIS/CoreValidation/Project/Core_Validation-*.junit
- -:CMSIS/CoreValidation/Project/Validation.*/**/*
- -:CMSIS/CoreValidation/Project/Bootloader.*/**/*
- Device/ARM/**/*
steps:
- run: |
wget https://github.com/Open-CMSIS-Pack/cmsis-toolbox/releases/download/1.5.0/cmsis-toolbox.sh
chmod +x cmsis-toolbox.sh
sudo ./cmsis-toolbox.sh <<EOI
/opt/ctools
$CMSIS_PACK_ROOT
$(dirname $(which armclang 2>/dev/null))
$(dirname $(which armcc 2>/dev/null))
$(dirname $(which arm-none-eabi-gcc 2>/dev/null))
EOI
echo "cpackget : $(which cpackget)"
echo "csolution: $(which csolution)"
echo "cbuild : $(which cbuild)"
- run: |
pip install -r requirements.txt 2>&1
- run: |
cd CMSIS/CoreValidation/Project
python build.py --verbose -c AC6 -c GCC -d "CM[047]*" -d "CM[23]3*" build run 2>&1 || echo "Something failed!"
download:
- CMSIS/CoreValidation/Project/Core_Validation-*.zip
- CMSIS/CoreValidation/Project/Core_Validation-*.junit

View File

@@ -0,0 +1,259 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
from datetime import datetime
from enum import Enum
from glob import glob, iglob
from pathlib import Path
from lxml.etree import XMLSyntaxError
from zipfile import ZipFile
from matrix_runner import main, matrix_axis, matrix_action, matrix_command, matrix_filter, \
ConsoleReport, CropReport, TransformReport, JUnitReport
@matrix_axis("device", "d", "Device(s) to be considered.")
class DeviceAxis(Enum):
CM0 = ('Cortex-M0', 'CM0')
CM0plus = ('Cortex-M0plus', 'CM0plus')
CM3 = ('Cortex-M3', 'CM3')
CM4 = ('Cortex-M4', 'CM4')
CM4FP = ('Cortex-M4FP', 'CM4FP')
CM7 = ('Cortex-M7', 'CM7')
CM7SP = ('Cortex-M7SP', 'CM7SP')
CM7DP = ('Cortex-M7DP', 'CM7DP')
CM23 = ('Cortex-M23', 'CM23')
CM23S = ('Cortex-M23S', 'CM23S')
CM23NS = ('Cortex-M23NS', 'CM23NS')
CM33 = ('Cortex-M33', 'CM33')
CM33S = ('Cortex-M33S', 'CM33S')
CM33NS = ('Cortex-M33NS', 'CM33NS')
CM35P = ('Cortex-M35P', 'CM35P')
CM35PS = ('Cortex-M35PS', 'CM35PS')
CM35PNS = ('Cortex-M35PNS', 'CM35PNS')
CM55S = ('Cortex-M55S', 'CM55S')
CM55NS = ('Cortex-M55NS', 'CM55NS')
CM85S = ('Cortex-M85S', 'CM85S')
CM85NS = ('Cortex-M85NS', 'CM85NS')
CA5 = ('Cortex-A5', 'CA5')
CA7 = ('Cortex-A7', 'CA7')
CA9 = ('Cortex-A9', 'CA9')
# CA5NEON = ('Cortex-A5neon', 'CA5neon')
# CA7NEON = ('Cortex-A7neon', 'CA7neon')
# CA9NEON = ('Cortex-A9neon', 'CA9neon')
def has_bl(self):
return self in [
DeviceAxis.CM23NS,
DeviceAxis.CM33NS,
DeviceAxis.CM35PNS,
DeviceAxis.CM55NS,
DeviceAxis.CM85NS
]
@property
def bl_device(self):
bld = {
DeviceAxis.CM23NS: 'CM23S',
DeviceAxis.CM33NS: 'CM33S',
DeviceAxis.CM35PNS: 'CM35PS',
DeviceAxis.CM55NS: 'CM55S',
DeviceAxis.CM85NS: 'CM85S'
}
return bld[self]
@matrix_axis("compiler", "c", "Compiler(s) to be considered.")
class CompilerAxis(Enum):
AC6 = ('AC6')
AC6LTM = ('AC6LTM')
GCC = ('GCC')
IAR = ('IAR')
@property
def image_ext(self):
ext = {
CompilerAxis.AC6: 'axf',
CompilerAxis.AC6LTM: 'axf',
CompilerAxis.GCC: 'elf',
CompilerAxis.IAR: 'elf'
}
return ext[self]
@matrix_axis("optimize", "o", "Optimization level(s) to be considered.")
class OptimizationAxis(Enum):
LOW = ('low', 'O1')
MID = ('mid', 'O2')
HIGH = ('high', 'Ofast')
SIZE = ('size', 'Os')
TINY = ('tiny', 'Oz')
MODEL_EXECUTABLE = {
DeviceAxis.CM0: ("VHT_MPS2_Cortex-M0", []),
DeviceAxis.CM0plus: ("VHT_MPS2_Cortex-M0plus", []),
DeviceAxis.CM3: ("VHT_MPS2_Cortex-M3", []),
DeviceAxis.CM4: ("VHT_MPS2_Cortex-M4", []),
DeviceAxis.CM4FP: ("VHT_MPS2_Cortex-M4", []),
DeviceAxis.CM7: ("VHT_MPS2_Cortex-M7", []),
DeviceAxis.CM7DP: ("VHT_MPS2_Cortex-M7", []),
DeviceAxis.CM7SP: ("VHT_MPS2_Cortex-M7", []),
DeviceAxis.CM23: ("VHT_MPS2_Cortex-M23", []),
DeviceAxis.CM23S: ("VHT_MPS2_Cortex-M23", []),
DeviceAxis.CM23NS: ("VHT_MPS2_Cortex-M23", []),
DeviceAxis.CM33: ("VHT_MPS2_Cortex-M33", []),
DeviceAxis.CM33S: ("VHT_MPS2_Cortex-M33", []),
DeviceAxis.CM33NS: ("VHT_MPS2_Cortex-M33", []),
DeviceAxis.CM35P: ("VHT_MPS2_Cortex-M35P", []),
DeviceAxis.CM35PS: ("VHT_MPS2_Cortex-M35P", []),
DeviceAxis.CM35PNS: ("VHT_MPS2_Cortex-M35P", []),
DeviceAxis.CM55S: ("VHT_MPS2_Cortex-M55", []),
DeviceAxis.CM55NS: ("VHT_MPS2_Cortex-M55", []),
DeviceAxis.CM85S: ("VHT_MPS2_Cortex-M85", []),
DeviceAxis.CM85NS: ("VHT_MPS2_Cortex-M85", []),
DeviceAxis.CA5: ("FVP_VE_Cortex-A5x1", []),
DeviceAxis.CA7: ("FVP_VE_Cortex-A7x1", []),
DeviceAxis.CA9: ("FVP_VE_Cortex-A9x1", []),
# DeviceAxis.CA5NEON: ("FVP_VE_Cortex-A5x1", []),
# DeviceAxis.CA7NEON: ("FVP_VE_Cortex-A7x1", []),
# DeviceAxis.CA9NEON: ("FVP_VE_Cortex-A9x1", [])
}
def config_suffix(config, timestamp=True):
suffix = f"{config.compiler[0]}-{config.optimize[0]}-{config.device[1]}"
if timestamp:
suffix += f"-{datetime.now().strftime('%Y%m%d%H%M%S')}"
return suffix
def image_name(config):
return f"Validation"
def project_name(config):
return f"Validation.{config.compiler}_{config.optimize}+{config.device[1]}"
def bl_image_name(config):
return f"Bootloader"
def bl_project_name(config):
return f"Bootloader.{config.compiler}_{config.optimize}+{config.device.bl_device}"
def output_dir(config):
return "outdir"
def bl_output_dir(config):
return "outdir"
def model_config(config):
return f"../Layer/Target/{config.device[1]}/model_config.txt"
@matrix_action
def clean(config):
"""Build the selected configurations using CMSIS-Build."""
yield cbuild_clean(f"{project_name(config)}/{project_name(config)}.cprj")
@matrix_action
def build(config, results):
"""Build the selected configurations using CMSIS-Build."""
if config.device.has_bl():
logging.info("Compiling Bootloader...")
yield csolution(f"{bl_project_name(config)}")
yield cbuild(f"{bl_project_name(config)}/{bl_project_name(config)}.cprj")
logging.info("Compiling Tests...")
if config.compiler == CompilerAxis.GCC and config.device.match("CA*"):
ldfile = Path(f"{project_name(config)}/RTE/Device/ARM{config.device[1]}/ARM{config.device[1]}.ld")
infile = ldfile.replace(ldfile.with_suffix('.ld.in'))
yield preprocess(infile, ldfile)
yield csolution(f"{project_name(config)}")
yield cbuild(f"{project_name(config)}/{project_name(config)}.cprj")
if not all(r.success for r in results):
return
file = f"Core_Validation-{config_suffix(config)}.zip"
logging.info(f"Archiving build output to {file}...")
with ZipFile(file, "w") as archive:
for content in iglob(f"{project_name(config)}/**/*", recursive=True):
if Path(content).is_file():
archive.write(content)
@matrix_action
def extract(config):
"""Extract the latest build archive."""
archives = sorted(glob(f"RTOS2_Validation-{config_suffix(config, timestamp=False)}-*.zip"), reverse=True)
yield unzip(archives[0])
@matrix_action
def run(config, results):
"""Run the selected configurations."""
logging.info("Running Core Validation on Arm model ...")
yield model_exec(config)
try:
results[0].test_report.write(f"Core_Validation-{config_suffix(config)}.junit")
except RuntimeError as e:
if isinstance(e.__cause__, XMLSyntaxError):
logging.error("No valid test report found in model output!")
else:
logging.exception(e)
@matrix_command()
def cbuild_clean(project):
return ["cbuild", "-c", project]
@matrix_command()
def unzip(archive):
return ["bash", "-c", f"unzip {archive}"]
@matrix_command()
def preprocess(infile, outfile):
return ["arm-none-eabi-gcc", "-xc", "-E", infile, "-P", "-o", outfile]
@matrix_command()
def csolution(project):
return ["csolution", "convert", "-s", "Validation.csolution.yml", "-c", project]
@matrix_command()
def cbuild(project):
return ["cbuild", project]
@matrix_command(test_report=ConsoleReport() |
CropReport('<\?xml version="1.0"\?>', '</report>') |
TransformReport('validation.xsl') |
JUnitReport(title=lambda title, result: f"{result.command.config.compiler}."
f"{result.command.config.optimize}."
f"{result.command.config.device}."
f"{title}"))
def model_exec(config):
cmdline = [MODEL_EXECUTABLE[config.device][0], "-q", "--simlimit", 100, "-f", model_config(config)]
cmdline += MODEL_EXECUTABLE[config.device][1]
cmdline += ["-a", f"{project_name(config)}/{output_dir(config)}/{image_name(config)}.{config.compiler.image_ext}"]
if config.device.has_bl():
cmdline += ["-a", f"{bl_project_name(config)}/{bl_output_dir(config)}/{bl_image_name(config)}.{config.compiler.image_ext}"]
return cmdline
if __name__ == "__main__":
main()

View File

@@ -0,0 +1 @@
ARM.CMSIS.5.9.0

View File

@@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
#
# Python requirements for build.py script
#
python-matrix-runner~=1.0
lxml~=4.8

View File

@@ -0,0 +1,42 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<testsuites>
<xsl:variable name="buildName" select="//report/test/title"/>
<xsl:variable name="numberOfTests" select="//report/test/summary/tcnt"/>
<xsl:variable name="numberOfExecutes" select="//report/test/summary/exec"/>
<xsl:variable name="numberOfPasses" select="//report/test/summary/pass"/>
<xsl:variable name="numberOfFailures" select="//report/test/summary/fail"/>
<xsl:variable name="numberOfSkips" select="$numberOfTests - $numberOfExecutes"/>
<xsl:variable name="numberOfErrors" select="0"/>
<testsuite name="{$buildName}"
tests="{$numberOfTests}" time="0"
failures="{$numberOfFailures}" errors="{$numberOfErrors}"
skipped="{$numberOfSkips}">
<xsl:for-each select="//report/test/test_cases/tc">
<xsl:variable name="testName" select="func"/>
<xsl:variable name="status" select="res"/>
<testcase name="{$testName}">
<xsl:choose>
<xsl:when test="res='PASSED'"/>
<xsl:when test="res='NOT EXECUTED'">
<skipped/>
</xsl:when>
<xsl:otherwise>
<failure>
<xsl:for-each select="dbgi/detail">
<xsl:variable name="file" select="module"/>
<xsl:variable name="line" select="line"/>
<xsl:text>&#10; </xsl:text>
<xsl:value-of select="$file"/>:<xsl:value-of select="$line"/>
</xsl:for-each>
<xsl:text>&#10; </xsl:text>
</failure>
</xsl:otherwise>
</xsl:choose>
</testcase>
</xsl:for-each>
</testsuite>
</testsuites>
</xsl:template>
</xsl:stylesheet>