View a markdown version of this page

Memulai dengan Espressif dan ESP32-DevKitC ESP-WROVER-KIT - FreeRTOS

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

Memulai dengan Espressif dan ESP32-DevKitC ESP-WROVER-KIT

penting

Integrasi referensi ini di-host di Amazon-FreeRTOS repositori yang tidak digunakan lagi. Kami menyarankan Anda memulai di sini ketika Anda membuat proyek baru. Jika Anda sudah memiliki proyek FreeRTOS yang ada berdasarkan Amazon-FreeRTOS repositori yang sekarang tidak digunakan lagi, lihat. Amazon-FreeRTOS Panduan Migrasi Repositori Github

catatan

Untuk mengeksplorasi cara mengintegrasikan pustaka modular FreeRTOS dan demo dalam proyek Espressif IDF Anda sendiri, lihat integrasi referensi unggulan kami untuk platform. ESP32-C3

Ikuti tutorial ini untuk memulai dengan Espressif yang ESP32-DevKitC dilengkapi dengan ESP32-WROOM-32, ESP32-SOLO-1, atau ESP-WROVER modul dan. ESP-WROVER-KIT-VB Untuk membelinya dari mitra kami di AWS katalog Perangkat Mitra, gunakan tautan berikut:

Versi papan pengembangan ini didukung di FreeRTOS.

Untuk informasi lebih lanjut tentang versi terbaru dari papan ini, lihat V ESP32-DevKitC 4 atau ESP-WROVER-KIT v4.1 di situs web Espressif.

catatan

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

Gambaran umum

Tutorial ini memandu Anda melalui langkah-langkah berikut:

  1. Menghubungkan papan Anda ke mesin host.

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

  3. Mengkompilasi silang aplikasi demo FreeRTOS ke gambar biner.

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

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

Prasyarat

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

Mendaftar untuk Akun AWS

Untuk memulainya AWS, Anda membutuhkan Akun AWS. Untuk informasi tentang membuat Akun AWS, lihat Mem ulai dengan an Akun AWS di Panduan AWS Account Management Referensi.

Untuk memberikan akses dan menambahkan izin bagi pengguna, grup, atau peran Anda:

Memulai

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 ESP32-DevKitC Memulai V4.

    • Untuk informasi tentang menyiapkan perangkat keras papan ESP-WROVER-KIT pengembangan, lihat Panduan Mem ESP-WROVER-KIT V4.1 ulai.

    penting

    Saat Anda mencapai bagian Memulai dari panduan Espressif, berhenti, lalu kembali ke instruksi di halaman ini.

  2. Unduh Amazon FreeRTOS dari GitHub. (Untuk instruksi, lihat README.md file.)

  3. 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 sendiri dari FreeRTOS Kernel yang terintegrasi sebagai komponen, Amazon FreeRTOS menyertakan versi khusus dari ESP-IDF v4.2 yang telah menghapus Kernel FreeRTOS. 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 Peng instal Online Universal untuk Windows.

    2. Jalan kan Universal Online Installer.

    3. Ketika Anda sampai ke langkah Unduh atau gunakan ESP-IDF, pilih Gunakan ESP-IDF direktori yang ada dan setel Pilih ESP-IDF direktori yang ada kefreertos/vendors/espressif/esp-idf.

    4. Selesaikan instalasi.

    MacOS

    1. Ikuti petunjuk dalam prasyarat Pengaturan Standar Toolchain (ESP-IDF v4.2) untuk macOS.

      penting

      Saat Anda mencapai instruksi “Dapatkan ESP-IDF” di bawah Langkah Berikutnya, berhenti, lalu kembali ke instruksi di halaman ini.

    2. Buka jendela baris perintah.

    3. Arahkan ke direktori unduhan FreeRTOS, lalu jalankan skrip berikut untuk mengunduh dan menginstal espressif toolchain untuk platform Anda.

      vendors/espressif/esp-idf/install.sh
    4. Tambahkan alat ESP-IDF toolchain ke jalur terminal Anda dengan perintah berikut.

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

    Linux

    1. Ikuti petunjuk di Standar Setup Prasyarat Toolchain (ESP-IDF v4.2) untuk Linux.

      penting

      Saat Anda mencapai instruksi “Dapatkan ESP-IDF” di bawah Langkah Berikutnya, berhenti, lalu kembali ke instruksi di halaman ini.

    2. Buka jendela baris perintah.

    3. 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
    4. Tambahkan alat ESP-IDF toolchain ke jalur terminal Anda dengan perintah berikut.

      source vendors/espressif/esp-idf/export.sh
  4. Buat koneksi serial.

    1. Untuk membuat koneksi serial antara mesin host Anda dan ESP32-DevKitC, Anda harus menginstal driver VCP CP210x USB ke UART Bridge. Anda dapat mengunduh driver ini dari Silicon Labs.

      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.

    2. Ikuti langkah-langkah untuk Membangun Kon eksi Serial dengan ESP32.

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

