Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ASR] add asr getting stated guide; add ASR582X CI #27057

Merged
merged 3 commits into from
Jun 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .github/workflows/examples-asr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Copyright (c) 2023 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 - ASR

on:
push:
pull_request:
merge_group:

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

env:
CHIP_NO_LOG_TIMESTAMPS: true
# XXX: Workaround for https://github.com/actions/cache/issues/1141
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3

jobs:
asr:
name: ASR

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

container:
image: connectedhomeip/chip-build-asr:0.7.14
options: --user root

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 --allow-changing-global-git-config --shallow --platform asr
- name: Bootstrap cache
uses: actions/cache@v3
timeout-minutes: 10
with:
key: ${{ runner.os }}-env-${{ hashFiles('scripts/setup/*', 'third_party/pigweed/**') }}
path: |
.environment
build_overrides/pigweed_environment.gni
- name: Bootstrap
run: bash scripts/bootstrap.sh
- name: Build all ASR582X examples
run: |
./scripts/run_in_build_env.sh \
"./scripts/build/build_examples.py \
--target asr-asr582x-lighting \
--target asr-asr582x-lighting-ota \
build \
"
1 change: 1 addition & 0 deletions docs/guides/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

- [Android - Building](./android_building.md)
- [Apple - Testing with iPhone, iPad, macOS, Apple TV, HomePod, Watch, etc](./darwin.md)
- [ASR - Getting Started Guide](./asr_getting_started_guide.md)
- [Espressif (ESP32) - Getting Started Guide](./esp32/README.md)
- [Infineon PSoC6 - Software Update](./infineon_psoc6_software_update.md)
- [Linux - Simulated Devices](./simulated_device_linux.md)
Expand Down
134 changes: 134 additions & 0 deletions docs/guides/asr_getting_started_guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# ASR Getting Started Guide

