Skip to content

Commit 25bfcab

Browse files
committed
fix: add url redirects for moved articles and fix existing links
1 parent a5148d6 commit 25bfcab

File tree

15 files changed

+280
-265
lines changed
  • content/blog
    • 2020
    • 2023/07/core-dump-a-powerful-tool-for-debugging-programs-in-zephyr-with-esp32-boards
    • 2024
    • 2025
      • 01/how-to-migrate-from-idf-bootloader-to-mcuboot-using-esp-self-reflasher
      • 05/nuttx-motor-control-and-sensing
      • 06/simple-boot-explained
      • 07/nuttx-motor-control-and-sensing-data-trans
      • 09/nuttx-storing-data-spi-flash

15 files changed

+280
-265
lines changed

content/blog/2020/11/nuttx-getting-started/index.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ authors:
1010
- "eren-terzioglu"
1111
- "filipe-cavalcanti"
1212
summary: "This article provides a tutorial to get started with NuttX."
13+
aliases:
14+
- /blog/nuttx-getting-started
1315
---
1416

1517
## Introduction to Apache NuttX RTOS
@@ -285,4 +287,4 @@ NuttX is one of the most preferred RTOS for developers familiar with Linux inter
285287

286288
---
287289

288-
The [original article](https://medium.com/the-esp-journal/getting-started-with-esp32-and-nuttx-fd3e1a3d182c) was published on Medium, on the [ESP Journal](https://medium.com/the-esp-journal). It has since been updated.
290+
The [original article](https://medium.com/the-esp-journal/getting-started-with-esp32-and-nuttx-fd3e1a3d182c) was published on Medium, on the [ESP Journal](https://medium.com/the-esp-journal). It has since been updated.

content/blog/2020/12/blink-led-on-esp32-with-rtos-nuttx/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ tags:
99
- Nuttx
1010
- Esp32
1111
summary: "This is a tutorial on how to blink an LED with NuttX after getting started."
12+
aliases:
13+
- /blog/blink-led-on-esp32-with-rtos-nuttx
1214
---
1315
\
1416
{{< alert >}}

content/blog/2023/07/core-dump-a-powerful-tool-for-debugging-programs-in-zephyr-with-esp32-boards/index.md

Lines changed: 213 additions & 211 deletions
Large diffs are not rendered by default.

content/blog/2024/06/zephyr-max-wifi-throughput/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ authors:
77
- "marcio-ribeiro"
88
tags: ["ESP32-S3", "Zephyr", "Wi-Fi"]
99
summary: "How to improve the throuput of network applications with Zephyr on Espressif devices."
10+
aliases:
11+
- /blog/zephyr-max-wifi-throughput
1012
---
1113

1214
Those who develop IoT applications based on Zephyr OS often need to optimize the communication performance. It can be done by tweaking the Wi-Fi network stack parameters. However, how do you evaluate the resulting changes and find the most suitable configuration? In this article, we will overview a method to optimize communication performance by using the `iperf` and `zperf` tools.

content/blog/2024/08/esp32-memory-map-101/index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ showAuthor: false
77
authors:
88
- "marek-matej"
99
aliases:
10-
- [esp32s-family-memory-map-101]
10+
- /blog/esp32s-family-memory-map-101
11+
- /blog/esp32-memory-map-101
1112
summary: "This article addresses the complexity of Espressif SoCs by offering a visual, structured compilation of crucial technical data from their datasheets and TRMs. The main takeaway for the reader is a simplified, actionable understanding of the memory maps, caches, peripherals, and eFuse blocks, which is essential for low-level system and driver development."
1213
---
1314

content/blog/2024/09/building-applications-on-nuttx-understanding-the-build-system/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ showAuthor: false
99
authors:
1010
- "tiago-medicci"
1111
summary: "This article shows how to port and build an application form other Posix-compliant systems to NuttX."
12+
aliases:
13+
- /blog/nuttx-adding-porting-an-app
1214
---
1315

1416
## Developing a Project with Existing Applications

content/blog/2024/10/esp32-bootstrapping/index.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ authors:
77
- "marek-matej"
88
tags: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP-IDF", "Zephyr"]
99
summary: "This article explains the booting process of Espressif devices up to ESP32-C6 (and probably newer devices)."
10+
aliases:
11+
- /blog/esp32-bootstrapping
1012
---
1113

1214
Those acquainted with the ESP32 system-on-chip (SoC) family know the complexity involved in analyzing its booting process. From navigating the embedded ROM bootloader, facilitated by comprehensive tooling, to initiating the 2nd stage bootloader, which subsequently launches the user application. The procedure deviates significantly from the the straightforward "jump-to-reset-vector" way of starting the user program, as we can see on the ARM architecture.
@@ -363,7 +365,7 @@ uart:~$
363365

364366
### MCUboot Zephyr port (ZP)
365367

366-
First lets take a look at how to manually build the MCUboot and the subsequent application. Each `west flash` in the code is using its own flash partition and it is not overwritten by each other.
368+
First lets take a look at how to manually build the MCUboot and the subsequent application. Each `west flash` in the code is using its own flash partition and it is not overwritten by each other.
367369

368370
Building and flashing the MCUboot separately at its location:
369371
```shell
@@ -525,6 +527,6 @@ The ESP32 port in Zephyr RTOS has variety of booting options.
525527
## Additional reading
526528

527529
- [Zephyr RTOS and ESP32](https://www.zephyrproject.org/zephyr-rtos-on-esp32/)
528-
- [ESP32's memory map](https://developer.espressif.com/blog/esp32-memory-map-101/)
530+
- [ESP32's memory map](https://developer.espressif.com/blog/2024/08/esp32-memory-map-101/)
529531
- [ESP32 Programmers memory model](https://developer.espressif.com/blog/esp32-programmers-memory-model/)
530532
- [ESP32-S3 Technical Reference Manual](https://www.espressif.com/sites/default/files/documentation/esp32-s3_datasheet_en.pdf)

content/blog/2024/10/pytest-testing-with-nuttx/index.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ showAuthor: false
77
authors:
88
- "filipe-cavalcanti"
99
summary: "How Pytest is used for testing the NuttX RTOS on Espressif devices."
10+
aliases:
11+
- /blog/pytest-testing-with-nuttx
1012
---
1113

1214
## Introduction
@@ -29,7 +31,7 @@ Pytest allows us to set up a test environment and scale tests easily, using fixt
2931

3032
Pytest integrates with argparse, enabling us to pass arguments to tests via the command line or by specifying them in an .ini file. These arguments can be accessed by any test case when needed.
3133

32-
Another significant advantage of pytest is the large number of available plugins. Pytest provides a standard way to implement [plugins](https://docs.pytest.org/en/stable/reference/plugin_list.html) using its hooks, allowing contributors to share their plugins with the community.
34+
Another significant advantage of pytest is the large number of available plugins. Pytest provides a standard way to implement [plugins](https://docs.pytest.org/en/stable/reference/plugin_list.html) using its hooks, allowing contributors to share their plugins with the community.
3335

3436
## Setting Up the Test Environment
3537

@@ -47,7 +49,7 @@ To create the virtual environment, use Python's venv tool and create an environm
4749
```
4850
fdcavalcanti@espubuntu:~/embedded_test$ python3 -m venv venv
4951
fdcavalcanti@espubuntu:~/embedded_test$ source venv/bin/activate
50-
(venv) fdcavalcanti@espubuntu:~/embedded_test$
52+
(venv) fdcavalcanti@espubuntu:~/embedded_test$
5153
```
5254

5355
Next, upgrade pip (Python’s package manager) and install the following packages:
@@ -74,7 +76,7 @@ pytest 8.3.3
7476
Now, the environment is ready, and we can begin setting up our tests.
7577

7678
## Establishing Communication
77-
79+
7880
Before we can test an application, we need to establish working serial communication that we can use in our tests. First, we’ll create a Python class to handle this, and then we’ll explore how pytest can leverage it.
7981

8082
## Serial Communication Class
@@ -89,7 +91,7 @@ Our class will be called SerialCommunication and will contain the mandatory init
8991
The following is what our initialization looks like. The timeout argument is important to avoid locking our serial port in case of a failure where the device is unresponsive. It can also be adjusted on the fly for long test cases.
9092

9193
```python
92-
import serial
94+
import serial
9395

9496
class SerialCommunication:
9597
def __init__(self, port: str, baudrate: int=115200, timeout: int=10):
@@ -131,7 +133,7 @@ def close(self) -> None:
131133
I have an [ESP32H2 Devkit](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32h2/esp32-h2-devkitm-1/user_guide.html) connected to my serial port at `/dev/ttyUSB0` and
132134
running the `nsh` firmware configuration.
133135

134-
If you are not familiar with building NuttX, checkout this article on [getting started with NuttX and ESP32](https://developer.espressif.com/blog/nuttx-getting-started/).
136+
If you are not familiar with building NuttX, checkout this article on [getting started with NuttX and ESP32](https://developer.espressif.com/blog/2020/11/nuttx-getting-started/).
135137

136138
Below, we will add a simple main routine to our communication.py file to validate that our communication works by sending the help and uname commands and reading the responses.
137139

@@ -146,10 +148,10 @@ if __name__ == "__main__":
146148
Output from the routine above:
147149

148150
```console
149-
(venv) fdcavalcanti@espubuntu:~/embedded_test$ python3 communication.py
151+
(venv) fdcavalcanti@espubuntu:~/embedded_test$ python3 communication.py
150152
uname -a
151153
NuttX 10.4.0 4622e4f996-dirty Sep 27 2024 14:52:14 risc-v esp32h2-devkit
152-
nsh>
154+
nsh>
153155
```
154156

155157
So it works. We have the communication basis that allows us to structure our Pytest environment. The same recipe can be followed for communication via telnet, sockets, MQTT, or whatever is needed for the application.
@@ -179,7 +181,7 @@ This first example's conftest.py file will be responsible for one task: creating
179181

180182
Create the conftest file:
181183
```
182-
(venv) fdcavalcanti@espubuntu:~/embedded_test$ touch conftest.py
184+
(venv) fdcavalcanti@espubuntu:~/embedded_test$ touch conftest.py
183185
```
184186

185187
Then, import the SerialCommunication class and create the fixture using session scope, naming it "target".
@@ -224,7 +226,7 @@ rootdir: /home/fdcavalcanti/embedded_test
224226
plugins: metadata-3.1.1, html-4.1.1
225227
collected 1 item
226228
227-
test_uname.py::test_uname_board PASSED [100%]
229+
test_uname.py::test_uname_board PASSED [100%]
228230
============================== 1 passed in 0.14s ==============================
229231
```
230232

@@ -250,7 +252,7 @@ def test_dir_create_delete(target):
250252
target.write(f"mkdir {directory}")
251253
ans = target.write("ls")
252254
assert directory in ans
253-
255+
254256
target.write(f"rmdir {directory}")
255257
ans = target.write("ls")
256258
assert directory not in ans
@@ -270,7 +272,7 @@ def test_dir_create_delete(target, directory):
270272
target.write(f"mkdir {directory}")
271273
ans = target.write("ls")
272274
assert directory in ans
273-
275+
274276
target.write(f"rmdir {directory}")
275277
ans = target.write("ls")
276278
assert directory not in ans
@@ -365,7 +367,7 @@ For more information, refer to the links below.
365367

366368
- [Pytest getting started](https://docs.pytest.org/en/stable/getting-started.html)
367369
- [Example repository](https://github.com/fdcavalcanti/pytest-nuttx-testing-sample)
368-
- [Getting Started with NuttX and ESP32](https://developer.espressif.com/blog/nuttx-getting-started/)
370+
- [Getting Started with NuttX and ESP32](https://developer.espressif.com/blog/2020/11/nuttx-getting-started/)
369371
- [GoogleTest](http://google.github.io/googletest/)
370372
- [CppTest](https://cpptest.sourceforge.io/)
371373
- [Robot Framework](https://robotframework.org/)

content/blog/2024/11/using-wokwi-with-nuttx/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ In this article, we will examine how the NuttX real-time operating system (RTOS)
1313
{{< alert icon="eye" >}}
1414
**Note!**
1515

16-
Note: Reviewing this article together with <cite>[NuttX on an emulated ESP32 using QEMU](https://medium.com/@lucassvaz/nuttx-on-an-emulated-esp32-using-qemu-8d8d93d24c63)</cite> article will help the user to distinguish between the two solutions and to determine the most suitable solution for the needs. Additionally, it is recommended to have knowledge of project compilation through the NuttX official documentation and <cite>[Getting Started with NuttX and ESP32](https://developer.espressif.com/blog/nuttx-getting-started/)</cite> article. NuttX project build documentation is available [at this link](https://nuttx.apache.org/docs/latest/).
16+
Note: Reviewing this article together with <cite>[NuttX on an emulated ESP32 using QEMU](https://medium.com/@lucassvaz/nuttx-on-an-emulated-esp32-using-qemu-8d8d93d24c63)</cite> article will help the user to distinguish between the two solutions and to determine the most suitable solution for the needs. Additionally, it is recommended to have knowledge of project compilation through the NuttX official documentation and <cite>[Getting Started with NuttX and ESP32](https://developer.espressif.com/blog/2020/11/nuttx-getting-started/)</cite> article. NuttX project build documentation is available [at this link](https://nuttx.apache.org/docs/latest/).
1717
{{< /alert >}}
1818

1919
## What is Wokwi?
@@ -226,4 +226,4 @@ In this article, we have seen the features of Wokwi and how it can be used with
226226
[4]: https://docs.wokwi.com/getting-started/supported-hardware
227227
[5]: https://docs.wokwi.com/vscode/project-config
228228
[6]: https://docs.wokwi.com/vscode/debugging
229-
[7]: https://developer.espressif.com/blog/nuttx-getting-started/
229+
[7]: https://developer.espressif.com/blog/2020/11/nuttx-getting-started/

content/blog/2024/11/zephyr-tracing-and-profiling/index.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ authors:
88
- "raffael-rostagno"
99
tags: ["ESP32", "Tracing", "Profiling","Zephyr"]
1010
summary: "This is an introduction to the critical embedded system debugging techniques of tracing and profiling within the Zephyr RTOS. After reading this article, you can use Zephyr's native tracing tools to gain a visual, in-depth understanding of system dynamics, helping to evaluate performance, spot timing issues, and diagnose complex problems like memory leaks or thread interaction glitches."
11+
aliases:
12+
- /blog/zephyr-tracing-and-profiling
1113
---
1214

1315
Embedded systems can be quite complex, depending on the architecture, application size and nature. Even for an experienced embedded developer, understanding the interplay of threads, interrupts, and multiple processes that run in a large application can be challenging. We humans are (mostly) visual by nature, and having the means to *visualize* what is happening in a given system can really open up possibilities. Without the right tools we are often in the dark, quite literally.
@@ -268,14 +270,12 @@ Even though these examples may be more applicable to analyzing complex systems,
268270

269271
## Resources
270272

271-
[1] [Zephyr's Getting Started](https://docs.zephyrproject.org/latest/develop/getting_started/index.html)
272-
[2] [Zephyr's tracing subsystem](https://docs.zephyrproject.org/latest/services/tracing/index.html)
273-
[3] [Tracing utility macros](https://docs.zephyrproject.org/apidoc/latest/group__subsys__tracing__macros.html)
274-
[4] [Zephyr instrumentation subsystem (RFC)](https://github.com/zephyrproject-rtos/zephyr/issues/57373)
275-
[5] [Percepio TraceRecorder and Stream Ports](https://docs.zephyrproject.org/latest/services/tracing/index.html#percepio-tracerecorder-and-stream-ports)
276-
[The Microscope for Embedded Code: How Tracealyzer Revealed Our Bug](https://percepio.com/the-microscope-for-embedded-code-how-tracealyzer-revealed-our-bug/)
277-
[Efficient Firmware Development with Visual Trace Diagnostics](https://percepio.com/percepio-tracealyzer-efficient-firmware-development-with-visual-trace-diagnostics/)
278-
[Tracealyzer on Zephyr – Examples from AC6](https://percepio.com/tracealyzer-zephyr-examples-ac6/)
273+
[1] [Zephyr's Getting Started](https://docs.zephyrproject.org/latest/develop/getting_started/index.html)
274+
[2] [Zephyr's tracing subsystem](https://docs.zephyrproject.org/latest/services/tracing/index.html)
275+
[3] [Tracing utility macros](https://docs.zephyrproject.org/apidoc/latest/group__subsys__tracing__macros.html)
276+
[4] [Zephyr instrumentation subsystem (RFC)](https://github.com/zephyrproject-rtos/zephyr/issues/57373)
277+
[5] [Percepio TraceRecorder and Stream Ports](https://docs.zephyrproject.org/latest/services/tracing/index.html#percepio-tracerecorder-and-stream-ports)
278+
[The Microscope for Embedded Code: How Tracealyzer Revealed Our Bug](https://percepio.com/the-microscope-for-embedded-code-how-tracealyzer-revealed-our-bug/)
279+
[Efficient Firmware Development with Visual Trace Diagnostics](https://percepio.com/percepio-tracealyzer-efficient-firmware-development-with-visual-trace-diagnostics/)
280+
[Tracealyzer on Zephyr – Examples from AC6](https://percepio.com/tracealyzer-zephyr-examples-ac6/)
279281
[Percepio Tracealyzer](https://percepio.com/tracealyzer/)
280-
281-

0 commit comments

Comments
 (0)