Konfigurasikan aplikasi demo FreeRTOS

Untuk tutorial ini, file konfigurasi FreeRTOS terletak difreertos/vendors/espressif/boards/board-name/aws_demos/config_files/FreeRTOSConfig.h. (Misalnya, jika AFR_BOARD espressif.esp32_devkitc dipilih, file konfigurasi terletak difreertos/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 ketika Anda menginstal ESP-IDF toolchain), atau aplikasi “Command Prompt” sebaliknya.

  2. 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.

  3. 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 Meng instal AWS CLI.

  4. Jalankan .

    aws configure

    dan konfigurasikan AWS CLI dengan ID kunci AWS akses Anda, kunci akses rahasia, dan Wil AWS ayah default. Untuk informasi selengkapnya, lihat Meng onfigurasi AWS CLI.

  5. 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 untuk detailnya.

    • Di macOS atau Linux, jalankan

      pip install tornado nose --user

      dan kemudian lari

      pip install boto3 --user

    FreeRTOS menyer SetupAWS.py takan skrip untuk mempermudah pengaturan 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 ke depan 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)

  6. 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”.

    2. Arahkan ke freertos/tools/aws_config_quick_start direktori dan jalankan

      python SetupAWS.py setup

      Skrip melakukan hal berikut:

      • Membuat hal IoT, sertifikat, dan kebijakan.

      • Melampirkan kebijakan IoT ke sertifikat dan sertifikat ke AWS IoT benda tersebut.

      • Mengisi aws_clientcredential.h file dengan AWS IoT titik akhir, Wi-Fi SSID, dan kredenSIAL Anda.

      • Memformat sertifikat dan kunci pribadi Anda dan menulisnya ke file aws_clientcredential_keys.h header.

      catatan

      Sertifikat ini di-hardcode untuk tujuan demonstrasi saja. Production-level aplikasi harus menyimpan file-file ini di lokasi yang aman.

      Untuk informasi lebih lanjut tentangSetupAWS.py, lihat README.md di freertos/tools/aws_config_quick_start direktori.

Memantau pesan MQTT di cloud

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

Untuk berlangganan topik MQTT dengan AWS IoT Klien MQTT
  1. Navigasikan ke konsol AWS IoT tersebut.

  2. Di panel navigasi, pilih Test, lalu pilih MQTT Test Client.

  3. Di Topik berlangganan your-thing-name/example/topic, masukkan, lalu pilih Berlangganan topik.

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

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 port "-p port-name" dengan idf.py untuk menentukan port yang benar, seperti dalam contoh berikut.

idf.py -p /dev/cu.usbserial-00101301B flash
Membangun dan mem-flash FreeRTOS di Windows, Linux, dan macOS (ESP-IDF v4.2)
  1. Arahkan ke root direktori unduhan FreeRTOS Anda.

  2. 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
  3. Konfigurasikan cmake di build direktori dan buat image 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.bin biner firmware.

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

    idf.py erase_flash
  5. Gunakan idf.py skrip untuk mem-flash biner aplikasi ke papan Anda.

    idf.py flash
  6. 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

Buat dan Flash FreeRTOS dengan CMake

Selain idf.py skrip yang disediakan oleh IDF SDK 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, navigasikan ke root direktori unduhan FreeRTOS Anda.

  2. 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
  3. 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
  4. Bangun proyek.

    Dengan Unix Makefiles
    make -C ./YOUR_BUILD_DIRECTORY -j8
    Dengan Ninja
    ninja -C ./YOUR_BUILD_DIRECTORY -j8
  5. Hapus flash dan kemudian nyalakan 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

FreeRTOS mendukung Perpustakaan Bluetooth Rendah Energi konektivitas.

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

Untuk mengatur aplikasi demo SDK seluler FreeRTOS Bluetooth Low Energy
  1. Ikuti petunjuk di dalam SDK Seluler untuk perangkat Bluetooth FreeRTOS untuk mengunduh dan menginstal SDK untuk platform seluler Anda di komputer host Anda.

  2. Ikuti petunjuk di dalam Aplikasi demo SDK Seluler Energi Rendah FreeRTOS Bluetooth untuk mengatur aplikasi seluler demo di perangkat seluler Anda.

Untuk petunjuk tentang cara menjalankan demo MQTT melalui Bluetooth Low Energy di papan Anda, lihatMQTT melalui Bluetooth Energi Rendah.

