-
Notifications
You must be signed in to change notification settings - Fork 7
168 lines (146 loc) · 4.99 KB
/
arm.yml
File metadata and controls
168 lines (146 loc) · 4.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
name: IAR project on GitHub Actions
# This workflow uses cloud-ready images with
# the IAR Build Tools for Arm with ST device support
# from: https://github.com/orgs/iarsystems/packages/arm
on:
# Run the workflow when new code is pushed to the repository
push:
# Run the workflow manually
workflow_dispatch:
# Run the workflow on a nightly schedule
schedule:
- cron: "0 3 * * *"
# Set a new GitHub Actions Secret named IAR_LMS_BEARER_TOKEN
# for your repository. The secret is then propagated to an
# Environment variable used for all jobs within this workflow
env:
IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
jobs:
build-library:
name: Build library
runs-on: ubuntu-latest
container: ghcr.io/iarsystems/arm:9.70.4-st
steps:
- uses: actions/checkout@v6
- name: Check compiler version
run: iccarm --version
- name: Build library
run: |
iarbuild project/EWARM/ChecksumLibrary.ewp -make Debug -log all
- name: Upload library
uses: actions/upload-artifact@v6
with:
name: library
path: project/EWARM/Debug/Exe/ChecksumLibrary.a
if-no-files-found: error
cstat-library:
name: Analyze library
runs-on: ubuntu-latest
container: ghcr.io/iarsystems/arm:9.70.4-st
steps:
- uses: actions/checkout@v6
- name: C-STAT - Library
run: |
iarbuild project/EWARM/ChecksumLibrary.ewp -cstat_analyze Debug -log all
iarbuild project/EWARM/ChecksumLibrary.ewp -cstat_report Debug -log all
- name: Upload library report (C-STAT)
uses: actions/upload-artifact@v6
with:
name: library-report.html
path: project/EWARM/Debug/C-STAT/*.html
if-no-files-found: error
build-project:
name: Build project
needs: build-library
runs-on: ubuntu-latest
container: ghcr.io/iarsystems/arm:9.70.4-st
steps:
- uses: actions/checkout@v6
- name: Download library
uses: actions/download-artifact@v8
with:
name: library
path: project/EWARM/Debug/Exe/
- name: Build project
run: |
iarbuild project/EWARM/project.ewp -make Debug -log all
- name: Upload project
uses: actions/upload-artifact@v6
with:
name: project
path: project/EWARM/Debug/Exe/project.out
if-no-files-found: error
cstat-project:
name: Static Code Analysis
needs: build-project
runs-on: ubuntu-latest
container: ghcr.io/iarsystems/arm:9.70.4-st
steps:
- uses: actions/checkout@v6
- name: Static Analysis
run: |
iarbuild project/EWARM/project.ewp -cstat_analyze Debug -log all
iarbuild project/EWARM/project.ewp -cstat_report Debug -log all
- name: Upload project report (C-STAT)
uses: actions/upload-artifact@v6
with:
name: project-cstat.html
path: project/EWARM/project/C-STAT/*.html
if-no-files-found: error
crun-project:
name: Runtime Analysis
needs: build-project
runs-on: ubuntu-latest
container: ghcr.io/iarsystems/arm:9.70.4-st
steps:
- name: Download project
uses: actions/download-artifact@v8
with:
name: project
path: project/EWARM/Debug/Exe/
- name: Runtime Analysis (C-RUN)
run: |
CSpyBat \
/opt/iar/cxarm/arm/bin/libarmPROC.so \
/opt/iar/cxarm/arm/bin/libarmSIM2.so \
--plugin=/opt/iar/cxarm/arm/bin/libarmLibsupportUniversal.so \
--debug_file=project/EWARM/Debug/Exe/project.out \
--rtc_enable \
--rtc_output=crun-messages.txt \
--timeout=2000000 \
--backend \
--cpu=cortex-m4 \
--fpu=vfpv4_sp \
--endian=little \
--semihosting || true
- name: Upload project report (C-RUN)
uses: actions/upload-artifact@v6
with:
name: project-crun.txt
path: ./crun-messages.txt
if-no-files-found: error
# Deploy your firmware
deploy:
name: Deploy firmware
needs: [cstat-project,crun-project]
runs-on: ubuntu-latest
container: ghcr.io/iarsystems/arm:9.70.4-st
steps:
- name: Download ELF
uses: actions/download-artifact@v8
with:
name: project
path: ./
- name: Convert to SREC
run: |
mkdir output
ielftool --srec --verbose project.out output/project.srec
- name: Convert to HEX
run: |
ielftool --ihex --verbose project.out output/project.hex
- name: Upload firmwares
uses: actions/upload-artifact@v6
with:
name: firmwares-srec-hex
path: ./output/*.*
if-no-files-found: error