forked from apache/nuttx
-
-
Notifications
You must be signed in to change notification settings - Fork 1
298 lines (246 loc) · 12.5 KB
/
bl602-commit.yml
File metadata and controls
298 lines (246 loc) · 12.5 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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
## Build NuttX for BL602 on commit
name: BL602 Commit
on:
## Run on every commit
push:
branches: [ master ]
## Run on every pull request
## pull_request:
## branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Install Build Tools
run: |
sudo apt -y update
sudo apt -y install \
bison flex gettext texinfo libncurses5-dev libncursesw5-dev \
gperf automake libtool pkg-config build-essential gperf genromfs \
libgmp-dev libmpc-dev libmpfr-dev libisl-dev binutils-dev libelf-dev \
libexpat-dev gcc-multilib g++-multilib u-boot-tools util-linux \
kconfig-frontends \
wget
- name: Install Toolchain
run: |
wget --no-check-certificate https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14.tar.gz
tar -xf riscv64-unknown-elf-gcc*.tar.gz
- name: Checkout Source Files
run: |
mkdir nuttx
cd nuttx
git clone --recursive https://github.com/lupyuen/incubator-nuttx nuttx
git clone --recursive https://github.com/lupyuen/incubator-nuttx-apps apps
- name: Update BL602 Pins
run: |
## BL602 Pin Definitions and Bringup
board=nuttx/nuttx/boards/risc-v/bl602/bl602evb/include/board.h
bringup=nuttx/nuttx/boards/risc-v/bl602/bl602evb/src/bl602_bringup.c
echo "#ifndef __BL602_PINS" >>$board
echo "#define __BL602_PINS" >>$board
## Busy Pin for SX1262
echo "#define BOARD_GPIO_IN1 (GPIO_INPUT | GPIO_PULLUP | GPIO_FUNC_SWGPIO | GPIO_PIN14)" >>$board
## SPI Chip Select for SX1262
echo "#define BOARD_GPIO_OUT1 (GPIO_OUTPUT | GPIO_FLOAT | GPIO_FUNC_SWGPIO | GPIO_PIN11)" >>$board
## GPIO Interrupt (DIO1) for SX1262
echo "#define BOARD_GPIO_INT1 (GPIO_INPUT | GPIO_PULLUP | GPIO_FUNC_SWGPIO | GPIO_PIN17)" >>$board
## SPI Configuration: Chip Select is unused because we control via GPIO instead
echo "#define BOARD_SPI_CS (GPIO_INPUT | GPIO_PULLUP | GPIO_FUNC_SPI | GPIO_PIN2) /* Unused */" >>$board
echo "#define BOARD_SPI_MOSI (GPIO_INPUT | GPIO_PULLUP | GPIO_FUNC_SPI | GPIO_PIN1)" >>$board
echo "#define BOARD_SPI_MISO (GPIO_INPUT | GPIO_PULLUP | GPIO_FUNC_SPI | GPIO_PIN0)" >>$board
echo "#define BOARD_SPI_CLK (GPIO_INPUT | GPIO_PULLUP | GPIO_FUNC_SPI | GPIO_PIN3)" >>$board
## I2C Configuration
echo "#define BOARD_I2C_SCL (GPIO_INPUT | GPIO_PULLUP | GPIO_FUNC_I2C | GPIO_PIN6)" >>$board
echo "#define BOARD_I2C_SDA (GPIO_INPUT | GPIO_PULLUP | GPIO_FUNC_I2C | GPIO_PIN5)" >>$board
## Unused: PWM Configuration
echo "#undef BOARD_PWM_CH0_PIN" >>$board
echo "#undef BOARD_PWM_CH1_PIN" >>$board
echo "#undef BOARD_PWM_CH2_PIN" >>$board
echo "#undef BOARD_PWM_CH3_PIN" >>$board
echo "#undef BOARD_PWM_CH4_PIN" >>$board
## Must be last line
echo "#endif // __BL602_PINS" >>$board
## Preserve the Pin Definitions and Bringup
cp $board nuttx/nuttx/nuttx.board
cp $bringup nuttx/nuttx/nuttx.bringup
cat $board
- name: Build
run: |
## Add toolchain to PATH
export PATH=$PATH:$PWD/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14/bin
cd nuttx/nuttx
## Configure the build
./tools/configure.sh bl602evb:nsh
## Update the build config
## Enable errors, warnings, info messages and assertions
kconfig-tweak --enable CONFIG_DEBUG_ERROR
kconfig-tweak --enable CONFIG_DEBUG_WARN
## kconfig-tweak --enable CONFIG_DEBUG_INFO
kconfig-tweak --enable CONFIG_DEBUG_ASSERTIONS
## Enable GPIO errors, warnings and info messages
kconfig-tweak --enable CONFIG_DEBUG_GPIO
kconfig-tweak --enable CONFIG_DEBUG_GPIO_ERROR
kconfig-tweak --enable CONFIG_DEBUG_GPIO_WARN
## kconfig-tweak --enable CONFIG_DEBUG_GPIO_INFO
## Enable SPI errors, warnings and info messages
kconfig-tweak --enable CONFIG_DEBUG_SPI
kconfig-tweak --enable CONFIG_DEBUG_SPI_ERROR
kconfig-tweak --enable CONFIG_DEBUG_SPI_WARN
## kconfig-tweak --enable CONFIG_DEBUG_SPI_INFO
## Enable Floating Point
kconfig-tweak --enable CONFIG_LIBC_FLOATINGPOINT
## Enable Compiler Stack Canaries
kconfig-tweak --enable CONFIG_STACK_CANARIES
## Enable NuttX Shell commands: cat, help, ls
kconfig-tweak --disable CONFIG_NSH_DISABLE_CAT
kconfig-tweak --disable CONFIG_NSH_DISABLE_HELP
kconfig-tweak --disable CONFIG_NSH_DISABLE_LS
## Enable GPIO
kconfig-tweak --enable CONFIG_DEV_GPIO
kconfig-tweak --set-val CONFIG_DEV_GPIO_NSIGNALS 1
## Enable GPIO Test App
kconfig-tweak --enable CONFIG_EXAMPLES_GPIO
kconfig-tweak --set-str CONFIG_EXAMPLES_GPIO_PROGNAME "gpio"
kconfig-tweak --set-val CONFIG_EXAMPLES_GPIO_PRIORITY 100
kconfig-tweak --set-val CONFIG_EXAMPLES_GPIO_STACKSIZE 2048
## Enable SPI and SPI Test Driver
kconfig-tweak --enable CONFIG_BL602_SPI0
kconfig-tweak --enable CONFIG_SPI
kconfig-tweak --enable CONFIG_SPI_EXCHANGE
kconfig-tweak --enable CONFIG_SPI_DRIVER
kconfig-tweak --enable CONFIG_SPI_CMDDATA
kconfig-tweak --enable CONFIG_DRIVERS_RF
kconfig-tweak --enable CONFIG_RF_SPI_TEST_DRIVER
## Enable SPI Test Apps
kconfig-tweak --enable CONFIG_EXAMPLES_SPI_TEST
kconfig-tweak --set-str CONFIG_EXAMPLES_SPI_TEST_PROGNAME "spi_test"
kconfig-tweak --set-val CONFIG_EXAMPLES_SPI_TEST_PRIORITY 100
kconfig-tweak --set-val CONFIG_EXAMPLES_SPI_TEST_STACKSIZE 2048
kconfig-tweak --enable CONFIG_EXAMPLES_SPI_TEST2
kconfig-tweak --set-str CONFIG_EXAMPLES_SPI_TEST2_PROGNAME "spi_test2"
kconfig-tweak --set-val CONFIG_EXAMPLES_SPI_TEST2_PRIORITY 100
kconfig-tweak --set-val CONFIG_EXAMPLES_SPI_TEST2_STACKSIZE 2048
## For NimBLE Porting Layer: Enable POSIX timers, pthreads, mqueues
## TODO: Remove obsolete CONFIG_FS_MQUEUE_MPATH
kconfig-tweak --disable CONFIG_DISABLE_POSIX_TIMERS
kconfig-tweak --disable CONFIG_DISABLE_PTHREAD
kconfig-tweak --disable CONFIG_DISABLE_MQUEUE
kconfig-tweak --disable CONFIG_DISABLE_MQUEUE_SYSV
kconfig-tweak --set-str CONFIG_FS_MQUEUE_VFS_PATH "/var/mqueue"
kconfig-tweak --set-str CONFIG_FS_MQUEUE_MPATH "/var/mqueue"
kconfig-tweak --set-val CONFIG_FS_MQUEUE_NPOLLWAITERS 4
## For NimBLE Porting Layer: Clock, signals, work queues
kconfig-tweak --enable CONFIG_CLOCK_MONOTONIC
kconfig-tweak --enable CONFIG_SIG_EVTHREAD
kconfig-tweak --set-val CONFIG_SIG_SIGWORK 17
kconfig-tweak --set-val CONFIG_PREALLOC_MQ_MSGS 4
kconfig-tweak --set-val CONFIG_PREALLOC_MQ_IRQ_MSGS 4
kconfig-tweak --set-val CONFIG_MQ_MAXMSGSIZE 32
kconfig-tweak --enable CONFIG_SCHED_WORKQUEUE
kconfig-tweak --enable CONFIG_SCHED_HPWORK
kconfig-tweak --set-val CONFIG_SCHED_HPNTHREADS 1
kconfig-tweak --set-val CONFIG_SCHED_HPWORKPRIORITY 224
kconfig-tweak --set-val CONFIG_SCHED_HPWORKSTACKSIZE 2048
kconfig-tweak --enable CONFIG_SCHED_BACKTRACE
## For NimBLE Porting Layer: Enable Library
kconfig-tweak --enable CONFIG_LIBNPL
## For LoRa SX1262: Enable Library and Test App
kconfig-tweak --enable CONFIG_LIBSX1262
kconfig-tweak --set-val CONFIG_LIBSX1262_PRECISION 0
kconfig-tweak --enable CONFIG_EXAMPLES_SX1262_TEST
kconfig-tweak --set-str CONFIG_EXAMPLES_SX1262_TEST_PROGNAME "sx1262_test"
kconfig-tweak --set-val CONFIG_EXAMPLES_SX1262_TEST_PRIORITY 100
kconfig-tweak --set-val CONFIG_EXAMPLES_SX1262_TEST_STACKSIZE 2048
## For LoRaWAN: Enable Strong Random Number Generator
kconfig-tweak --enable CONFIG_CRYPTO
kconfig-tweak --enable CONFIG_CRYPTO_BLAKE2S
kconfig-tweak --enable CONFIG_CRYPTO_RANDOM_POOL
kconfig-tweak --enable CONFIG_CRYPTO_RANDOM_POOL_COLLECT_IRQ_RANDOMNESS
kconfig-tweak --enable CONFIG_DEV_URANDOM
kconfig-tweak --enable CONFIG_DEV_URANDOM_RANDOM_POOL
## For LoRaWAN: Enable Library and Test App
kconfig-tweak --enable CONFIG_LIBLORAWAN
kconfig-tweak --enable CONFIG_EXAMPLES_LORAWAN_TEST
kconfig-tweak --set-str CONFIG_EXAMPLES_LORAWAN_TEST_PROGNAME "lorawan_test"
kconfig-tweak --set-val CONFIG_EXAMPLES_LORAWAN_TEST_PRIORITY 100
kconfig-tweak --set-val CONFIG_EXAMPLES_LORAWAN_TEST_STACKSIZE 2048
## For TinyCBOR: Enable Library and Test App
kconfig-tweak --enable CONFIG_LIBTINYCBOR
kconfig-tweak --enable CONFIG_EXAMPLES_TINYCBOR_TEST
kconfig-tweak --set-str CONFIG_EXAMPLES_TINYCBOR_TEST_PROGNAME "tinycbor_test"
kconfig-tweak --set-val CONFIG_EXAMPLES_TINYCBOR_TEST_PRIORITY 100
kconfig-tweak --set-val CONFIG_EXAMPLES_TINYCBOR_TEST_STACKSIZE 2048
## For Rust: Enable Library
kconfig-tweak --enable CONFIG_LIBRUST
## For BL602 ADC: Enable Library and Test App
kconfig-tweak --enable CONFIG_LIBBL602_ADC
kconfig-tweak --enable CONFIG_EXAMPLES_BL602_ADC_TEST
kconfig-tweak --set-str CONFIG_EXAMPLES_BL602_ADC_TEST_PROGNAME "bl602_adc_test"
kconfig-tweak --set-val CONFIG_EXAMPLES_BL602_ADC_TEST_PRIORITY 100
kconfig-tweak --set-val CONFIG_EXAMPLES_BL602_ADC_TEST_STACKSIZE 2048
## Previously: Enable UART1 for IKEA Air Quality Sensor
## kconfig-tweak --enable CONFIG_BL602_HAVE_UART1
## kconfig-tweak --set-val CONFIG_UART1_BAUD 9600
## Enable IKEA Air Quality Sensor App
kconfig-tweak --enable CONFIG_EXAMPLES_IKEA_AIR_QUALITY_SENSOR
kconfig-tweak --set-str CONFIG_EXAMPLES_IKEA_AIR_QUALITY_SENSOR_PROGNAME "ikea_air_quality_sensor"
kconfig-tweak --set-val CONFIG_EXAMPLES_IKEA_AIR_QUALITY_SENSOR_PRIORITY 100
kconfig-tweak --set-val CONFIG_EXAMPLES_IKEA_AIR_QUALITY_SENSOR_STACKSIZE 2048
## Enable I2C0 and Sensor Test App
kconfig-tweak --enable CONFIG_BL602_I2C0
kconfig-tweak --enable CONFIG_I2C
kconfig-tweak --enable CONFIG_I2C_DRIVER
kconfig-tweak --enable CONFIG_MM_CIRCBUF
kconfig-tweak --enable CONFIG_SENSORS
kconfig-tweak --set-val CONFIG_SENSORS_NPOLLWAITERS 2
kconfig-tweak --enable CONFIG_DEBUG_I2C
kconfig-tweak --enable CONFIG_DEBUG_I2C_ERROR
kconfig-tweak --enable CONFIG_DEBUG_I2C_WARN
kconfig-tweak --enable CONFIG_DEBUG_I2C_INFO
kconfig-tweak --enable CONFIG_DEBUG_SENSORS
kconfig-tweak --enable CONFIG_DEBUG_SENSORS_ERROR
kconfig-tweak --enable CONFIG_DEBUG_SENSORS_WARN
kconfig-tweak --enable CONFIG_DEBUG_SENSORS_INFO
kconfig-tweak --enable CONFIG_TESTING_SENSORTEST
kconfig-tweak --set-str CONFIG_TESTING_SENSORTEST_PROGNAME "sensortest"
kconfig-tweak --set-val CONFIG_TESTING_SENSORTEST_PRIORITY 100
kconfig-tweak --set-val CONFIG_TESTING_SENSORTEST_STACKSIZE 4096
## Enable BME280 Driver
kconfig-tweak --enable CONFIG_SENSORS_BME280
kconfig-tweak --set-val CONFIG_BME280_I2C_FREQUENCY 400000
## Enable BASIC Interpreter
kconfig-tweak --enable CONFIG_INTERPRETERS_BAS
kconfig-tweak --set-str CONFIG_INTERPRETER_BAS_VERSION "2.4"
kconfig-tweak --set-val CONFIG_INTERPRETER_BAS_PRIORITY 100
kconfig-tweak --set-val CONFIG_INTERPRETER_BAS_STACKSIZE 4096
kconfig-tweak --enable CONFIG_INTERPRETER_BAS_VT100
## Preserve the build config
cp .config nuttx.config
## Run the build
make
## Dump the disassembly to nuttx.S
riscv64-unknown-elf-objdump \
-t -S --demangle --line-numbers --wide \
nuttx \
>nuttx.S \
2>&1
- name: Upload Build Outputs
uses: actions/upload-artifact@v4
with:
name: nuttx.zip
path: nuttx/nuttx/nuttx*
- name: Zip Build Outputs
run: |
cd nuttx/nuttx
zip nuttx.zip nuttx*
- name: Get Current Date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Release
uses: softprops/action-gh-release@v1
with:
tag_name: release-${{ steps.date.outputs.date }}
files: nuttx/nuttx/nuttx.zip
draft: false
prerelease: false
generate_release_notes: true