

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memulai dengan Espressif ESP32-DevKitC dan ESP-WROVER-KIT
<a name="getting_started_espressif"></a>

**penting**  <a name="deprecation-message"></a>
Integrasi referensi ini di-host di Amazon-FreeRTOS repositori yang tidak digunakan lagi. Kami menyarankan Anda [mulai di sini](freertos-getting-started-modular.md) ketika Anda membuat proyek baru. Jika Anda sudah memiliki proyek FreeRTOS yang ada berdasarkan repositori yang sekarang tidak digunakan lagi, Amazon-FreeRTOS lihat. [Amazon-FreeRTOS Panduan Migrasi Repositori Github](github-repo-migration.md)

**catatan**  
[Untuk mengeksplorasi cara mengintegrasikan pustaka dan demo modular FreeRTOS dalam proyek Espressif IDF Anda sendiri, lihat integrasi referensi unggulan kami untuk platform. ESP32-C3 ](https://www.freertos.org/featured-freertos-iot-integration-targeting-an-espressif-esp32-c3-risc-v-mcu/) 

Ikuti tutorial ini untuk memulai dengan Espressif ESP32-DevKitC dilengkapi dengan ESP32-WROOM-32, ESP32-SOLO-1, atau ESP-WROVER modul dan. ESP-WROVER-KIT-VB Untuk membeli satu dari mitra kami di katalog Perangkat AWS Mitra, gunakan tautan berikut:
+ [ESP32-WROOM-32 DevKitC](https://devices.amazonaws.com/detail/a3G0L00000AANtjUAH/ESP32-DevKitC)
+ [ESP32-SOLO-1](https://devices.amazonaws.com/detail/a3G0h0000076lSMEAY)
+ [ ESP32-WROVER-KIT](https://devices.amazonaws.com/detail/a3G0L00000AANtlUAH/ESP-WROVER-KIT)

Versi papan pengembangan ini didukung di FreeRTOS.

Untuk informasi lebih lanjut tentang versi terbaru papan ini, lihat [ ESP32-DevKitC V4 atau [ ESP-WROVER-KIT v4.1](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/hw-reference/modules-and-boards.html#esp-wrover-kit-v4-1)](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/hw-reference/modules-and-boards.html#esp32-devkitc-v4) di situs web Espressif.

**catatan**  
Saat ini, port FreeRTOS ESP32-WROVER-KIT untuk dan DevKit ESP C tidak mendukung fitur Symmetric multiprocessing (SMP).

## Ikhtisar
<a name="getting_started_espressif-overview"></a>

Tutorial ini memandu Anda melalui langkah-langkah berikut:

1. Menghubungkan papan Anda ke mesin host.

1. Menginstal perangkat lunak pada mesin host untuk mengembangkan dan men-debug aplikasi tertanam untuk papan mikrokontroler Anda.

1. Menyusun silang aplikasi demo FreeRTOS ke gambar biner.

1. Memuat gambar biner aplikasi ke papan Anda, dan kemudian menjalankan aplikasi.

1. Berinteraksi dengan aplikasi yang berjalan di papan Anda di seluruh koneksi serial, untuk tujuan pemantauan dan debugging.

## Prasyarat
<a name="setup-espressif-prereqs"></a>

Sebelum Anda memulai dengan FreeRTOS di papan Espressif Anda, Anda harus mengatur akun dan izin Anda. AWS 

### Mendaftar untuk Akun AWS
<a name="sign-up-for-aws"></a>

Untuk memulai AWS, Anda membutuhkan Akun AWS. Untuk informasi tentang membuat Akun AWS, lihat [Memulai dengan Akun AWS](https://docs.aws.amazon.com//accounts/latest/reference/getting-started.html) di *Panduan AWS Account Management Referensi*.

Untuk memberikan akses dan menambahkan izin bagi pengguna, grup, atau peran Anda:
+ Pengguna dan grup di AWS IAM Identity Center:

  Buat rangkaian izin. Ikuti instruksi di [Buat rangkaian izin](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) dalam *Panduan Pengguna AWS IAM Identity Center *.
+ Pengguna yang dikelola di IAM melalui penyedia identitas:

  Buat peran untuk federasi identitas. Ikuti instruksi dalam [Buat peran untuk penyedia identitas pihak ketiga (federasi)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) dalam *Panduan Pengguna IAM*.
+ Pengguna IAM:
  + Buat peran yang dapat diambil pengguna Anda. Ikuti instruksi dalam [Buat peran untuk pengguna IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) dalam *Panduan Pengguna IAM*.
  + (Tidak disarankan) Lampirkan kebijakan langsung ke pengguna atau tambahkan pengguna ke grup pengguna. Ikuti petunjuk dalam [Menambahkan izin ke pengguna (konsol)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) dalam *Panduan Pengguna IAM*.

## Memulai
<a name="setup-espressif-idf42"></a>

**catatan**  
Perintah Linux dalam tutorial ini mengharuskan Anda menggunakan shell Bash.

1. **Siapkan perangkat keras Espressif.**
   + Untuk informasi tentang menyiapkan perangkat keras papan ESP32-DevKitC pengembangan, lihat [Panduan Memulai ESP32-DevKitC V4](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/hw-reference/esp32/get-started-devkitc.html).
   + Untuk informasi tentang menyiapkan perangkat keras papan ESP-WROVER-KIT pengembangan, lihat [Panduan ESP-WROVER-KIT V4.1 Memulai](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/hw-reference/esp32/get-started-wrover-kit.html).
**penting**  
Saat Anda mencapai bagian **Memulai** panduan Espressif, hentikan, lalu kembali ke petunjuk di halaman ini.

1. Unduh Amazon [GitHub](https://github.com/aws/amazon-freertos)FreeRTOS dari. (Untuk instruksi, lihat [README.md](https://github.com/aws/amazon-freertos/blob/main/README.md)file.)

1. **Siapkan lingkungan pengembangan Anda**.

   Untuk berkomunikasi dengan papan Anda, Anda harus menginstal rantai alat. Espressif menyediakan ESP-IDF untuk mengembangkan perangkat lunak untuk papan mereka. Karena ESP-IDF memiliki versi FreeRTOS Kernel sendiri yang terintegrasi sebagai komponen, Amazon FreerTOS menyertakan versi kustom dari ESP-IDF v4.2 yang memiliki FreeRTOS Kernel dihapus. Ini memperbaiki masalah dengan file duplikat saat Anda mengkompilasi. Untuk menggunakan versi kustom ESP-IDF v4.2 yang disertakan dengan Amazon FreeRTOS, ikuti petunjuk di bawah ini untuk sistem operasi mesin host Anda.

   **Windows**

   1. Unduh ESP-IDF [Universal Online Installer](https://dl.espressif.com/dl/esp-idf/?idf=4.2) untuk Windows.

   1. Jalankan **Pemasang Online Universal**.

   1. Ketika Anda sampai ke langkah **Unduh atau gunakan ESP-IDF**, pilih **Gunakan ESP-IDF direktori yang ada** dan atur **Pilih ESP-IDF direktori yang ada**`{{freertos}}/vendors/espressif/esp-idf`.

   1. Selesaikan instalasi.

   **macOS**

   1. Ikuti petunjuk dalam [Pengaturan Standar prasyarat Toolchain (ESP-IDF v4.2](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/get-started/macos-setup.html)) untuk macOS.
**penting**  
Ketika Anda mencapai instruksi “Dapatkan ESP-IDF” di bawah **Langkah Berikutnya**, berhenti, dan kemudian kembali ke instruksi di halaman ini.

   1. Buka jendela baris perintah.

   1. Arahkan ke direktori unduhan FreeRTOS, lalu jalankan skrip berikut untuk mengunduh dan menginstal rantai alat espressif untuk platform Anda.

      ```
      vendors/espressif/esp-idf/install.sh
      ```

   1. Tambahkan alat ESP-IDF toolchain ke jalur terminal Anda dengan perintah berikut.

      ```
      source vendors/espressif/esp-idf/export.sh
      ```

   **Linux**

   1. Ikuti petunjuk dalam [Pengaturan Standar prasyarat Toolchain (ESP-IDF ](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/get-started/linux-setup.html)v4.2) untuk Linux.
**penting**  
Ketika Anda mencapai instruksi “Dapatkan ESP-IDF” di bawah **Langkah Berikutnya**, berhenti, dan kemudian kembali ke instruksi di halaman ini.

   1. Buka jendela baris perintah.

   1. Arahkan ke direktori unduhan FreeRTOS, lalu jalankan skrip berikut untuk mengunduh dan menginstal rantai alat Espressif untuk platform Anda.

      ```
      vendors/espressif/esp-idf/install.sh
      ```

   1. Tambahkan alat ESP-IDF toolchain ke jalur terminal Anda dengan perintah berikut.

      ```
      source vendors/espressif/esp-idf/export.sh
      ```

1. **Buat koneksi serial.**

   1. Untuk membuat koneksi serial antara mesin host Anda dan ESP32-DevKitC, Anda harus menginstal driver CP210x USB ke UART Bridge VCP. Anda dapat mengunduh driver ini dari [Silicon Labs](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers).

      Untuk membuat koneksi serial antara mesin host Anda dan ESP32-WROVER-KIT, Anda harus menginstal driver port COM virtual FTDI. Anda dapat mengunduh driver ini dari [FTDI](https://www.ftdichip.com/Drivers/VCP.htm).

   1. Ikuti langkah-langkah untuk [Membangun Koneksi Serial dengan ESP32](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/get-started/establish-serial-connection.html).

   1. Setelah Anda membuat koneksi serial, catat port serial untuk koneksi papan Anda. Anda membutuhkannya untuk mem-flash demo.

### Konfigurasikan aplikasi demo FreeRTOS
<a name="configure-demos-espressif-idf42"></a>

Untuk tutorial ini, file konfigurasi FreeRTOS terletak di. `{{freertos}}/vendors/espressif/boards/{{board-name}}/aws_demos/config_files/FreeRTOSConfig.h` (Misalnya, jika `AFR_BOARD espressif.esp32_devkitc` dipilih, file konfigurasi terletak di`{{freertos}}/vendors/espressif/boards/esp32/aws_demos/config_files/FreeRTOSConfig.h`.) 

1. Jika Anda menjalankan macOS atau Linux, buka prompt terminal. Jika Anda menjalankan Windows, buka aplikasi "ESP-IDF 4.x CMD” (jika Anda menyertakan opsi ini saat Anda menginstal ESP-IDF rantai alat), atau aplikasi “Command Prompt” sebaliknya. 

1. Untuk memverifikasi bahwa Anda telah menginstal Python3, jalankan 

   ```
   python --version
   ```

   Versi yang diinstal ditampilkan. [Jika Anda tidak menginstal Python 3.0.1 atau yang lebih baru, Anda dapat menginstalnya dari situs web Python.](https://www.python.org/downloads/)

1. Anda memerlukan AWS Command Line Interface (CLI) untuk menjalankan AWS IoT perintah. Jika Anda menjalankan Windows, gunakan `easy_install awscli` perintah untuk menginstal AWS CLI di aplikasi “Command” atau “ESP-IDF 4.x CMD”. 

   Jika Anda menjalankan macOS atau Linux, lihat [Menginstal CLI AWS](https://docs.aws.amazon.com/cli/latest/userguide/installing.html). 

1. Jalankan .

   ```
   aws configure
   ```

   dan konfigurasikan AWS CLI dengan ID kunci AWS akses Anda, kunci akses rahasia, dan Wilayah default AWS . Untuk informasi selengkapnya, lihat [Mengonfigurasi AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

1. Gunakan perintah berikut untuk menginstal AWS SDK untuk Python (boto3):
   + Di Windows, di aplikasi “Command” atau "ESP-IDF 4.x CMD”, jalankan

     ```
     pip install boto3 --user
     ```
**catatan**  
Lihat [dokumentasi Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) untuk detailnya.
   + Di macOS atau Linux, jalankan

     ```
     pip install tornado nose --user
     ```

     dan kemudian lari

     ```
     pip install boto3 --user
     ```

   FreeRTOS menyertakan `SetupAWS.py` skrip untuk membuatnya lebih mudah untuk mengatur papan Espressif Anda untuk terhubung. AWS IoT Untuk mengkonfigurasi skrip, buka `{{freertos}}/tools/aws_config_quick_start/configure.json` dan atur atribut berikut:  
**`afr_source_dir`**  
Jalur lengkap ke `{{freertos}}` direktori di komputer Anda. Pastikan Anda menggunakan garis miring maju untuk menentukan jalur ini.  
**`thing_name`**  
Nama yang ingin Anda tetapkan untuk AWS IoT hal yang mewakili papan Anda.  
**`wifi_ssid`**  
SSID Wi-Fi jaringan Anda.  
**`wifi_password`**  
Kata sandi untuk Wi-Fi jaringan Anda.  
**`wifi_security`**  
Jenis keamanan untuk Wi-Fi jaringan Anda.  
Berikut ini adalah jenis keamanan yang valid:  
   + `eWiFiSecurityOpen`(Terbuka, tidak ada keamanan)
   + `eWiFiSecurityWEP`(Keamanan WEP)
   + `eWiFiSecurityWPA`(Keamanan WPA)
   + `eWiFiSecurityWPA2`(Keamanan WPA2)

1. Jalankan skrip konfigurasi.

   1. Jika Anda menjalankan macOS atau Linux, buka prompt terminal. Jika Anda menjalankan Windows, buka aplikasi “ESP-IDF 4.x CMD” atau “Command”. 

   1. Arahkan ke `{{freertos}}/tools/aws_config_quick_start` direktori dan jalankan 

      ```
      python SetupAWS.py setup
      ```

      Script melakukan hal berikut:
      + Membuat hal IoT, sertifikat, dan kebijakan.
      + Melampirkan kebijakan IoT ke sertifikat dan sertifikat untuk AWS IoT benda itu.
      + Mengisi `aws_clientcredential.h` file dengan AWS IoT endpoint, Wi-Fi SSID, dan kredensialnya.
      + Memformat sertifikat dan kunci pribadi Anda dan menuliskannya ke file `aws_clientcredential_keys.h` header.
**catatan**  
Sertifikat di-hardcode hanya untuk tujuan demonstrasi. Production-level aplikasi harus menyimpan file-file ini di lokasi yang aman.

      Untuk informasi selengkapnya`SetupAWS.py`, lihat `README.md` di `{{freertos}}/tools/aws_config_quick_start` direktori.

### Memantau pesan MQTT di cloud
<a name="gsg-espressif-monitor-mqtt"></a>

Sebelum menjalankan proyek demo FreeRTOS, Anda dapat mengatur klien MQTT di konsol untuk memantau pesan AWS IoT yang dikirim perangkat Anda ke Cloud. AWS 

**Untuk berlangganan topik MQTT dengan AWS IoT Klien MQTT**

1. Navigasikan ke [konsol AWS IoT](https://console.aws.amazon.com/iotv2/) tersebut.

1. Di panel navigasi, pilih **Uji**, lalu pilih **MQTT Test** Client.

1. Dalam **Subscription topic**, masukkan`{{your-thing-name}}/example/topic`, lalu pilih **Subscribe to topic**.

Ketika proyek demo berhasil berjalan di perangkat Anda, Anda melihat “Hello World\!” dikirim beberapa kali ke topik yang Anda berlangganan.

### Bangun, flash, dan jalankan proyek demo FreeRTOS menggunakan skrip idf.py
<a name="build-and-run-example-espressif-idf42"></a>

Anda dapat menggunakan utilitas IDF Espressif (`idf.py`) untuk membangun proyek dan mem-flash binari ke perangkat Anda.

**catatan**  
Beberapa pengaturan mungkin mengharuskan Anda menggunakan opsi `"-p port-name"` port `idf.py` untuk menentukan port yang benar, seperti pada contoh berikut.  

```
idf.py -p /dev/cu.usbserial-00101301B flash
```

**Membangun dan mem-flash FreeRTOS di Windows, Linux, dan macOS (v4.2) ESP-IDF**

1. Arahkan ke root direktori unduhan FreeRTOS Anda.

1. Di jendela baris perintah, masukkan perintah berikut untuk menambahkan ESP-IDF alat ke PATH terminal Anda.  
**Windows (aplikasi “Perintah”)**  

   ```
   vendors\espressif\esp-idf\export.bat
   ```  
**Windows (aplikasi “ESP-IDF 4.x CMD”)**  
(Ini sudah dilakukan saat Anda membuka aplikasi.)  
**Linux/macOS**  

   ```
   source vendors/espressif/esp-idf/export.sh
   ```

1. Konfigurasikan cmake di `build` direktori dan buat gambar firmware dengan perintah berikut.

   ```
   idf.py -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 build
   ```

   Anda akan melihat output seperti berikut.

   ```
      Running cmake in directory /path/to/hello_world/build
      Executing "cmake -G Ninja --warn-uninitialized /path/to/hello_world"...
      Warn about uninitialized values.
      -- Found Git: /usr/bin/git (found version "2.17.0")
      -- Building empty aws_iot component due to configuration
      -- Component names: ...
      -- Component paths: ...
   
      ... (more lines of build system output)
   
      [527/527] Generating hello-world.bin
      esptool.py v2.3.1
   
      Project build complete. To flash, run this command:
      ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x10000 build/hello-world.bin  build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin
      or run 'idf.py -p PORT flash'
   ```

   Jika tidak ada kesalahan, build akan menghasilkan file biner firmware .bin.

1. Hapus memori flash papan pengembangan Anda dengan perintah berikut.

   ```
   idf.py erase_flash
   ```

1. Gunakan `idf.py` skrip untuk mem-flash biner aplikasi ke papan Anda.

   ```
   idf.py flash
   ```

1. Pantau output dari port serial papan Anda dengan perintah berikut.

   ```
   idf.py monitor
   ```
**catatan**  
Anda dapat menggabungkan perintah ini seperti pada contoh berikut.  

   ```
   idf.py erase_flash flash monitor
   ```

   Untuk pengaturan mesin host tertentu, Anda harus menentukan port saat Anda mem-flash papan seperti pada contoh berikut.

   ```
   idf.py erase_flash flash monitor -p /dev/ttyUSB1
   ```

### Bangun dan Flash FreeRTOS dengan CMake
<a name="flash-espressif-cmake-idf42"></a>

Selain `idf.py` skrip yang disediakan oleh SDK IDF untuk membangun dan menjalankan kode Anda, Anda juga dapat membangun proyek dengan CMake. Saat ini, ia mendukung Unix Makefiles atau sistem build Ninja.

**Untuk membangun dan mem-flash proyek**

1. Di jendela baris perintah, arahkan ke root direktori unduhan FreeRTOS Anda.

1. Jalankan skrip berikut untuk menambahkan ESP-IDF alat ke PATH shell Anda.  
**Windows**  

   ```
   vendors\espressif\esp-idf\export.bat
   ```  
**Linux/macOS**  

   ```
   source vendors/espressif/esp-idf/export.sh
   ```

1. Masukkan perintah berikut untuk menghasilkan file build.  
**Dengan Unix Makefiles**  

   ```
   cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0
   ```  
**Dengan Ninja**  

   ```
   cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0 -GNinja
   ```

1. Bangun proyek.  
**Dengan Unix Makefiles**  

   ```
   make -C ./YOUR_BUILD_DIRECTORY -j8 
   ```  
**Dengan Ninja**  

   ```
   ninja -C ./YOUR_BUILD_DIRECTORY -j8
   ```

1. Hapus flash dan kemudian flash papan.  
**Dengan Unix Makefiles**  

   ```
   make -C ./YOUR_BUILD_DIRECTORY erase_flash
   ```

   ```
   make -C ./YOUR_BUILD_DIRECTORY flash
   ```  
**Dengan Ninja**  

   ```
   ninja -C ./YOUR_BUILD_DIRECTORY erase_flash
   ```

   ```
   ninja -C ./YOUR_BUILD_DIRECTORY flash
   ```

## Jalankan demo Bluetooth Low Energy
<a name="espressif-run-ble"></a>

FreeRTOS mendukung konektivitas[Perpustakaan Bluetooth Rendah Energi](freertos-ble-library.md).

Untuk menjalankan proyek demo FreeRTOS di Bluetooth Low Energy, Anda harus menjalankan Aplikasi Demo SDK Seluler FreeRTOS Bluetooth Low Energy di perangkat seluler iOS atau Android.

**Untuk mengatur aplikasi demo SDK seluler FreeRTOS Bluetooth Low Energy**

1. Ikuti instruksi [SDK Seluler untuk perangkat Bluetooth FreeRTOS](freertos-ble-mobile.md) untuk mengunduh dan menginstal SDK untuk platform seluler Anda di komputer host Anda.

1. Ikuti petunjuk [Aplikasi demo SDK Seluler Energi Rendah FreeRTOS Bluetooth](ble-demo.md#ble-sdk-app) untuk menyiapkan aplikasi seluler demo di perangkat seluler Anda.

Untuk petunjuk tentang cara menjalankan demo MQTT melalui Bluetooth Low Energy di papan tulis Anda, lihat. [MQTT melalui Bluetooth Energi Rendah](ble-demo.md#ble-demo-mqtt)

Untuk petunjuk tentang cara menjalankan demo Wi-Fi penyediaan di papan Anda, lihat. [Wi-Fi penyediaan](ble-demo.md#ble-demo-wifi)

## Menggunakan FreeRTOS dalam proyek CMake Anda sendiri untuk ESP32
<a name="getting_started_espressif_cmake_project"></a>

Jika Anda ingin menggunakan FreerTOS dalam proyek CMake Anda sendiri, Anda dapat mengaturnya sebagai subdirektori dan membangunnya bersama dengan aplikasi Anda. Pertama, dapatkan salinan FreeRTOS dari. [GitHub](https://github.com/aws/amazon-freertos) Anda juga dapat mengaturnya sebagai submodul Git dengan perintah berikut sehingga lebih mudah untuk memperbarui di masa mendatang.

```
git submodule add -b release https://github.com/aws/amazon-freertos.git freertos
```

Jika versi yang lebih baru dirilis, Anda dapat memperbarui salinan lokal Anda dengan perintah ini.

```
# Pull the latest changes from the remote tracking branch.
git submodule update --remote -- freertos
```

```
# Commit the submodule change because it is pointing to a different revision now.
git add freertos
```

```
git commit -m "Update FreeRTOS to a new release"
```

Jika proyek Anda memiliki struktur direktori berikut: 

```
- freertos (the copy that you obtained from GitHub or the AWS IoT console)
- src
  - main.c (your application code)
- CMakeLists.txt
```

Maka berikut ini adalah contoh `CMakeLists.txt` file tingkat atas yang dapat digunakan untuk membangun aplikasi Anda bersama dengan FreeRTOS.

```
cmake_minimum_required(VERSION 3.13)

project(freertos_examples)

# Tell IDF build to link against this target.
set(IDF_EXECUTABLE_SRCS "<complete_path>/src/main.c")
set(IDF_PROJECT_EXECUTABLE my_app)

# Add FreeRTOS as a subdirectory. AFR_BOARD tells which board to target.
set(AFR_BOARD espressif.esp32_devkitc CACHE INTERNAL "")
add_subdirectory(freertos)

# Link against the mqtt library so that we can use it. Dependencies are transitively
# linked.
target_link_libraries(my_app PRIVATE AFR::core_mqtt)
```

Untuk membangun proyek, jalankan perintah CMake berikut. Pastikan kompiler ESP32 ada di variabel lingkungan PATH.

```
cmake -S . -B build-directory -DCMAKE_TOOLCHAIN_FILE=freertos/tools/cmake/toolchains/xtensa-esp32.cmake -GNinja 
```

```
cmake --build build-directory 
```

Untuk mem-flash aplikasi ke papan Anda, jalankan perintah berikut.

```
cmake --build build-directory --target flash 
```

### Menggunakan komponen dari FreeRTOS
<a name="getting_started_espressif_cmake_project_components"></a>

Setelah menjalankan CMake, Anda dapat menemukan semua komponen yang tersedia di output ringkasan. Seharusnya terlihat seperti contoh berikut.

```
====================Configuration for FreeRTOS====================
  Version:                 202107.00
  Git version:             202107.00-g79ad6defb

Target microcontroller:
  vendor:                  Espressif
  board:                   ESP32-DevKitC
  description:             Development board produced by Espressif that comes in two
                           variants either with ESP-WROOM-32 or ESP32-WROVER module
  family:                  ESP32
  data ram size:           520KB
  program memory size:     4MB

Host platform:
  OS:                      Linux-4.15.0-66-generic
  Toolchain:               xtensa-esp32
  Toolchain path:          /opt/xtensa-esp32-elf
  CMake generator:         Ninja

FreeRTOS modules:
  Modules to build:        backoff_algorithm, common, common_io, core_http,
                           core_http_demo_dependencies, core_json, core_mqtt,
                           core_mqtt_agent, core_mqtt_agent_demo_dependencies,
                           core_mqtt_demo_dependencies, crypto, defender, dev_mode_key_
                           provisioning, device_defender, device_defender_demo_
                           dependencies, device_shadow, device_shadow_demo_dependencies,
                           freertos_cli_plus_uart, freertos_plus_cli, greengrass,
                           http_demo_helpers, https, jobs, jobs_demo_dependencies,
                           kernel, logging, mqtt, mqtt_agent_interface, mqtt_demo_
                           helpers, mqtt_subscription_manager, ota, ota_demo_
                           dependencies, ota_demo_version, pkcs11, pkcs11_helpers,
                           pkcs11_implementation, pkcs11_utils, platform, secure_sockets,
                           serializer, shadow, tls, transport_interface_secure_sockets,
                           wifi
  Enabled by user:         common_io, core_http_demo_dependencies, core_json,
                           core_mqtt_agent_demo_dependencies, core_mqtt_demo_
                           dependencies, defender, device_defender, device_defender_demo_
                           dependencies, device_shadow, device_shadow_demo_dependencies,
                           freertos_cli_plus_uart, freertos_plus_cli, greengrass, https,
                           jobs, jobs_demo_dependencies, logging, ota_demo_dependencies,
                           pkcs11, pkcs11_helpers, pkcs11_implementation, pkcs11_utils,
                           platform, secure_sockets, shadow, wifi
  Enabled by dependency:   backoff_algorithm, common, core_http, core_mqtt,
                           core_mqtt_agent, crypto, demo_base, dev_mode_key_provisioning,
                           freertos, http_demo_helpers, kernel, mqtt, mqtt_agent_
                           interface, mqtt_demo_helpers, mqtt_subscription_manager, ota,
                           ota_demo_version, pkcs11_mbedtls, serializer, tls,
                           transport_interface_secure_sockets, utils
  3rdparty dependencies:   jsmn, mbedtls, pkcs11, tinycbor
  Available demos:         demo_cli_uart, demo_core_http, demo_core_mqtt, demo_core_mqtt_
                           agent, demo_device_defender, demo_device_shadow,
                           demo_greengrass_connectivity, demo_jobs, demo_ota_core_http,
                           demo_ota_core_mqtt, demo_tcp
  Available tests:
=========================================================================
```

Anda dapat mereferensikan komponen apa pun dari `Modules to build` daftar. Untuk menautkannya ke aplikasi Anda, letakkan `AFR::` namespace di depan nama, misalnya,, `AFR::core_mqtt``AFR::ota`, dan sebagainya.

### Tambahkan komponen khusus menggunakan ESP-IDF
<a name="getting_started_espressif_cmake_project_espidf"></a>

Anda dapat menambahkan lebih banyak komponen saat menggunakan ESP-IDF. Misalnya, dengan asumsi Anda ingin menambahkan komponen yang dipanggil`example_component`, dan proyek Anda terlihat seperti ini:

```
- freertos
- components
  - example_component
    - include
      - example_component.h
    - src
      - example_component.c
    - CMakeLists.txt
- src
  - main.c
- CMakeLists.txt
```

Berikut ini adalah contoh `CMakeLists.txt` file untuk komponen Anda. 

```
add_library({{example_component}} {{src/example_component.c}})
target_include_directories({{example_component}} PUBLIC include)
```

Kemudian, di `CMakeLists.txt` file tingkat atas, tambahkan komponen dengan memasukkan baris berikut setelahnya`add_subdirectory(freertos)`.

```
add_subdirectory({{component/example_component}}) 
```

Kemudian, modifikasi `target_link_libraries` untuk menyertakan komponen Anda.

```
target_link_libraries(my_app PRIVATE AFR::core_mqtt PRIVATE {{example_component}}) 
```

Komponen ini sekarang secara otomatis ditautkan ke kode aplikasi Anda secara default. Anda sekarang dapat menyertakan file header dan memanggil fungsi yang didefinisikan.

### Ganti konfigurasi untuk FreeRTOS
<a name="getting_started_espressif_cmake_project_override"></a>

Saat ini tidak ada pendekatan yang terdefinisi dengan baik untuk mendefinisikan ulang konfigurasi di luar pohon sumber FreerTos. Secara default, CMake akan mencari `{{freertos}}/demos/include/` direktori `{{freertos}}/vendors/espressif/boards/esp32/aws_demos/config_files/` dan. Namun, Anda dapat menggunakan solusi untuk memberi tahu kompiler agar mencari direktori lain terlebih dahulu. Misalnya, Anda dapat menambahkan folder lain untuk konfigurasi FreeRTOS.

```
- freertos
- freertos-configs
  - aws_clientcredential.h
  - aws_clientcredential_keys.h
  - iot_mqtt_agent_config.h
  - iot_config.h
- components
- src
- CMakeLists.txt
```

File di bawah `freertos-configs` disalin dari `{{freertos}}/demos/include/` direktori `{{freertos}}/vendors/espressif/boards/esp32/aws_demos/config_files/` dan. Kemudian, di `CMakeLists.txt` file tingkat atas Anda, tambahkan baris ini sebelumnya `add_subdirectory(freertos)` sehingga kompiler akan mencari direktori ini terlebih dahulu.

```
include_directories(BEFORE freertos-configs)
```

### Menyediakan sdkconfig Anda sendiri untuk ESP-IDF
<a name="getting_started_espressif_providing_sdkconfig"></a>

Jika Anda ingin menyediakan sendiri`sdkconfig.default`, Anda dapat mengatur variabel CMake`IDF_SDKCONFIG_DEFAULTS`, dari baris perintah:

```
cmake -S . -B build-directory -DIDF_SDKCONFIG_DEFAULTS=path_to_your_sdkconfig_defaults -DCMAKE_TOOLCHAIN_FILE=freertos/tools/cmake/toolchains/xtensa-esp32.cmake -GNinja 
```

Jika Anda tidak menentukan lokasi untuk file Anda sendiri, FreeRTOS menggunakan `sdkconfig.default` file default yang terletak di. `{{freertos}}/vendors/espressif/boards/esp32/aws_demos/sdkconfig.defaults`

Untuk informasi selengkapnya, lihat [Konfigurasi Proyek](https://docs.espressif.com/projects/esp-idf/en/v4.2-beta1/esp32s2/api-reference/kconfig.html) di *Referensi API* Espressif dan, jika Anda mengalami masalah setelah berhasil dikompilasi, lihat bagian tentang [Opsi yang tidak digunakan lagi dan penggantiannya](https://docs.espressif.com/projects/esp-idf/en/v4.2-beta1/esp32s2/api-reference/kconfig.html#deprecated-options-and-their-replacements) di halaman tersebut.

### Ringkasan
<a name="getting_started_espressif_cmake_project_summary"></a>

Jika Anda memiliki proyek dengan komponen yang disebut`example_component`, dan Anda ingin mengganti beberapa konfigurasi, berikut adalah contoh lengkap dari file tingkat `CMakeLists.txt` atas.

```
cmake_minimum_required(VERSION 3.13)

project(freertos_examples)

set(IDF_PROJECT_EXECUTABLE my_app)
set(IDF_EXECUTABLE_SRCS "src/main.c")

# Tell IDF build to link against this target.
set(IDF_PROJECT_EXECUTABLE my_app)

# Add some extra components. IDF_EXTRA_COMPONENT_DIRS is a variable used by ESP-IDF
# to collect extra components.
get_filename_component(
    EXTRA_COMPONENT_DIRS
    "components/example_component" ABSOLUTE
)
list(APPEND IDF_EXTRA_COMPONENT_DIRS ${EXTRA_COMPONENT_DIRS})

# Override the configurations for FreeRTOS.
include_directories(BEFORE freertos-configs)

# Add FreeRTOS as a subdirectory. AFR_BOARD tells which board to target.
set(AFR_BOARD espressif.esp32_devkitc CACHE INTERNAL "")
add_subdirectory(freertos)

# Link against the mqtt library so that we can use it. Dependencies are transitively
# linked.
target_link_libraries(my_app PRIVATE AFR::core_mqtt)
```

## Pemecahan masalah
<a name="getting_started_espressif_troubleshooting"></a>
+ Jika Anda menjalankan macOS dan sistem operasi tidak mengenali Anda ESP-WROVER-KIT, pastikan Anda tidak menginstal driver D2XX. Untuk menghapus instalannya, ikuti petunjuk di [Panduan Instalasi Driver FTDI untuk macOS X](http://www.ftdichip.com/Support/Documents/AppNotes/AN_134_FTDI_Drivers_Installation_Guide_for_MAC_OSX.pdf).
+ Utilitas monitor yang disediakan oleh ESP-IDF (dan dipanggil menggunakan make monitor) membantu Anda memecahkan kode alamat. Untuk alasan ini, ini dapat membantu Anda mendapatkan beberapa backtrace yang berarti jika aplikasi berhenti bekerja. Untuk informasi selengkapnya, lihat [Penguraian Kode Alamat Otomatis di situs](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/api-guides/tools/idf-monitor.html#automatic-address-decoding) web Espressif.
+ Dimungkinkan juga untuk mengaktifkan GDbStub untuk komunikasi dengan gdb tanpa memerlukan perangkat keras JTAG khusus. Untuk informasi lebih lanjut, lihat [Meluncurkan GDB dengan GDbStub](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/api-guides/tools/idf-monitor.html#launching-gdb-with-gdbstub) di situs web Espressif.
+ Untuk informasi tentang pengaturan OpenOCD-based lingkungan jika debugging berbasis perangkat keras JTAG diperlukan, lihat [JTAG](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/jtag-debugging/index.html) Debugging di situs web Espressif.
+ Jika tidak `pyserial` dapat `pip` diinstal menggunakan macOS, unduh dari situs web [pyserial](https://pypi.org/simple/pyserial).
+ Jika papan direset terus menerus, coba hapus lampu kilat dengan memasukkan perintah berikut di terminal.

  ```
  make erase_flash
  ```
+ Jika Anda melihat kesalahan saat menjalankan`idf_monitor.py`, gunakan Python 2.7.
+ Pustaka yang diperlukan dari ESP-IDF disertakan dalam FreeRTOS, jadi tidak perlu mengunduhnya secara eksternal. Jika variabel `IDF_PATH` lingkungan disetel, kami sarankan Anda menghapusnya sebelum Anda membangun FreeRTOS.
+ Di Windows, dibutuhkan waktu 3-4 menit untuk membangun proyek. Untuk mengurangi waktu pembuatan, Anda dapat menggunakan `-j4` sakelar pada perintah make.

  ```
  make flash monitor -j4
  ```
+ Jika perangkat Anda mengalami masalah saat terhubung AWS IoT, buka `aws_clientcredential.h` file, dan verifikasi bahwa variabel konfigurasi didefinisikan dengan benar dalam file. `clientcredentialMQTT_BROKER_ENDPOINT[]`harus terlihat seperti`1234567890123-ats.iot.us-east-1.amazonaws.com`.
+ Jika Anda mengikuti langkah-langkah [Menggunakan FreeRTOS dalam proyek CMake Anda sendiri untuk ESP32](#getting_started_espressif_cmake_project) dan Anda melihat kesalahan referensi yang tidak ditentukan dari tautan, biasanya karena pustaka atau demo dependen yang hilang. Untuk menambahkannya, perbarui `CMakeLists.txt` file (di bawah direktori root) menggunakan fungsi `target_link_libraries` CMake standar.
+ ESP-IDF v4.2 mendukung penggunaan *xtensa\\ -esp32\\ -elf\\ -gcc 8\\ .2\\ .0\\*. rantai alat. Jika Anda menggunakan versi sebelumnya dari rantai alat Xtensa, unduh versi yang diperlukan.
+ Jika Anda melihat log kesalahan seperti berikut tentang dependensi python yang tidak terpenuhi untuk v4.2: ESP-IDF

  ```
  The following Python requirements are not satisfied:
    click>=5.0
    pyserial>=3.0
    future>=0.15.2
    pyparsing>=2.0.3,<2.4.0
    pyelftools>=0.22
    gdbgui==0.13.2.0
    pygdbmi<=0.9.0.2
    reedsolo>=1.5.3,<=1.5.4
    bitstring>=3.1.6
    ecdsa>=0.16.0
    Please follow the instructions found in the "Set up the tools" section of ESP-IDF Getting Started Guide
  ```

  Instal dependensi python di platform Anda menggunakan perintah Python berikut:

  ```
  root/vendors/espressif/esp-idf/requirements.txt
  ```

Untuk informasi pemecahan masalah selengkapnya, lihat [Pemecahan masalah memulai](gsg-troubleshooting.md).

## Debugging
<a name="getting_started_espressif_debugging"></a>

### Kode debugging pada Espressif ESP32-DevKitC dan ESP-WROVER-KIT (v4.2) ESP-IDF
<a name="debugging-espressif-idf42"></a>

Bagian ini menunjukkan cara men-debug perangkat keras Espressif menggunakan v4.2. ESP-IDF Anda memerlukan kabel JTAG ke USB. Kami menggunakan kabel USB ke MPSSE (misalnya, [ C232HM-DDHSL-0FTDI](http://www.ftdichip.com/Products/Cables/USBMPSSE.htm)).

**ESP-DevKitC Pengaturan JTAG**  
Untuk C232HM-DDHSL-0 kabel FTDI, ini adalah koneksi ke ESP32 DevKitc.  

```
| C232HM-DDHSL-0 Wire Color | ESP32 GPIO Pin | JTAG Signal Name |
| ------------------------- | -------------- | ---------------- |
|  Brown (pin 5)            |  IO14          |  TMS             |
|  Yellow (pin 3)           |  IO12          |  TDI             |
|  Black (pin 10)           |  GND           |  GND             |
|  Orange (pin 2)           |  IO13          |  TCK             |
|  Green (pin 4)            |  IO15          |  TDO             |
```

**ESP-WROVER-KIT Pengaturan JTAG**  
Untuk C232HM-DDHSL-0 kabel FTDI, ini adalah koneksi ke. ESP32-WROVER-KIT  

```
| C232HM-DDHSL-0 Wire Color | ESP32 GPIO Pin | JTAG Signal Name |
| ------------------------- | -------------- | ---------------- |
|  Brown (pin 5)            |  IO14          |  TMS             |
|  Yellow (pin 3)           |  IO12          |  TDI             |
|  Orange (pin 2)           |  IO13          |  TCK             |
|  Green (pin 4)            |  IO15          |  TDO             |
```
Tabel ini dikembangkan dari [ C232HM-DDHSL-0 lembar data FTDI](https://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_C232HM_MPSSE_CABLE.pdf). Untuk informasi lebih lanjut, lihat bagian “Koneksi Kabel MPSSE C232HM dan Detail Mekanik di lembar data.  
Untuk mengaktifkan JTAG pada ESP-WROVER-KIT, tempatkan jumper pada pin TMS, TDO, TDI, TCK, dan S\_TDI seperti yang ditunjukkan di sini.  

![Penempatan jumper](http://docs.aws.amazon.com/id_id/freertos/latest/userguide/images/JP8-jumpers.png)


**Debugging pada Windows (ESP-IDF v4.2)**  

**Untuk mengatur debugging pada Windows**

1. Hubungkan sisi USB FTDI C232HM-DDHSL-0 ke komputer Anda dan sisi lain seperti yang dijelaskan dalam[Kode debugging pada Espressif ESP32-DevKitC dan ESP-WROVER-KIT (v4.2) ESP-IDF](#debugging-espressif-idf42). Perangkat FTDI akan muncul di C232HM-DDHSL-0 Device **Manager** di bawah **Universal Serial Bus Controllers**.

1. Di bawah daftar perangkat bus serial universal, klik kanan **C232HM-DDHSL-0**perangkat, lalu pilih **Properties**.
**catatan**  
Perangkat mungkin terdaftar sebagai **Port Serial USB**.

   Untuk melihat properti perangkat, di jendela properti, pilih tab **Detail**. Jika perangkat tidak terdaftar, instal [driver Windows untuk FTDI C232HM-DDHSL-0](http://www.ftdichip.com/Drivers/D2XX.htm).

1. Pada tab **Detail**, pilih **Properti**, lalu pilih **ID Perangkat Keras**. Anda akan melihat sesuatu seperti ini di bidang **Nilai**.

   ```
   FTDIBUS\COMPORT&VID_0403&PID_6014
   ```

   Dalam contoh ini, ID vendor adalah 0403 dan ID produk adalah 6014.

   Verifikasi ID ini cocok dengan ID di`projects/espressif/esp32/make/aws_demos/esp32_devkitj_v1.cfg`. ID ditentukan dalam baris yang dimulai dengan `ftdi_vid_pid` diikuti oleh ID vendor dan ID produk.

   ```
   ftdi_vid_pid 0x0403 0x6014
   ```

1. Unduh [OpenOCD](https://github.com/espressif/openocd-esp32/releases) untuk Windows.

1. Buka zip file ke `C:\` dan tambahkan `C:\openocd-esp32\bin` ke jalur sistem Anda.

1. OpenOCD membutuhkan libusb, yang tidak diinstal secara default pada Windows. Untuk menginstal libusb:

   1. Unduh [zadig.exe](https://zadig.akeo.ie).

   1. Jalankan `zadig.exe`. Dari menu **Opsi**, pilih **Daftar Semua Perangkat**.

   1. Dari menu dropdown, pilih. **C232HM-DDHSL-0**

   1. Di bidang driver target, di sebelah kanan panah hijau, pilih **WinUSB**.

   1. Untuk daftar di bawah bidang driver target, pilih panah, lalu pilih **Install Driver**. Pilih **Ganti Driver**.

1. Buka prompt perintah, arahkan ke root direktori unduhan FreeRTOS Anda, dan jalankan perintah berikut.

   ```
   idf.py openocd
   ```

   Biarkan command prompt ini terbuka.

1. Buka prompt perintah baru, arahkan ke root direktori unduhan FreeRTOS Anda, dan jalankan

   ```
   idf.py flash monitor
   ```

1. Buka prompt perintah lain, arahkan ke root direktori unduhan FreeRTOS Anda, dan tunggu hingga demo mulai berjalan di papan Anda. Ketika itu terjadi, jalankan

   ```
   idf.py gdb
   ```

   Program harus berhenti dalam `main` fungsi.
**catatan**  
ESP32 mendukung maksimal dua break point.

**Debugging di macOS ESP-IDF (v4.2)**  

1. Unduh [driver FTDI untuk macOS](http://www.ftdichip.com/Drivers/VCP.htm).

1. Unduh [OpenOCD](https://github.com/espressif/openocd-esp32/releases). 

1. Ekstrak file.tar yang diunduh dan atur jalurnya `.bash_profile` ke`OCD_INSTALL_DIR/openocd-esp32/bin`.

1. Gunakan perintah berikut untuk menginstal `libusb` di macOS.

   ```
   brew install libusb
   ```

1. Gunakan perintah berikut untuk membongkar driver port serial.

   ```
   sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
   ```

1. Gunakan perintah berikut untuk membongkar driver port serial.

   ```
   sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
   ```

1. Jika Anda menjalankan versi macOS lebih lambat dari 10.9, gunakan perintah berikut untuk membongkar driver Apple FTDI.

   ```
   sudo kextunload -b com.apple.driver.AppleUSBFTDI
   ```

1. Gunakan perintah berikut untuk mendapatkan ID produk dan ID vendor kabel FTDI. Ini mencantumkan perangkat USB yang terpasang.

   ```
   system_profiler SPUSBDataType
   ```

   Output dari `system_profiler` akan terlihat seperti berikut ini.

   ```
      DEVICE:
   
      Product ID: product-ID
      Vendor ID: vendor-ID (Future Technology Devices International Limited)
   ```

1. Buka file `projects/espressif/esp32/make/aws_demos/esp32_devkitj_v1.cfg`. ID vendor dan ID produk untuk perangkat Anda ditentukan dalam baris yang dimulai dengan`ftdi_vid_pid`. Ubah ID agar sesuai dengan ID dari `system_profiler` output pada langkah sebelumnya.

1. Buka jendela terminal, arahkan ke root direktori unduhan FreeRTOS Anda, dan gunakan perintah berikut untuk menjalankan OpenOCD.

   ```
   idf.py openocd
   ```

   Biarkan jendela terminal ini terbuka.

1. Buka terminal baru, dan gunakan perintah berikut untuk memuat driver port serial FTDI.

   ```
   sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
   ```

1. Arahkan ke root direktori unduhan FreeRTOS Anda, dan jalankan 

   ```
   idf.py flash monitor
   ```

1. Buka terminal baru lainnya, arahkan ke root direktori unduhan FreeRTOS Anda, dan jalankan

   ```
   idf.py gdb
   ```

   Program harus berhenti di`main`.

**Debugging di Linux (ESP-IDF v4.2)**  

1. Unduh [OpenOCD](https://github.com/espressif/openocd-esp32/releases). Ekstrak tarball dan ikuti petunjuk penginstalan di file readme.

1. Gunakan perintah berikut untuk menginstal libusb di Linux.

   ```
   sudo apt-get install libusb-1.0
   ```

1. Buka terminal dan masukkan **ls -l /dev/ttyUSB\*** untuk mencantumkan semua perangkat USB yang terhubung ke komputer Anda. Ini membantu Anda memeriksa apakah port USB papan dikenali oleh sistem operasi. Anda akan melihat output seperti berikut.

   ```
      $ls -l /dev/ttyUSB*
      crw-rw----    1    root    dialout    188,    0    Jul    10    19:04    /dev/ttyUSB0
      crw-rw----    1    root    dialout    188,    1    Jul    10    19:04    /dev/ttyUSB1
   ```

1. Masuk dan kemudian masuk dan putar daya ke papan untuk membuat perubahan berlaku. Dalam prompt terminal, daftarkan perangkat USB. Pastikan pemilik grup telah berubah dari `dialout` ke`plugdev`.

   ```
      $ls -l /dev/ttyUSB*
      crw-rw----    1    root    plugdev    188,    0    Jul    10    19:04    /dev/ttyUSB0
      crw-rw----    1    root    plugdev    188,    1    Jul    10    19:04    /dev/ttyUSB1
   ```

   `/dev/ttyUSBn`Antarmuka dengan angka yang lebih rendah digunakan untuk komunikasi JTAG. Antarmuka lainnya dirutekan ke port serial ESP32 (UART) dan digunakan untuk mengunggah kode ke memori flash ESP32.

1. Di jendela terminal, arahkan ke root direktori unduhan FreeRTOS Anda, dan gunakan perintah berikut untuk menjalankan OpenOCD.

   ```
   idf.py openocd 
   ```

1. Buka terminal lain, arahkan ke root direktori unduhan FreeRTOS Anda, dan jalankan perintah berikut.

   ```
   idf.py flash monitor 
   ```

1. Buka terminal lain, navigasikan root direktori unduhan FreeRTOS Anda, dan jalankan perintah berikut:

   ```
   idf.py gdb
   ```

   Program harus berhenti`main()`.