The ASR platform is a [Matter](https://github.com/project-chip/connectedhomeip)
platform that uses ASR FreeRTOS SDK.

---

- [ASR Getting Started Guide](#asr-getting-started-guide)
- [Supported Chips](#supported-chips)
- [Matter Example Applications](#matter-example-applications)
- [Building the Example Application](#building-the-example-application)
- [Commissioning](#commissioning)
- [BLE mode](#ble-mode)
- [IP mode](#ip-mode)
- [Shell](#shell)
- [OTA](#ota)

---

## Supported Chips

The ASR platform is supported on:

- [ASR582X](http://www.asrmicro.com/en/goods/proinfo/36.html)
- [ASR595X](http://www.asrmicro.com/en/goods/proinfo/42.html)

## Matter Example Applications

Sample Matter applications are provided for the ASR platform. They can be used
to speed up development. You can find them in the samples with `/asr` subfolder.

## Building the Example Application

- [Setup Matter Environment](./BUILDING.md)

- Setup toolchain
- for ASR582X
```
cd toolchain
wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
tar -jxvf gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
export ASR_TOOLCHAIN_PATH={abs-path-to-toolchain}/gcc-arm-none-eabi-9-2019-q4-major/bin/
```
- for ASR595X
```
git clone --depth=1 https://github.com/asriot/Tools.git
cd Tools/toolchain
cat asr_riscv_gnu_toolchain_10.2_ubuntu-16.04.tar.bz2.part* > asr_riscv_gnu_toolchain_10.2_ubuntu-16.04.tar.bz2
mkdir -p asr_riscv_gnu_toolchain_10.2_ubuntu-16.04
tar -jxvf asr_riscv_gnu_toolchain_10.2_ubuntu-16.04.tar.bz2 -C asr_riscv_gnu_toolchain_10.2_ubuntu-16.04/
export ASR_TOOLCHAIN_PATH={abs-path-to-toolchain}/asr_riscv_gnu_toolchain_10.2_ubuntu-16.04/bin/
```
- Setup Chip environment
- for ASR582X:
```
export ASR_BOARD=asr582x
```
- for ASR595X:
```
export ASR_BOARD=asr595x
```
- Building the Application

If the lighting example is to be built:

```
./scripts/build/build_examples.py --target asr-$ASR_BOARD-lighting build
```

- The output image files are stored in the subdirectories under `out`, the
subdirectory name is the same as the argument specified after the option
`--target` when build the examples.

- After building the application, `DOGO` tool is used to flash it to the
board.

## Commissioning

There are two commissioning modes supported by ASR platform:

### BLE mode

1. Build and Flash
2. The example will run automatically after booting the ASR board.
3. Restore factory settings using command `recovery`
4. Commissioning with
[Chip-Tool](https://github.com/project-chip/connectedhomeip/tree/master/examples/chip-tool),for
example:
```
./chip-tool pairing ble-wifi <node_id> <ssid> <password> <pin_code> <discriminator>
```

### IP mode

1. Build and Flash
2. The example will run automatically after booting the ASR board.
3. Restore factory settings using command `recovery`
4. Connect to AP using command `wifi_open sta [ssid] [password]`
5. Commissioning with
[Chip-Tool](https://github.com/project-chip/connectedhomeip/tree/master/examples/chip-tool),for
example:
```
./chip-tool pairing onnetwork-long <node_id> <pin_code> <discriminator>
```

## Shell

1. To build the example with Matter shell, exactly the same steps as above but
add argument `-shell` when using the `build_examples.py` script. For example:
`./scripts/build/build_examples.py --target asr-$ASR_BOARD-lighting-shell build`
2. The example will run automatically after booting the ASR board.
3. Use `help` command to list all supported commands:
```
help
base64 Base64 encode / decode utilities
exit Exit the shell application
help List out all top level commands
version Output the software version
ble BLE transport commands
wifi Usage: wifi <subcommand>
config Manage device configuration. Usage to dump value: config [param_name] and to set some values (discriminator): config [param_name] [param_value].
device Device management commands
onboardingcodes Dump device onboarding codes. Usage: onboardingcodes none|softap|ble|onnetwork [qrcode|qrcodeurl|manualpairingcode]
dns Dns client commands
OnOff OnOff commands. Usage: OnOff [on|off]
Done
```

## OTA

To build the example with the Matter OTA Requestor functionality, exactly the
same steps as above but add argument `-ota` when using the `build_examples.py`
script. For example:
`./scripts/build/build_examples.py --target asr-$ASR_BOARD-lighting-ota build`
1 change: 1 addition & 0 deletions docs/guides/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ esp32/README

- [Android - Building](./android_building.md)
- [Apple - Testing with iPhone, iPad, macOS, Apple TV, HomePod, Watch, etc](./darwin.md)
- [ASR - Getting Started Guide](./asr_getting_started_guide.md)
- [Espressif (ESP32) - Getting Started Guide](./esp32/README.md)
- [Infineon PSoC6 - Software Update](./infineon_psoc6_software_update.md)
- [Linux - Simulated Devices](./simulated_device_linux.md)
Expand Down
84 changes: 25 additions & 59 deletions examples/lighting-app/asr/README.md
Original file line number Diff line number Diff line change
@@ -1,80 +1,33 @@
# CHIP ASR Lighting Example
# Matter ASR Lighting Example

This example demonstrates the Matter Lighting application on ASR platform.

---

- [CHIP ASR Lighting Example](#chip-asr-lighting-example)
- [Matter ASR Lighting Example](#matter-asr-lighting-example)
- [Supported Chips](#supported-chips)
- [Building the Example Application](#building-the-example-application)
- [Commissioning](#commissioning)
- [BLE mode](#ble-mode)
- [IP mode](#ip-mode)
- [Building and Commissioning](#building-and-commissioning)
- [Cluster Control](#cluster-control)
- [Indicate current state of lightbulb](#indicate-current-state-of-lightbulb)

---

## Supported Chips

The CHIP demo application is supported on:
The Matter demo application is supported on:

- ASR582X
- ASR595X

## Building the Example Application
## Building and Commissioning

- [Setup CHIP Environment](../../../docs/guides/BUILDING.md)
Please refer
[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application)
guides to get started

- Setup toolchain for ASR582X,download gcc-arm-none-eabi-9-2019-q4-major,then
export `ASR_TOOLCHAIN_PATH`:
```
export ASR_TOOLCHAIN_PATH={path-to-toolchain}/gcc-arm-none-eabi-9-2019-q4-major/bin/
```
for ASR595X,download asr_riscv_gnu_toolchain_10.2_ubuntu,then export
`ASR_TOOLCHAIN_PATH`:
```
export ASR_TOOLCHAIN_PATH={path-to-toolchain}/asr_riscv_gnu_toolchain_10.2_ubuntu-16.04/bin/
```
- Setup Chip environment
- for ASR582X:
```
export ASR_BOARD=asr582x
```
- for ASR595X:
```
export ASR_BOARD=asr595x
```
- Building the Application
```
./scripts/build/build_examples.py --target asr-$ASR_BOARD-lighting build
```
- The output image files are stored in the subdirectories under `out`, the
subdirectory name is the same as the argument specified after the option
`--target` when build the examples.

- After building the application, `DOGO` tool is used to flash it to the
board.

## Commissioning

There are two commissioning modes supported by ASR platform:

### BLE mode

1. Build and Flash
2. The example will run automatically after booting the ASR board.
3. Restore factory settings using command `recovery`
4. Commissioning with
[Chip-Tool](https://github.com/project-chip/connectedhomeip/tree/master/examples/chip-tool)

### IP mode

1. Build and Flash
2. The example will run automatically after booting the ASR board.
3. Restore factory settings using command `recovery`
4. Connect to AP using command `wifi_open sta [ssid] [password]`
5. Commissioning with
[Chip-Tool](https://github.com/project-chip/connectedhomeip/tree/master/examples/chip-tool)
```
./scripts/build/build_examples.py --target asr-$ASR_BOARD-lighting build
```

## Cluster Control

Expand All @@ -96,3 +49,16 @@ After successful commissioning, use `chip-tool` to control the board
```
./chip-tool colorcontrol move-to-hue-and-saturation 240 100 0 0 0 <NODE ID> 1
```

## Indicate current state of lightbulb

By default, a 3-color LED(RGB) module is used to show current state of lightbulb
Connect the module to following pins:

| Name | Pin |
| :---: | :---: |
| Red | PAD7 |
| Green | PAD6 |
| Blue | PAD10 |

These default pins are defined at `examples/platform/asr/LEDWidget.h`
3 changes: 3 additions & 0 deletions examples/platform/asr/shell/matter_shell.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@
#include <lib/core/CHIPError.h>
#include <string>
#include <vector>
#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR
#include "init_OTARequestor.h"
#endif

using namespace ::chip;
using namespace ::chip::Credentials;
Expand Down
2 changes: 2 additions & 0 deletions scripts/build/build/targets.py
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,8 @@ def BuildASRTarget():
target.AppendModifier('ota', enable_ota_requestor=True)
target.AppendModifier('shell', chip_build_libshell=True)
target.AppendModifier('no_logging', chip_logging=False)
target.AppendModifier('factory', enable_factory=True)
target.AppendModifier('rotating_id', enable_rotating_device_id=True)

return target

Expand Down
5 changes: 5 additions & 0 deletions scripts/build/builders/asr.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ def __init__(self,
chip_build_libshell: bool = False,
chip_logging: bool = True,
enable_factory: bool = False,
enable_rotating_device_id: bool = False,
enable_ota_requestor: bool = False):
super(ASRBuilder, self).__init__(
root=app.BuildRoot(root),
Expand Down Expand Up @@ -104,6 +105,10 @@ def __init__(self,
self.extra_gn_options.append('chip_use_transitional_commissionable_data_provider=false')
self.extra_gn_options.append('chip_enable_factory_data=true')

if enable_rotating_device_id:
self.extra_gn_options.append('chip_enable_additional_data_advertising=true')
self.extra_gn_options.append('chip_enable_rotating_device_id=true')

self.extra_gn_options.append('asr_toolchain_root="%s"' % os.environ['ASR_TOOLCHAIN_PATH'])

def GnBuildArgs(self):
Expand Down
2 changes: 1 addition & 1 deletion scripts/build/testdata/all_targets_linux_x64.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ameba-amebad-{all-clusters,all-clusters-minimal,light,light-switch,pigweed}
asr-{asr582x,asr595x}-lighting[-ota][-shell][-no_logging]
asr-{asr582x,asr595x}-lighting[-ota][-shell][-no_logging][-factory][-rotating_id]
android-{arm,arm64,x86,x64,androidstudio-arm,androidstudio-arm64,androidstudio-x86,androidstudio-x64}-{chip-tool,chip-test,tv-server,tv-casting-app,java-matter-controller}[-no-debug]
bouffalolab-{bl602-iot-matter-v1,bl602-iot-dvk-3s,bl602-night-light,xt-zb6-devkit,bl706-iot-dvk,bl706-night-light}-light[-shell][-115200][-rpc][-cdc]
cc32xx-lock
Expand Down
2 changes: 0 additions & 2 deletions src/platform/ASR/ASRConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@

#pragma once

// #include <platform/internal/CHIPDeviceLayerInternal.h>

#include "asr_factory_config.h"
#include <string.h>

Expand Down
Loading