Skip to content

Commit 87cc57a

Browse files
authored
Update for 202407.00 release information (#94)
2 parents f760ec8 + 49a9e08 commit 87cc57a

File tree

10 files changed

+132
-317
lines changed

10 files changed

+132
-317
lines changed

.github/workflows/release.yml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
name: Release automation
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
commit_id:
7+
description: 'Commit ID/branch to tag and create a release for'
8+
required: true
9+
version_number:
10+
description: 'Release Version (Eg, v202212.00)'
11+
required: true
12+
13+
env:
14+
repository_compressed_name: ${{ github.event.repository.name }}v${{ github.event.inputs.version_number }}
15+
repostiory_zip_name: ${{ github.event.repository.name }}.zip
16+
17+
jobs:
18+
tag-commit:
19+
name: Tag commit
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: Checkout code
23+
uses: actions/checkout@v4
24+
with:
25+
ref: ${{ github.event.inputs.commit_id }}
26+
- name: Configure git identity
27+
run: |
28+
git config --global user.name ${{ github.actor }}
29+
git config --global user.email ${{ github.actor }}@users.noreply.github.com
30+
- name: create a new branch that references commit id
31+
run: git checkout -b ${{ github.event.inputs.version_number }} ${{ github.event.inputs.commit_id }}
32+
- name: Tag Commit and Push to remote
33+
run: |
34+
git tag ${{ github.event.inputs.version_number }} -a -m "Release ${{ github.event.inputs.version_number }}"
35+
git push origin --tags
36+
- name: Verify tag on remote
37+
run: |
38+
git tag -d ${{ github.event.inputs.version_number }}
39+
git remote update
40+
git checkout tags/${{ github.event.inputs.version_number }}
41+
git diff ${{ github.event.inputs.commit_id }} tags/${{ github.event.inputs.version_number }}
42+
create-zip:
43+
needs: tag-commit
44+
name: Create ZIP and verify package for release asset.
45+
runs-on: ubuntu-latest
46+
steps:
47+
- name: Install ZIP tools
48+
run: sudo apt-get install zip unzip
49+
- name: Checkout code
50+
uses: actions/checkout@v4
51+
with:
52+
ref: ${{ github.event.inputs.commit_id }}
53+
path: ${{ github.event.repository.name }}
54+
submodules: recursive
55+
- name: Checkout disabled submodules
56+
run: |
57+
cd ${{ github.event.repository.name }}
58+
git submodule update --init --checkout --recursive
59+
- name: Create ZIP
60+
run: |
61+
zip -r ${{ env.repostiory_zip_name }} ${{ github.event.repository.name }} -x "*.git*"
62+
ls ./
63+
- name: Validate created ZIP
64+
run: |
65+
mkdir zip-check
66+
mv ${{ env.repostiory_zip_name }} zip-check
67+
cd zip-check
68+
unzip ${{ env.repostiory_zip_name }} -d ${{ env.repository_compressed_name }}
69+
ls ${{ env.repository_compressed_name }}
70+
diff -r -x "*.git*" ${{ env.repository_compressed_name }}/${{ github.event.repository.name }}/ ../${{ github.event.repository.name }}/
71+
- name: Create artifact of ZIP
72+
uses: actions/upload-artifact@v2
73+
with:
74+
name: ${{ env.repostiory_zip_name }}
75+
path: zip-check/${{ env.repostiory_zip_name }}
76+
create-release:
77+
needs: create-zip
78+
name: Create Release and Upload Release Asset
79+
runs-on: ubuntu-latest
80+
steps:
81+
- name: Create Release
82+
id: create_release
83+
uses: actions/create-release@v1
84+
env:
85+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
86+
with:
87+
tag_name: ${{ github.event.inputs.version_number }}
88+
release_name: ${{ github.event.inputs.version_number }}
89+
body: ${{ github.event.inputs.version_number }} Release
90+
draft: false
91+
prerelease: false
92+
- name: Download ZIP artifact
93+
uses: actions/download-artifact@v2
94+
with:
95+
name: ${{ env.repostiory_zip_name }}
96+
- name: Upload Release Asset
97+
id: upload-release-asset
98+
uses: actions/upload-release-asset@v1
99+
env:
100+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
101+
with:
102+
upload_url: ${{ steps.create_release.outputs.upload_url }}
103+
asset_path: ./${{ env.repostiory_zip_name }}
104+
asset_name: ${{ env.repostiory_zip_name }}
105+
asset_content_type: application/zip

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,28 @@
11
# Changelog for ESP32-C3 MCU Featured FreeRTOS IoT Integration
22

3+
## v202407.00 ( July 2024 )
4+
- [#88](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/88) Update Long Term Support (LTS) libraries to 202406.01-LTS:
5+
* [coreMQTT v2.3.1](https://github.com/FreeRTOS/coreMQTT/blob/v2.3.1)
6+
* [coreHTTP v3.1.1](https://github.com/FreeRTOS/coreHTTP/tree/v3.1.1)
7+
* [corePKCS11 v3.6.1](https://github.com/FreeRTOS/corePKCS11/tree/v3.6.1)
8+
* [coreJSON v3.3.0](https://github.com/FreeRTOS/coreJSON/tree/v3.3.0)
9+
* [backoffAlgorithm v1.4.1](https://github.com/FreeRTOS/backoffAlgorithm/tree/v1.4.1)
10+
* [AWS IoT Device Shadow v1.4.1](https://github.com/aws/Device-Shadow-for-AWS-IoT-embedded-sdk/tree/v1.4.1)
11+
* [AWS IoT Device Defender v1.4.0](https://github.com/aws/Device-Defender-for-AWS-IoT-embedded-sdk/tree/v1.4.0)
12+
* [AWS IoT Jobs v1.5.1](https://github.com/aws/Jobs-for-AWS-IoT-embedded-sdk/tree/v1.5.1)
13+
* [AWS MQTT file streams v1.1.0](https://github.com/aws/aws-iot-core-mqtt-file-streams-embedded-c/tree/v1.1.0)
14+
15+
- [#79](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/79) Fix out of order PUBACK and PUBLISH handling
16+
- [#71](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/71) Update Security Feature guide to cover ESP-IDF latest version changes
17+
- [#77](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/77) Notify other tasks that OTA is stopped when fail to activate new image
18+
- [#76](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/76) Post OTA_STOPPED_EVENT once new image verification finished
19+
- [#68](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/68) Shrink idle and timer task stack and OTA buffers to fit into mimimal size when using ESP IDF v5.1
20+
- [#66](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/66) Add C linage for C++ support
21+
- [#64](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/64) Fix GPIO level in temperature sensor pub sub and LED control demo
22+
- [#57](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/57) Add matrix build for supported targets
23+
- [#43](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/43) Add process loop call in MQTT Agent manager to fix TLS connection dropped.
24+
- [#20](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/20) Updated esp_secure_cert_mgr and IDF v5.0 support
25+
326
## v202212.00 ( December 2022 )
427
- [#12](https://github.com/FreeRTOS/iot-reference-esp32c3/pull/12) Update Long Term Support (LTS) libraries to 202210.01-LTS:
528
* [coreMQTT v2.1.1](https://github.com/FreeRTOS/coreMQTT/blob/v2.1.1/CHANGELOG.md)

GettingStartedGuide.md

Lines changed: 3 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,6 @@ Once completed, one can progress to the
3333
&emsp;[6.1 Prerequisite](#61-prerequisite)<br>
3434
&emsp;[6.2 Steps for each test case](#62-steps-for-each-test-case)<br>
3535

36-
[7 Run AWS IoT Device Tester](#7-run-aws-iot-device-tester)<br>
37-
&emsp;[7.1 Prerequisite](#71-prerequisite)<br>
38-
&emsp;[7.2 Download AWS IoT Device Tester](#72-download-aws-iot-device-tester)<br>
39-
&emsp;[7.3 Configure AWS IoT Device Tester](#73-configure-aws-iot-device-tester)<br>
40-
&emsp;[7.4 Running the FreeRTOS qualification 2.0 suite](#74-running-the-freertos-qualification-20-suite)<br>
41-
4236
## 1 Pre-requisites
4337

4438
### 1.1 Hardware Requirements
@@ -610,15 +604,11 @@ I (3444) ota_over_mqtt_demo: Subscribed to topic $aws/things/thing_esp32c3_nonOt
610604

611605
### 6.1 Prerequisite
612606

613-
- Follow the
614-
[OTA update with AWS IoT Guide](#5-perform-firmware-over-the-air-updates-with-aws-iot)
615-
to create an OTA update and verify the digital signature, checksum and version
616-
number of the new image. If firmware update is verified, you can run the tests on your device.
617607
- Run `idf.py menuconfig`.
618608
- Under `Featured FreeRTOS IoT Integration`, choose `Run qualification test`.
619609
- Under `Component config -> Unity unit testing library`, choose `Include Unity test fixture`.
620610

621-
_Note: The log of module `esp_ota_ops`, `AWS_OTA` and `esp-tls-mbedtls` will be
611+
_Note: The log of module `esp_ota_ops` and `esp-tls-mbedtls` will be
622612
disabled when running the qualification test. You can change the log level by
623613
`esp_log_level_set` in [main.c](./main/main.c)._
624614

@@ -635,6 +625,7 @@ disabled when running the qualification test. You can change the log level by
635625
- Set `Thing Name for Device Advisor Test/OTA end-to-end Test` to AWS IoT Thing under test.
636626
- Build and run.
637627
- See Device Advisor test result in the console.
628+
638629
2. MQTT Test
639630
- Under `Featured FreeRTOS IoT Integration -> Qualification Test Configurations -> Qualification Execution Test Configurations`,
640631
choose `MQTT Test`.
@@ -678,23 +669,7 @@ disabled when running the qualification test. You can change the log level by
678669
I (612755) qual_main: End qualification test.
679670
```
680671
681-
4. OTA PAL Test
682-
- Under `Featured FreeRTOS IoT Integration -> Qualification Test Configurations -> Qualification Execution Test Configurations`,
683-
choose `OTA PAL Test`.
684-
- Build and run.
685-
- See test result on target output.
686-
- Example output
687-
688-
```c
689-
I (905) qual_main: Run qualification test.
690-
...
691-
-----------------------
692-
15 Tests 0 Failures 0 Ignored
693-
OK
694-
I (113755) qual_main: End qualification test.
695-
```
696-
697-
5. Core PKCS11 Test
672+
4. Core PKCS11 Test
698673
- Under `Featured FreeRTOS IoT Integration -> Qualification Test Configurations -> Qualification Execution Test Configurations`,
699674
choose `CorePKCS#11 Test`.
700675
- Build and run.
@@ -709,124 +684,3 @@ disabled when running the qualification test. You can change the log level by
709684
OK
710685
I (7518) qual_main: End qualification test.
711686
```
712-
713-
## 7 Run AWS IoT Device Tester
714-
715-
This repository can be tested using
716-
[AWS IoT Device Tester for FreeRTOS (IDT)](https://aws.amazon.com/freertos/device-tester/).
717-
IDT is a downloadable tool that can be used to exercise a device integration with
718-
FreeRTOS to validate functionality and compatibility with Amazon IoT cloud.
719-
Passing the test suite provided by IDT is also required to qualify a device for
720-
the [Amazon Partner Device Catalogue](https://devices.amazonaws.com/).
721-
722-
IDT runs a suite of tests that include testing the device's transport interface
723-
layer implementation, PKCS11 functionality, and OTA capabilities. In IDT test
724-
cases, the IDT binary will make a copy of the source code, update the header files
725-
in the project, then compile the project and flash the resulting image to your
726-
board. Finally, IDT will read serial output from the board and communicate with
727-
the AWS IoT cloud to ensure that test cases are passing.
728-
729-
### 7.1 Prerequisite
730-
731-
- Follow the
732-
[OTA update with AWS IoT Guide](#5-perform-firmware-over-the-air-updates-with-aws-iot)
733-
to create an OTA update and verify the digital signature, checksum and version
734-
number of the new image. If firmware update is verified, you can run the tests
735-
on your device.
736-
- Run `idf.py menuconfig`.
737-
- Under `Featured FreeRTOS IoT Integration`, choose `Run qualification test`.
738-
- Under `Component config -> Unity unit testing library`, choose `Include Unity test fixture`.
739-
- Under `Featured FreeRTOS IoT Integration -> Qualification Test Configurations -> Qualification Execution Test Configurations`,
740-
**DISABLE** all the tests.
741-
- Run `idf.py fullclean` to clear local CMAKE cache.
742-
743-
_Note: The log of module `esp_ota_ops`, `AWS_OTA` and `esp-tls-mbedtls` will be
744-
disabled when running the qualification test. You can change the log level by
745-
`esp_log_level_set` in [main.c](./main/main.c)._
746-
747-
### 7.2 Download AWS IoT Device Tester
748-
749-
The latest version of IDT can be downloaded from the
750-
[here](https://docs.aws.amazon.com/freertos/latest/userguide/dev-test-versions-afr.html).
751-
This repository has been qualified by IDT v4.6.0 and test suite version 2.3.0 for
752-
[FreeRTOS 202210-LTS](https://github.com/FreeRTOS/FreeRTOS-LTS/tree/202210.01-LTS).
753-
754-
### 7.3 Configure AWS IoT Device Tester
755-
756-
Follow [the instructions to setup your AWS account](https://docs.aws.amazon.com/freertos/latest/userguide/lts-idt-dev-tester-prereqs.html#lts-config-aws-account).
757-
758-
Extract IDT for FreeRTOS to a location on the file system
759-
760-
- The `devicetester-extract-location/bin` directory holds the IDT binary, which
761-
is the entry point used to run IDT
762-
- The `devicetester-extract-location/results` directory holds logs that are
763-
generated every time you run IDT.
764-
- The `devicetester-extract-location/configs` directory holds configuration files
765-
that are required to setup IDT
766-
767-
Before running IDT, the files in `devicetester-extract-location/configs` need
768-
to be updated. We have pre-defined configures available in the
769-
[idt_config](https://github.com/FreeRTOS/iot-reference-esp32c3/tree/main/idt_config).
770-
Copy these templates to `devicetester-extract-location/configs`, and the rest of
771-
this section will walk through the remaining values that need to be filled in.
772-
773-
You need to configure your AWS credentials for IDT.
774-
775-
- In `config.json`, update the `profile` and `awsRegion` fields
776-
777-
You need to specify the device details for IDT.
778-
779-
- In `device.json`, update `serialPort` to the serial port of your board as from
780-
[PORT](./GettingStartedGuide.md#23-provision-the-esp32-c3-with-the-private-key-device-certificate-and-ca-certificate-in-development-mode).
781-
Update `publicKeyAsciiHexFilePath` to the absolute path to `dummyPublicKeyAsciiHex.txt`.
782-
Update `publicDeviceCertificateArn` to the ARN of the certificate uploaded when
783-
[Setup AWS IoT Core](./GettingStartedGuide.md#21-setup-aws-iot-core).
784-
785-
You need to configure IDT the build, flash and test settings.
786-
787-
- In `build.bat` / `build.sh`, update ESP_IDF_PATH, and ESP_IDF_FRAMEWORK_PATH
788-
- In `flash.bat` / `flash.sh`, update ESP_IDF_PATH, ESP_IDF_FRAMEWORK_PATH, and NUM_COMPORT
789-
- In `userdata.json`, update `sourcePath` to the absolute path to the root of this repository.
790-
- In `userdata.json`, update `signerCertificate` with the ARN of the
791-
[Setup pre-requisites for OTA cloud resources](./GettingStartedGuide.md#51-setup-pre-requisites-for-ota-cloud-resources)
792-
- Run all the steps to create a
793-
[second code signing certificate](./GettingStartedGuide.md#51-setup-pre-requisites-for-ota-cloud-resources)
794-
but do NOT provision the key onto your board.
795-
- Copy the ARN for this certificate in `userdata.json` for the field
796-
`untrustedSignerCertificate`.
797-
798-
### 7.4 Running the FreeRTOS qualification 2.0 suite
799-
800-
With configuration complete, IDT can be run for an individual test group, a
801-
test case, or the entire qualification suite.
802-
803-
List all the available test groups, run:
804-
805-
```sh
806-
.\devicetester_win_x86-64.exe list-groups
807-
```
808-
809-
Run one or more specified test group, run e.g.:
810-
811-
```sh
812-
.\devicetester_win_x86-64.exe run-suite --group-id FullCloudIoT --group-id OTACore
813-
```
814-
815-
Run one or more specified tests, run e.g.:
816-
817-
```sh
818-
.\devicetester_win_x86-64.exe run-suite --group-id OTADataplaneMQTT --test-id OTAE2EGreaterVersion
819-
```
820-
821-
To run the entire qualification suite, run:
822-
823-
```sh
824-
.\devicetester_win_x86-64.exe run-suite --skip-group-id FullPKCS11_PreProvisioned_RSA --skip-group-id FullPKCS11_Import_RSA --skip-group-id FullPKCS11_Core --skip-group-id FullTransportInterfacePlainText
825-
```
826-
827-
For more information, `.\devicetester_win_x86-64.exe help` will show all available commands.
828-
829-
When IDT is run, it generates the `results/uuid` directory that contains the
830-
logs and other information associated with your test run. See
831-
[Understanding results and logs](https://docs.aws.amazon.com/freertos/latest/userguide/lts-results-logs.html)
832-
for more details.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ git submodule update --init --recursive
3636

3737
This repository currently supports 3 demos implemented as FreeRTOS [tasks](https://www.freertos.org/taskandcr.html), each of which utilize the same MQTT connection. The demos use the [coreMQTT](https://www.freertos.org/mqtt/index.html) library, while the [coreMQTT-Agent](https://www.freertos.org/mqtt-agent/index.html) library is employed to manage thread safety for the MQTT connection. The demos are the following:
3838

39-
* **ota_over_mqtt_demo**: This demo uses the [AWS IoT OTA service](https://docs.aws.amazon.com/freertos/latest/userguide/freertos-ota-dev.html) for FreeRTOS to configure and create OTA updates. The OTA client software on the ESP32-C3 uses the [AWS IoT OTA library](https://www.freertos.org/ota/index.html) and runs in the background within a FreeRTOS agent (or daemon) task. A new firmware image is first signed and uploaded to the OTA service, and the project is then configured to store the corresponding public key certificate. The demo subscribes to, and listens on, an OTA job topic in order to be notified of an OTA update. Upon receiving notification of a pending OTA update, the device downloads the firmware patch and performs code signature verification of the downloaded image by using the public key certificate. On successful verification, the device reboots and the updated image is activated. The OTA client then performs a self-test on the updated image to check for its integrity.
39+
* **ota_over_mqtt_demo**: This demo uses the [AWS IoT OTA service](https://docs.aws.amazon.com/freertos/latest/userguide/freertos-ota-dev.html) for FreeRTOS to configure and create OTA updates. The OTA client software on the ESP32-C3 follows the [Modular Over the Air Updates](https://freertos.org/freertos-core/over-the-air-updates/index.html) design and runs in the background within a FreeRTOS agent (or daemon) task. A new firmware image is first signed and uploaded to the OTA service, and the project is then configured to store the corresponding public key certificate. The demo subscribes to, and listens on, an OTA job topic in order to be notified of an OTA update. Upon receiving notification of a pending OTA update, the device downloads the firmware patch and performs code signature verification of the downloaded image by using the public key certificate. On successful verification, the device reboots and the updated image is activated. The OTA client then performs a self-test on the updated image to check for its integrity.
4040
* **sub_pub_unsub_demo**: The demo creates tasks which subscribe to a topic on AWS IoT Core, publish a constant string to the same topic, receive their publish (since they are subscribed to the topic they publish to), and then unsubscribe from the topic in a loop.
4141
* **temp_sub_pub_and_led_control_demo**: This demo creates a task which subscribes to a topic on AWS IoT Core. This task then reads the temperature from the onboard temperature sensor, publishes this information in JSON format to the same topic, and then receives this publish (since it is subscribed to the same topic it just published to) in a loop. This demo also enables a user to send a JSON packet back to the device to turn an LED off or on.
4242

idt_config/dummyPublicKeyAsciiHex.txt

Lines changed: 0 additions & 6 deletions
This file was deleted.

idt_config/windows/build.bat

Lines changed: 0 additions & 23 deletions
This file was deleted.

idt_config/windows/config.json

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)