Skip to content

Commit 490b7e3

Browse files
committed
First workshop version added.
fixed broken links fixed title
1 parent def521b commit 490b7e3

File tree

26 files changed

+3801
-0
lines changed

26 files changed

+3801
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
---
2+
title: "ESP-IDF Advanced Workshop"
3+
date: "2025-08-05"
4+
series: ["WS00B"]
5+
series_order: 1
6+
showAuthor: false
7+
summary: "This workshop is about advanced features of ESP-IDF and focuses on modular development, event loops, core dumps, size analysis and flash encryption."
8+
9+
---
10+
11+
Welcome to Espressif's Advanced ESP-IDF Workshop!
12+
13+
## Introduction
14+
15+
In this hands-on workshop, you'll develop a solid understanding of the ESP-IDF framework, included modular development via components, event loops, core dumps, and security features.
16+
17+
{{< alert icon="circle-info" cardColor="#b3e0f2" iconColor="#04a5e5">}}
18+
Estimated time: 3 hours.
19+
{{< /alert >}}
20+
21+
## Agenda
22+
23+
The workshop is structured into four parts. Here's the outline:
24+
25+
* Part 1: **Components**
26+
27+
* Lecture 1 -- What is a component, how to create it, and how to support multiple hardware versions via BSPs and multi-config
28+
* Assignment 1.1 -- Refactor the code creating the alarm component
29+
* Assignment 1.2 -- Refactor the code creating the `cloud_manager` component
30+
* Assignment 1.3 -- Multiple configuration using `sdkconfig`
31+
32+
* Part 2: **Event Loops**
33+
34+
* Lecture 2 -- Event loop basics in ESP-IDF, using timer events, and separation of concerns
35+
* Assignment 2.1 -- Refactor the code to use the event loop mechanism
36+
* Assignment 2.2 -- Add a gpio event to the event loop
37+
38+
* **Break** (15 minutes)
39+
40+
* Part 3: **Performance and crash analysis**
41+
42+
* Lecture 3 -- Application size analysis and core dumps
43+
* Assignment 3.1 -- Analyze application size and suggest optimizations
44+
* Assignment 3.2 -- Analyze a crash using core dumps (guided)
45+
* Assignment 3.3 -- Analyze a crash using core dumps (optional)
46+
47+
* Part 4: **OTA and Security Features**
48+
49+
* Lecture 4 -- OTA fundamentals, partition table configuration, secure bootloader, flash encryption
50+
* Assignment 4.1 -- Modify the partition table to support OTA
51+
* Assignment 4.2 -- Use a custom partition table
52+
* Assignment 4.3 -- Enable flash encryption
53+
<!-- * Assignment 4.4 -- Secure bootloader (optional - TBD) -->
54+
55+
## Prerequisites
56+
57+
To follow this workshop, make sure you meet the prerequisites listed below.
58+
59+
* Good knowledge of:
60+
61+
* C programming and its linker
62+
* Call back functions and function pointers
63+
* MQTT protocol and usage
64+
65+
* Embedded programming
66+
67+
* Flashing / Programming, linking
68+
* Familiarity with MCU peripherals such as GPIO and I2C
69+
* Basic experience with ESP-IDF
70+
* Tools installation (VSCode + ESP-IDF extension)
71+
72+
> We strongly recommend installing VSCode and the ESP-IDF plugin before the workshop begins. If you run into any issues, there will be some time during the first assignment to complete the installation.
73+
74+
75+
## Reference Table
76+
77+
| Prerequisite | Description | Reference |
78+
| ---------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
79+
| MCU memory types | Difference between Flash, RAM and EEPROM | [L. Harvie (Medium)](https://medium.com/@lanceharvieruntime/embedded-systems-memory-types-flash-vs-sram-vs-eeprom-93d0eed09086) |
80+
| PSRAM | What is PSRAM | [M. Hawthorne (Technipages)](https://www.technipages.com/what-is-psdram-pseudo-static-ram/) |
81+
| MCU serial peripherals | Difference between SPI, I2C, UART | [nextpcb.com](https://www.nextpcb.com/blog/spi-i2c-uart) |
82+
| ESP-IDF VSCode Plugin | Espressif official VSCode Extension | [vscode-esp-idf-extension installation](https://github.com/espressif/vscode-esp-idf-extension?tab=readme-ov-file#how-to-use) |
83+
| Partition table | What is partition table and why it's useful| [Wikipedia disk partitioning article](https://en.wikipedia.org/wiki/Disk_partitioning)
84+
85+
<!-- | YAML | Human-readable data serialization format used for dependency management through `idf_component.yml` | [Wikipedia](https://en.wikipedia.org/wiki/YAML), [datacamp.com](https://www.datacamp.com/blog/what-is-yaml) | -->
86+
87+
88+
## Workshop
89+
90+
Without further delay, let’s get started! You’ll find links to each part of the workshop below.
91+
92+
The first lecture builds on the code in [`assignment_1_1_base`](https://github.com/FBEZ-docs-and-templates/devrel-advanced-workshop-code/tree/main/assignment_1_1_base).
93+
94+
If you’re unable to complete a particular assignment, please download its prerequisite as shown in the diagram below.
95+
96+
```goat
97+
assignment_1_1_base ---> assignment_1_1 ---> assignment_1_2 -+-> assignment_1_3
98+
|
99+
+-> assignment_2_1 ---> assignment_2_2 ---> assignment_3_1
100+
101+
assignment_3_2_base --------------------------------> assignment 3_2 ---> assignment 4_1 ---> assignment 4_2
102+
```
103+
<br>
104+
105+
106+
{{< alert icon="circle-info" cardColor="#b3e0f2" iconColor="#04a5e5">}}
107+
Even if you complete all assignments successfully, you’ll still need to download at least `assignment_1_1_base` and `assignment_3_2_base`.
108+
{{< /alert >}}
109+
110+
111+
Your next step is __[Lecture 1](lecture-1/)__.
112+
113+
* __Part 1__
114+
* [Lecture 1](lecture-1/)
115+
* [assignment 1.1](assignment-1-1/)
116+
* [assignment 1.2](assignment-1-2/)
117+
* [assignment 1.3](assignment-1-3/)
118+
* __Part 2__
119+
* [Lecture 2](lecture-2/)
120+
* [assignment 2.1](assignment-2-1/)
121+
* [assignment 2.2](assignment-2-2/)
122+
* __Part 3__
123+
* [Lecture 3](lecture-3/)
124+
* [assignment 3.1](assignment-3-1/)
125+
* [assignment 3.2](assignment-3-2/)
126+
* [assignment 3.3](assignment-3-3/)
127+
* __Part 4__
128+
* [Lecture 4](lecture-4/)
129+
* [assignment 4.1](assignment-4-1/)
130+
* [assignment 4.2](assignment-4-2/)
131+
* [assignment 4.3](assignment-4-3/)
132+
<!-- * [assignment 4.4](assignment-4-4/) -->
133+
134+
135+
## Conclusion
136+
137+
You just arrived at the end of this workshop, congratulation! We hope it was a fruitful experience and the start of a longer journey. Thank you for following the advanced ESP-IDF workshop.
17 KB
Loading
16.9 KB
Loading
17 KB
Loading
17.5 KB
Loading
18.4 KB
Loading
14.3 KB
Loading
74.1 KB
Loading
11 KB
Loading
115 KB
Loading

0 commit comments

Comments
 (0)