Untuk petunjuk tentang cara menjalankan demo penye Wi-Fi diaan di papan Anda, lihatWi-Fi penyediaan.

Menggunakan FreeRTOS dalam proyek CMake Anda sendiri untuk ESP32

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. 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

Kemudian 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 berada 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

Setelah menjalankan CMake, Anda dapat menemukan semua komponen yang tersedia dalam 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_mqttAFR::ota, dan seterusnya.

Tambahkan komponen khusus menggunakan ESP-IDF

Anda dapat menambahkan lebih banyak komponen saat menggunakan ESP-IDF. Misalnya, dengan asumsi Anda ingin menambahkan komponen yang disebutexample_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 sesudahnyaadd_subdirectory(freertos).

add_subdirectory(component/example_component)

Kemudian, ubah 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.

Mengganti konfigurasi untuk FreeRTOS

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 untuk 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-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

Jika Anda ingin menyediakan sendirisdkconfig.default, Anda dapat mengatur variabel CMakeIDF_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 sdkconfig.default file Anda sendiri, FreeRTOS menggunakan file default yang terletak difreertos/vendors/espressif/boards/esp32/aws_demos/sdkconfig.defaults.

Untuk informasi selengkapnya, lihat Konfigurasi Proyek di Referensi API Espressif dan, jika Anda mengalami masalah setelah berhasil dikompilasi, lihat bagian tentang Opsi yang tidak digunakan lagi dan penggantiannya di halaman tersebut.

Ringkasan

Jika Anda memiliki proyek dengan komponen yang disebutexample_component, dan Anda ingin mengganti beberapa konfigurasi, berikut adalah contoh lengkap dari CMakeLists.txt file tingkat 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

  • Jika Anda menjalankan macOS dan sistem operasi tidak mengenali Anda ESP-WROVER-KIT, pastikan Anda tidak menginstal driver D2XX. Untuk menghapusnya, ikuti petunjuk di Panduan Instal asi Driver FTDI untuk macOS X.

  • 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 jejak belakang yang berarti jika aplikasi berhenti bekerja. Untuk informasi selengkapnya, lihat Peng uraian Alamat Otomatis di situs web Espressif.

  • Dimungkinkan juga untuk mengaktifkan GDBStub untuk komunikasi dengan gdb tanpa memerlukan perangkat keras JTAG khusus. Untuk informasi lebih lanjut, lihat Mel uncurkan GDB dengan GDBStub di situs web Espressif.

  • Untuk informasi tentang menyiapkan OpenOCD-based lingkungan jika debugging berbasis perangkat keras JTAG diperlukan, lihat JTAG Debugging di situs web Espressif.

  • Jika tidak pyserial dapat diinstal menggunakan pip di macOS, unduh dari situs web https://pypi.org/simple/pyserial pyserial.

  • Jika papan diatur ulang terus menerus, coba hapus flash dengan memasukkan perintah berikut di terminal.

    make erase_flash
  • Jika Anda melihat kesalahan saat menjalankanidf_monitor.py, gunakan Python 2.7.

  • Perpustakaan yang ESP-IDF diperlukan termasuk dalam FreeRTOS, jadi tidak perlu mengunduhnya secara eksternal. Jika variabel IDF_PATH lingkungan disetel, kami sarankan Anda menghapusnya sebelum membuat FreeRTOS.

  • Pada Windows, dibutuhkan waktu 3-4 menit untuk membangun proyek. Untuk mengurangi waktu pembuatan, Anda dapat menggunakan sak -j4 elar pada perintah make.

    make flash monitor -j4
  • Jika perangkat Anda mengalami kesulitan menyambun AWS IoT gkan ke, buka aws_clientcredential.h file, dan verifikasi bahwa variabel konfigurasi didefinisikan dengan benar dalam file. clientcredentialMQTT_BROKER_ENDPOINT[]seharusnya terlihat seperti1234567890123-ats.iot.us-east-1.amazonaws.com.

  • Jika Anda mengikuti langkah-langkah di dalam Menggunakan FreeRTOS dalam proyek CMake Anda sendiri untuk ESP32 dan Anda melihat kesalahan referensi yang tidak ditentukan dari linker, 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 rantai alat Xtensa versi sebelumnya, unduh versi yang diperlukan.

  • Jika Anda melihat log kesalahan seperti berikut tentang dependensi python yang tidak dipenuhi untuk ESP-IDF v4.2:

    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 pada platform Anda menggunakan perintah Python berikut:

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

Untuk informasi pemecahan masalah selengkapnya, lihat Pemecahan masalah memulai.

Debugging

