Skip to content

Commit

Permalink
[MW320] Added CI workflow for MW320 (#20602)
Browse files Browse the repository at this point in the history
* Added CI workflow for MW320.

Signed-off-by: David Lin <[email protected]>

* Corrected output file name.

Signed-off-by: David Lin <[email protected]>

* Restyled.

Signed-off-by: David Lin <[email protected]>

* Fixed errors when running test.py.

Signed-off-by: David Lin <[email protected]>
  • Loading branch information
nxptest authored Jul 14, 2022
1 parent 415ee2f commit 64828b3
Show file tree
Hide file tree
Showing 9 changed files with 162 additions and 4 deletions.
84 changes: 84 additions & 0 deletions .github/workflows/examples-mw320.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Copyright (c) 2020-2021 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Build example - MW320

on:
push:
pull_request:

concurrency:
group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
cancel-in-progress: true

jobs:
mw320:
name: MW320
timeout-minutes: 60

env:
BUILD_TYPE: gn_mw320

runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'

container:
image: connectedhomeip/chip-build:0.5.84
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
- uses: Wandalen/[email protected]
name: Checkout
with:
action: actions/checkout@v3
with: |
token: ${{ github.token }}
attempt_limit: 3
attempt_delay: 2000
- name: Checkout submodules
run: scripts/checkout_submodules.py --shallow --platform mw320

- name: Set up environment for size reports
if: ${{ !env.ACT }}
env:
GH_CONTEXT: ${{ toJson(github) }}
run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"

- name: Bootstrap
timeout-minutes: 25
run: scripts/build/gn_bootstrap.sh
- name: Uploading bootstrap logs
uses: actions/upload-artifact@v2
if: ${{ always() && !env.ACT }}
with:
name: bootstrap-logs
path: |
.environment/gn_out/.ninja_log
.environment/pigweed-venv/*.log
- name: Build MW320 all clusters example app
timeout-minutes: 20
run: |
./scripts/run_in_build_env.sh \
"./scripts/build/build_examples.py \
--target 'mw320-all-clusters-app' \
build \
--copy-artifacts-to out/artifacts \
"
- name: Uploading Size Reports
uses: actions/upload-artifact@v2
if: ${{ !env.ACT }}
with:
name: Size,MW320-Examples,${{ env.GH_EVENT_PR }},${{ env.GH_EVENT_HASH }},${{ env.GH_EVENT_PARENT }},${{ github.event_name }}
path: |
/tmp/bloat_reports/
2 changes: 1 addition & 1 deletion examples/all-clusters-app/nxp/mw320/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ mw320_sdk("sdk") {
mw320_executable("shell_mw320") {
include_dirs = []
defines = []
output_name = "all-cluster-mw320.out"
output_name = "chip-mw320-all-clusters-app.out"

public_deps = [
":sdk",
Expand Down
6 changes: 3 additions & 3 deletions examples/all-clusters-app/nxp/mw320/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ $ gn gen out/debug
$ ninja -v -C out/debug
```

Example application binary file "all-cluster-mw320.bin" will be generated under
directory "out/debug".
Example application binary file "chip-mw320-all-clusters-app.bin" will be
generated under directory "out/debug".

Note:

Expand Down Expand Up @@ -74,7 +74,7 @@ Prepare MW320 download firmware image:

```
$ ln -sf third_party/connectedhomeip/third_party/nxp/mw320_sdk/repo mw320_sdk
$ mw320_sdk/tools/mw_img_conv/bin/mw_img_conv mcufw out/debug/all-cluster-mw320.bin out/debug/all-cluster-mw320.mcufw.bin 0x1F010000
$ mw320_sdk/tools/mw_img_conv/bin/mw_img_conv mcufw out/debug/chip-mw320-all-clusters-app.bin out/debug/all-cluster-mw320.mcufw.bin 0x1F010000
$ cp out/debug/all-cluster-mw320.mcufw.bin mw320_sdk/mw320_matter_flash/Matter/.
```

Expand Down
1 change: 1 addition & 0 deletions scripts/build/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ pw_python_package("build_examples") {
"builders/infineon.py",
"builders/k32w.py",
"builders/mbed.py",
"builders/mw320.py",
"builders/nrf.py",
"builders/qpg.py",
"builders/telink.py",
Expand Down
8 changes: 8 additions & 0 deletions scripts/build/build/targets.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
from builders.infineon import InfineonApp, InfineonBoard, InfineonBuilder
from builders.k32w import K32WApp, K32WBuilder
from builders.mbed import MbedApp, MbedBoard, MbedBuilder, MbedProfile
from builders.mw320 import MW320App, MW320Builder
from builders.nrf import NrfApp, NrfBoard, NrfConnectBuilder
from builders.qpg import QpgApp, QpgBoard, QpgBuilder
from builders.telink import TelinkApp, TelinkBoard, TelinkBuilder
Expand Down Expand Up @@ -595,6 +596,12 @@ def IMXTargets():
yield target.Extend('ota-provider-app-release', app=IMXApp.OTA_PROVIDER, release=True)


def MW320Targets():
target = Target('mw320', MW320Builder)

yield target.Extend('all-clusters-app', app=MW320App.ALL_CLUSTERS)


ALL = []

target_generators = [
Expand All @@ -613,6 +620,7 @@ def IMXTargets():
TizenTargets(),
Bl602Targets(),
IMXTargets(),
MW320Targets(),
]

for generator in target_generators:
Expand Down
57 changes: 57 additions & 0 deletions scripts/build/builders/mw320.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Copyright (c) 2021 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import os
from enum import Enum, auto

from .gn import GnBuilder


class MW320App(Enum):
ALL_CLUSTERS = auto()

def ExampleName(self):
if self == MW320App.ALL_CLUSTERS:
return 'all-clusters-app'
else:
raise Exception('Unknown app type: %r' % self)

def AppNamePrefix(self):
if self == MW320App.ALL_CLUSTERS:
return 'chip-mw320-all-clusters-app'
else:
raise Exception('Unknown app type: %r' % self)

def BuildRoot(self, root):
return os.path.join(root, 'examples', self.ExampleName(), 'nxp', 'mw320')


class MW320Builder(GnBuilder):

def __init__(self,
root,
runner,
app: MW320App = MW320App.ALL_CLUSTERS):
super(MW320Builder, self).__init__(
root=app.BuildRoot(root),
runner=runner)
self.app = app

def build_outputs(self):
items = {}
for extension in [".bin", ".out", ".out.map"]:
name = '%s%s' % (self.app.AppNamePrefix(), extension)
items[name] = os.path.join(self.output_dir, name)

return items
1 change: 1 addition & 0 deletions scripts/build/testdata/all_targets_except_host.txt
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ mbed-CY8CPROTO_062_4343W-pigweed-release
mbed-CY8CPROTO_062_4343W-shell-debug (NOGLOB: Compile only for debugging purpose - https://os.mbed.com/docs/mbed-os/latest/program-setup/build-profiles-and-rules.html)
mbed-CY8CPROTO_062_4343W-shell-develop (NOGLOB: Compile only for debugging purpose - https://os.mbed.com/docs/mbed-os/latest/program-setup/build-profiles-and-rules.html)
mbed-CY8CPROTO_062_4343W-shell-release
mw320-all-clusters-app
nrf-native-posix-64-tests
nrf-nrf52840dk-all-clusters
nrf-nrf52840dk-all-clusters-minimal
Expand Down
6 changes: 6 additions & 0 deletions scripts/build/testdata/build_all_except_host.txt
Original file line number Diff line number Diff line change
Expand Up @@ -988,6 +988,9 @@ mbed-tools configure -t GCC_ARM -m CY8CPROTO_062_4343W -p {root}/examples/shell/
# Generating mbed-CY8CPROTO_062_4343W-shell-release
cmake -S {root}/examples/shell/mbed -B {out}/mbed-CY8CPROTO_062_4343W-shell-release -GNinja -DCMAKE_BUILD_TYPE=release -DMBED_OS_PATH={root}/third_party/mbed-os/repo -DMBED_OS_POSIX_SOCKET_PATH={root}/third_party/mbed-os-posix-socket/repo

# Generating mw320-all-clusters-app
gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/nxp/mw320 {out}/mw320-all-clusters-app

# Generating nrf-native-posix-64-tests
bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
Expand Down Expand Up @@ -2213,6 +2216,9 @@ bash -c 'rm -rf {out}/mbed-CY8CPROTO_062_4343W-shell-release/chip-*'
# Building mbed-CY8CPROTO_062_4343W-shell-release
cmake --build {out}/mbed-CY8CPROTO_062_4343W-shell-release

# Building mw320-all-clusters-app
ninja -C {out}/mw320-all-clusters-app

# Building nrf-native-posix-64-tests
ninja -C {out}/nrf-native-posix-64-tests

Expand Down
1 change: 1 addition & 0 deletions scripts/build/testdata/glob_star_targets_except_host.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ mbed-CY8CPROTO_062_4343W-light-release
mbed-CY8CPROTO_062_4343W-lock-release
mbed-CY8CPROTO_062_4343W-pigweed-release
mbed-CY8CPROTO_062_4343W-shell-release
mw320-all-clusters-app
nrf-native-posix-64-tests
nrf-nrf52840dk-all-clusters
nrf-nrf52840dk-all-clusters-minimal
Expand Down

0 comments on commit 64828b3

Please sign in to comment.