Kode debugging pada Espressif ESP32-DevKitC dan ESP-WROVER-KIT (v4.2) ESP-IDF

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, FTDI C232HM-DDHSL-0).

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 lembar data FTDI C232HM-DDHSL-0 . 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
Debugging pada Windows (ESP-IDF v4.2)
Untuk mengatur debugging di Windows
  1. Hubungkan sisi USB FTDI C232HM-DDHSL-0 ke komputer Anda dan sisi lainnya seperti yang dijelaskan dalamKode debugging pada Espressif ESP32-DevKitC dan ESP-WROVER-KIT (v4.2) ESP-IDF. Perangkat FTDI akan muncul di C232HM-DDHSL-0 Device Manager di bawah Universal Serial Bus Contro llers.

  2. Di bawah daftar perangkat bus serial universal, klik kanan C232HM-DDHSL-0 perangkat, lalu pilih Proper ties.

    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.

  3. Pada tab Detail, pilih Pro perti, 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 diprojects/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
  4. Unduh OpenOCD untuk Windows.

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

  6. OpenOCD membutuhkan libusb, yang tidak diinstal secara default di Windows. Untuk menginstal libusb:

    1. Unduh zadig.exe.

    2. Jalankan zadig.exe. Dari menu Opsi, pilih Daftar Semua Perangkat.

    3. Dari menu dropdown, pilih C232HM-DDHSL-0.

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

    5. Untuk daftar di bawah bidang driver target, pilih panah, lalu pilih Instal Driver. Pilih Ganti Driver.

  7. Buka command prompt, navigasikan ke root direktori download FreeRTOS Anda, dan jalankan perintah berikut.

    idf.py openocd

    Biarkan command prompt ini terbuka.

  8. Buka command prompt baru, navigasikan ke root direktori unduhan FreeRTOS Anda, dan jalankan

    idf.py flash monitor
  9. Buka command prompt lain, navigasikan ke root direktori unduhan FreeRTOS Anda, dan tunggu sampai demo mulai berjalan di papan Anda. Ketika itu terjadi, jalankan

    idf.py gdb

    Program harus berhenti dalam main fungsi.

    catatan

    ESP32 mendukung maksimal dua titik istirahat.

Debugging di macOS (ESP-IDF v4.2)
  1. Unduh driver FTDI untuk macOS.

  2. Unduh OpenOCD.

  3. Ekstrak file.tar yang diunduh dan atur jalurnya .bash_profile keOCD_INSTALL_DIR/openocd-esp32/bin.

  4. Gunakan perintah berikut untuk menginstal libusb di macOS.

    brew install libusb
  5. Gunakan perintah berikut untuk membongkar driver port serial.

    sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
  6. Gunakan perintah berikut untuk membongkar driver port serial.

    sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
  7. Jika Anda menjalankan versi macOS yang lebih baru dari 10.9, gunakan perintah berikut untuk membongkar driver Apple FTDI.

    sudo kextunload -b com.apple.driver.AppleUSBFTDI
  8. 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)
  9. 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 denganftdi_vid_pid. Ubah ID agar sesuai dengan ID dari system_profiler output pada langkah sebelumnya.

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

    idf.py openocd

    Biarkan jendela terminal ini terbuka.

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

    sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
  12. Arahkan ke root direktori unduhan FreeRTOS Anda, dan jalankan

    idf.py flash monitor
  13. Buka terminal baru lainnya, navigasikan ke root direktori unduhan FreeRTOS Anda, dan jalankan

    idf.py gdb

    Program harus berhenti dimain.

Debugging di Linux (ESP-IDF v4.2)
  1. Unduh OpenOCD. Ekstrak tarball dan ikuti petunjuk instalasi di file readme.

  2. Gunakan perintah berikut untuk menginstal libusb di Linux.

    sudo apt-get install libusb-1.0
  3. Buka terminal dan masukkan ls -l /dev/ttyUSB* untuk daftar 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
  4. Masuk, lalu masuk dan putar daya ke papan untuk membuat perubahan berlaku. Dalam prompt terminal, daftarkan perangkat USB. Pastikan pemilik grup telah berubah dari dialout menjadiplugdev.

    $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

    Antar /dev/ttyUSBn muka dengan nomor yang lebih rendah digunakan untuk komunikasi JTAG. Antarmuka lainnya dialihkan ke port serial ESP32 (UART) dan digunakan untuk mengunggah kode ke memori flash ESP32.

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

    idf.py openocd
  6. Buka terminal lain, navigasikan ke root direktori unduhan FreeRTOS Anda, dan jalankan perintah berikut.

    idf.py flash monitor
  7. Buka terminal lain, navigasikan root direktori unduhan FreeRTOS Anda, dan jalankan perintah berikut:

    idf.py gdb

    Program harus berhentimain().