ESP32 Dev Kitc 개발 보드

제품 정보

명세서

  • 제품: ESP32
  • 프로그래밍 가이드: ESP-IDF
  • 릴리스 버전: v5.0.9
  • 제조사 : Espressif Systems
  • 출시일: 16년 2025월 XNUMX일

제품 사용 지침

1. 시작하세요

ESP32를 시작하기 전에 다음 사항에 익숙해지십시오.
수행원:

1.1 서론

기본 기능과 성능에 대해 알아보세요.
ESP32.

1.2 필요한 것

필요한 하드웨어와 소프트웨어가 있는지 확인하세요.

  • 하드웨어: 필요한 하드웨어 목록을 확인하세요
    구성요소.
  • 소프트웨어: 필요한 소프트웨어를 설치하세요
    구성요소.

1.3 설치

IDE를 설치하고 설정하려면 다음 단계를 따르세요.
환경:

  • IDE: 권장되는 IDE를 설치하세요
    ESP32 프로그래밍.
  • 수동 설치: 수동으로 설정
    필요한 경우 환경.

1.4 첫 번째 프로젝트 구축

ESP32를 사용하여 초기 프로젝트를 만들고 빌드하세요.

1.5 ESP-IDF 제거

필요한 경우 ESP-IDF를 제거하는 방법을 알아보세요.
체계.

2. API 참조

자세한 내용은 API 문서를 참조하세요.
애플리케이션 프로토콜, 오류 처리 및 구성
구조물.

자주 묻는 질문(FAQ)

질문: ESP32에서 흔히 발생하는 문제는 어떻게 해결할 수 있나요?

A: 프로그래밍 가이드의 문제 해결 섹션을 참조하세요.
또는 제조사 방문 web지원 리소스 사이트.

질문: ESP-IDF를 다른 마이크로컨트롤러와 함께 사용할 수 있나요?

A: ESP-IDF는 ESP32용으로 특별히 설계되었지만 다음과 같은 문제가 발생할 수 있습니다.
다른 Espressif 마이크로컨트롤러와의 호환성.

ESP32
ESP-IDF 프로그래밍 가이드
릴리스 v5.0.9 Espressif Systems 2025년 5월 16일

목차

목차

i

1 시작하기

3

1.1 서론 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 필요한 것 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 하드웨어 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.2 소프트웨어 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3 설치 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.1 IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.2 수동 설치 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.4 첫 번째 프로젝트 구축 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1.5 ESP-IDF 제거 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2 API 참조

45

2.1 API 규칙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.1 오류 처리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.2 구성 구조 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.3 개인 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.4 ex의 구성 요소amp프로젝트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.5 API 안정성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2.2 응용 프로그램 프로토콜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.1 ASIO 포트. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.2 ESP-모드버스 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.2.4 ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.2.5 ESP HTTP 클라이언트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

2.2.6 ESP 로컬 제어 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2.2.7 ESP 직렬 슬레이브 링크 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

2.2.8 ESP x509 인증서 번들 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

2.2.9 HTTP 서버 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

2.2.10 HTTPS 서버 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

2.2.11 ICMP 에코 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

2.2.12 mDNS 서비스 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.2.13 엠베드 TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.2.14 IP 네트워크 계층 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3 블루투스 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3.1 블루투스® 공통 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3.2 블루투스® 저에너지 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

2.3.3 블루투스® 클래식 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

2.3.4 컨트롤러 및 HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

2.3.5 ESP-BLE-메쉬 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

2.3.6 NimBLE 기반 호스트 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767

2.4 오류 코드 참조 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769

2.5 네트워킹 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.1 Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.2 이더넷 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899

2.5.3 스레드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936

i

2.5.4 ESP-NETIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 IP 네트워크 계층 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 애플리케이션 계층 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 주변 장치 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 아날로그-디지털 변환기(ADC) 원샷 모드 드라이버. . . . . . . . . . . . . . . . . 977 2.6.2 아날로그-디지털 변환기(ADC) 연속 모드 드라이버. . . . . . . . . . . . . . . 986 2.6.3 아날로그-디지털 변환기(ADC) 교정 드라이버. . . . . . . . . . . . . . . . . . . 993 2.6.4 클록 트리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 디지털-아날로그 변환기(DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO 및 RTC GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 일반 목적 타이머(GPTimer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 I2C(Inter-Integrated Circuit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Inter-IC 사운드(I2S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 LED 제어(LEDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 모터 제어 펄스 폭 변조기(MCPWM) . . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 펄스 카운터(PCNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 원격 제어 트랜시버(RMT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 SD 풀업 요구 사항 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 SDMMC 호스트 드라이버. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 SD SPI 호스트 드라이버. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 SDIO 카드 슬레이브 드라이버. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 시그마-델타 변조(SDM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 SPI 마스터 드라이버. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 SPI 슬레이브 드라이버. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE(보안 요소) . . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 터치 센서 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 2선식 자동차 인터페이스(TWAI) . . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 범용 비동기 수신기/송신기(UART) . . . . . . . . . . . . . . . . . . 1317 2.7 프로젝트 구성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 소개 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 프로젝트 구성 메뉴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 sdkconfig.defaults 사용. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Kconfig 포맷 규칙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Kconfig 옵션의 하위 호환성 . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 구성 옵션 참조 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 프로비저닝 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 프로토콜 통신 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 통합 프로비저닝. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Wi-Fi 프로비저닝. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 스토리지 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . File시스템 지원 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 제조 유틸리티 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 비휘발성 스토리지 라이브러리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 2.9.4 NVS 파티션 생성기 유틸리티 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 SD/SDIO/MMC 드라이버 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 SPI 플래시 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 SPIFFS File시스템 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 가상 file시스템 구성 요소 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 마모 레벨링 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 시스템 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 앱 이미지 형식 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 애플리케이션 수준 추적 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 외부 스택을 사용하여 함수 호출 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 칩 개정판 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 콘솔 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 eFuse 관리자 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 오류 코드 및 도우미 함수 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii

2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 이벤트 루프 라이브러리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 FreeRTOS (Overview) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869 2.10.11 FreeRTOS(ESP-IDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 2.10.12 FreeRTOS(보충 기능) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1988 2.10.13 힙 메모리 할당 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 힙 메모리 디버깅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 고해상도 타이머(ESP 타이머) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2032 2.10.16 내부 및 불안정한 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 프로세서 간 호출 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 2.10.18 인터럽트 할당 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 로깅 라이브러리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 기타 시스템 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 OTA(Over The Air) 업데이트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 성능 모니터 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 전원 관리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 2.10.24 POSIX 스레드 지원 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 난수 생성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 2.10.26 절전 모드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 2.10.27 SoC 기능 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 시스템 시간 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 2.10.29 himem 할당 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 2.10.30 ULP 보조 프로세서 프로그래밍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 워치독 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161

3 하드웨어 참조

2167

3.1 칩 시리즈 비교 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167

3.1.1 관련 문서 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170

4개의 API 가이드

2171

4.1 애플리케이션 수준 추적 라이브러리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.2 작동 모드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.3 구성 옵션 및 종속성 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172

4.1.4 이 라이브러리를 사용하는 방법 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173

4.2 애플리케이션 시작 흐름 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181

4.2.1 첫 번째tag부트로더 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.2초tag부트로더 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.3 애플리케이션 시작 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183

4.3 블루투스® 클래식 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.3.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.4 블루투스® 저에너지 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186

4.4.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186

4.4.2 시작하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191

4.4.3 프로file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 삼

4.5 부트로더 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284

4.5.1 부트로더 호환성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.2 로그 수준 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.3 공장 초기화 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.4 테스트 펌웨어에서 부팅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.5 롤백 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.6 감시자 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.7 부트로더 크기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.8 딥 슬립 모드에서 빠른 부팅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.9 사용자 정의 부트로더 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.6 빌드 시스템 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288

4.6.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288

4.6.2 빌드 시스템 사용 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289

3세

4.6.3 실ample 프로젝트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 프로젝트 CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 구성 요소 CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 구성 요소 구성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 전처리기 정의 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.8 구성 요소 요구 사항 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 프로젝트의 부분 재정의 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 구성 전용 구성 요소 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 CMake 디버깅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 Example Component CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 사용자 정의 sdkconfig 기본값 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 플래시 인수 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 부트로더 빌드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 순수 CMake 구성 요소 작성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 구성 요소와 함께 타사 CMake 프로젝트 사용 . . . . . . . . . . . . . . . . . . . 2306 4.6.18 구성 요소와 함께 미리 빌드된 라이브러리 사용 . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 사용자 지정 CMake 프로젝트에서 ESP-IDF 사용 . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 ESP-IDF CMake 빌드 시스템 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File 글로빙 및 증분 빌드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 빌드 시스템 메타데이터 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.23 빌드 시스템 내부 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.24 ESP-IDF GNU Make System에서 마이그레이션 . . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 코어 덤프 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.2 구성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.3 코어 덤프를 플래시에 저장 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.4 UART에 코어 덤프 인쇄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 백트레이스의 ROM 함수 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 필요에 따라 변수 덤프 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 espcoredump.py 실행 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 딥 슬립 웨이크 스텁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.1 웨이크 스텁에 대한 규칙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 스텁 구현 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 RTC 메모리에 코드 로드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 RTC 메모리에 데이터 로드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 웨이크 스텁에 대한 CRC 검사 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 오류 처리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.2 오류 코드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.3 오류 코드를 오류 메시지로 변환 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.4 ESP_ERROR_CHECK 매크로 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 ESP_ERROR_CHECK_WITHOUT_ABORT 매크로 . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 ESP_RETURN_ON_ERROR 매크로 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.7 ESP_GOTO_ON_ERROR 매크로 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 ESP_RETURN_ON_FALSE 매크로 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 ESP_GOTO_ON_FALSE 매크로 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 매크로 확인 예amples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 오류 처리 패턴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 C++ 예외 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 소개 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 4.10.3 ESP-WIFI-MESH 개념 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2329 4.10.4 네트워크 구축 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 네트워크 관리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 데이터 전송 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 채널 전환 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv

4.10.8 성능 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 추가 참고 사항 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11 이벤트 처리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 Wi-Fi, 이더넷 및 IP 이벤트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 메시 이벤트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 Bluetooth 이벤트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 치명적인 오류 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 패닉 핸들러 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 레지스터 덤프 및 백트레이스. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 GDB 스텁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 RTC 워치독 시간 초과. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 구루 명상 오류. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 기타 치명적인 오류. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 플래시 암호화 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 소개 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 관련 eFuse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 플래시 암호화 프로세스. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 플래시 암호화 구성. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 가능한 실패 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 ESP32 플래시 암호화 상태. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 암호화된 플래시에서 데이터 읽기 및 쓰기. . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 암호화된 플래시 업데이트. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 플래시 암호화 비활성화 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 플래시 암호화에 대한 주요 사항. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 플래시 암호화의 한계. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 플래시 암호화 및 보안 부팅. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 고급 기능 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 기술 세부 사항 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 하드웨어 추상화 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 아키텍처 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 LL(저수준) 계층. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL(하드웨어 추상화 계층) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 고수준 인터럽트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 인터럽트 수준 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 참고사항 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG 디버깅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.1 소개 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.2 작동 원리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 J 선택TAG 어댑터 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 OpenOCD 설정 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 ESP32 대상 구성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.6 디버거 실행 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 디버깅 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 소스에서 OpenOCD 빌드하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 팁과 특이점 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 4.16.10 관련 문서 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 링커 스크립트 생성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 끝view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.2 빠른 시작 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.3 링커 스크립트 생성 내부 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 지원되는 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.2 BSD 소켓 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 Netconn API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 lwIP FreeRTOS 작업 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.5 IPv6 지원 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 esp-lwip 사용자 정의 수정 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436
v

4.18.7 성능 최적화 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 메모리 유형 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM(데이터 RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM(명령어 RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM(플래시에서 실행되는 코드) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM(플래시에 저장된 데이터) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 RTC 느린 메모리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.6 RTC 빠른 메모리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 DMA 가능 요구 사항 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 스택의 DMA 버퍼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20.1 OpenThread 스택의 모드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 OpenThread 애플리케이션을 작성하는 방법 . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 OpenThread 경계 라우터 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 파티션 테이블 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.2 내장 파티션 테이블 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 사용자 정의 테이블 만들기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.4 이진 파티션 테이블 생성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 파티션 크기 검사 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 파티션 테이블 플래싱 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 파티션 도구(parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 성능 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 성능 최적화 방법 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 가이드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451 4.23 RF 교정 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.1 부분 교정 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 전체 교정 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.3 교정 없음 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 PHY 초기화 데이터 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 API 참조 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 보안 부팅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 배경 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 보안 부팅 프로세스 종료view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 키 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 부트로더 크기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.5 보안 부팅을 활성화하는 방법 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 재플래시 가능 소프트웨어 부트로더 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 보안 부팅 서명 키 생성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 이미지의 원격 서명 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 보안 부팅 모범 사례 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 기술 세부 정보 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 보안 부팅 및 플래시 암호화 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 하드웨어 보안 부팅 없이 서명된 앱 검증 . . . . . . . . . . . . . . . . . . . . . 2478 4.24.13 고급 기능 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 보안 부팅 V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25.1 배경 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.2 장점tages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.3 보안 부팅 V2 프로세스 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.4 서명 블록 형식 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.5 보안 패딩 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 서명 블록 검증 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 이미지 검증 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 부트로더 크기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 eFuse 사용법 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.10 보안 부팅 V2를 활성화하는 방법 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 보안 부팅이 활성화된 후의 제한 사항 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 보안 부팅 서명 키 생성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi

4.25.13 이미지의 원격 서명 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 보안 부팅 모범 사례 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 기술 세부 정보 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.16 보안 부팅 및 플래시 암호화 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 하드웨어 보안 부팅 없이 서명된 앱 검증 . . . . . . . . . . . . . . . . . . . . . 2484 4.25.18 고급 기능 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26 외부 RAM 지원 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 소개 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 하드웨어 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 외부 RAM 구성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 제한 사항 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 초기화 실패 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 칩 개정판 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27 스레드 로컬 저장소 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.2 FreeRTOS 네이티브 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.3 Pthread API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.4 C11 표준 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28 도구 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.1 IDF 프런트엔드 – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 IDF Docker 이미지 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 IDF Windows 설치 프로그램 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 IDF 구성 요소 관리자 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang Tidy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 다운로드 가능한 도구 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 ESP32의 단위 테스트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 일반 테스트 케이스 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.2 다중 장치 테스트 사례 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 다중tag테스트 케이스. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 다양한 대상에 대한 테스트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 단위 테스트 앱 빌드. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 단위 테스트 실행. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 캐시 보상 타이머가 있는 타이밍 코드. . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 모의. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Linux에서의 단위 테스트. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 임베디드 소프트웨어 테스트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Linux 호스트의 IDF 단위 테스트. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 Wi-Fi 드라이버. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 ESP32 Wi-Fi 기능 목록 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Wi-Fi 애플리케이션을 작성하는 방법. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 ESP32 Wi-Fi API 오류 코드. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 ESP32 Wi-Fi API 매개변수 초기화 . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 ESP32 Wi-Fi 프로그래밍 모델 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 ESP32 Wi-Fi 이벤트 설명 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 ESP32 Wi-Fi 스테이션 일반 시나리오. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 ESP32 Wi-Fi AP 일반 시나리오. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 ESP32 Wi-Fi 스캔. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 ESP32 Wi-Fi 스테이션 연결 시나리오. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 여러 AP가 발견되면 ESP32 Wi-Fi 스테이션이 연결됩니다. . . . . . . . . . . . . 2543 4.31.12 Wi-Fi 재연결. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Wi-Fi 비콘 시간 초과. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 ESP32 Wi-Fi 구성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy ConnectTM(DPP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 무선 네트워크 관리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 무선 자원 측정. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 빠른 BSS 전환. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 ESP32 Wi-Fi 절전 모드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 ESP32 Wi-Fi 처리량. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7세

4.31.21 Wi-Fi 80211 패킷 전송 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 Wi-Fi 스니퍼 모드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 Wi-Fi 다중 안테나 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 Wi-Fi 채널 상태 정보 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Wi-Fi 채널 상태 정보 구성 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.27 Wi-Fi QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.28 Wi-Fi AMSDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.29 Wi-Fi 조각 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 WPS 등록자 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 Wi-Fi 버퍼 사용량 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Wi-Fi 성능을 개선하는 방법 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Wi-Fi 메뉴 구성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 문제 해결 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 Wi-Fi 보안 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.1 ESP32 Wi-Fi 보안 기능 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.2 보호 관리 프레임(PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3-개인 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 RF 공존 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 이상view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 ESP32에 지원되는 공존 시나리오 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 공존 메커니즘 및 정책 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 공존 기능 사용 방법 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 재현 가능한 빌드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 소개 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 재현 불가능한 빌드의 이유 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 ESP-IDF에서 재현 가능한 빌드 활성화 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 재현 가능한 빌드를 달성하는 방법 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 재현 가능한 빌드 및 디버깅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 재현 가능한 빌드에 여전히 영향을 미치는 요소 . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 저전력 모드 사용자 가이드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578

5가지 마이그레이션 가이드

2579

5.1 ESP-IDF 5.x 마이그레이션 가이드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

5.1.1 4.4에서 5.0으로 마이그레이션 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

6 라이브러리 및 프레임워크

2611

6.1 클라우드 프레임워크 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.1 ESP 레인메이커 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.2 AWS IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.3 Azure IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.4 구글 IoT 코어 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.5 알리윤 IoT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.6 조이링크 사물인터넷 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.7 텐센트 사물인터넷 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.1.8 텐센트윈 IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.1.9 바이두 사물인터넷 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2 표현 프레임워크 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.1 Espressif 오디오 개발 프레임워크 . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.3 에스프레시프 DSP 라이브러리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.4 ESP-WIFI-MESH 개발 프레임워크 . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.5 ESP-WHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.6 ESP 레인메이커 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.7 ESP-IoT 솔루션 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.8 ESP 프로토콜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

8. (주)

6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614

7 기여 가이드

2615

7.1 기여 방법 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.2 기여하기 전에 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.3 풀 리퀘스트 프로세스 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.4 법적 부분 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5 관련 문서 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5.1 Espressif IoT 개발 프레임워크 스타일 가이드 . . . . . . . . . . . . . . . . . . . . . 2616

7.5.2 ESP-IDF 프로젝트에 대한 사전 커밋 후크 설치 . . . . . . . . . . . . . . . . . . . . . . . . 2623

7.5.3 코드 문서화 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624

7.5.4 Ex 생성amp레. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629

7.5.5 API 문서 템플릿 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630

7.5.6 기여자 계약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632

7.5.7 저작권 헤더 가이드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634

7.5.8 Pytest를 사용한 ESP-IDF 테스트 가이드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635

8 ESP-IDF 버전

2645

8.1 릴리스 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.2 어떤 버전부터 시작해야 하나요? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.3 버전 관리 체계 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.4 지원 기간 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646

8.5 현재 버전 확인 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647

8.6 Git 워크플로 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7 ESP-IDF 업데이트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7.1 안정 릴리스로 업데이트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.2 사전 릴리스 버전으로 업데이트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.3 마스터 브랜치로 업데이트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.4 릴리스 브랜치로 업데이트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650

9 리소스

2651

9.1 플랫폼IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.1 PlatformIO란 무엇입니까? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.2 설치 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.3 구성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.4 튜토리얼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.5 프로젝트 Examp레. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.6 다음 단계 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.2 유용한 링크 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

10 저작권 및 라이센스

2653

10.1 소프트웨어 저작권 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.1 펌웨어 구성 요소 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.2 문서 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.2 ROM 소스 코드 저작권 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.3 Xtensa libhal MIT 라이센스. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

10.4 TinyBasic Plus MIT 라이센스. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

10.5 TJpgDec 라이센스 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

11 정보

2657

12 언어 전환

2659

색인

2661

색인

2661

ix

x

목차
이 문서는 Espressif IoT 개발 프레임워크(esp-idf)에 대한 설명서입니다. ESP-IDF는 ESP32, ESP32-S 및 ESP32-C 시리즈 SoC용 공식 개발 프레임워크입니다. 이 문서에서는 ESP32 SoC에서 ESP-IDF를 사용하는 방법을 설명합니다.

시작하기

API 참조

API 가이드

에스프레소 시스템

1 문서 피드백 제출

릴리스 v5.0.9

목차

에스프레소 시스템

2 문서 피드백 제출

릴리스 v5.0.9

제1장
시작하기
이 문서는 Espressif의 ESP32 칩 기반 하드웨어를 위한 소프트웨어 개발 환경을 설정하는 데 도움을 주기 위해 작성되었습니다. 그 후에는 간단한 예제를 통해amp이 글에서는 ESP-IDF(Espressif IoT 개발 프레임워크)를 사용하여 메뉴를 구성하는 방법과 ESP32 보드에 펌웨어를 빌드하고 플래싱하는 방법을 보여드리겠습니다.
참고: 이 문서는 ESP-IDF 안정 버전 v5.0.9에 대한 것입니다. 다른 ESP-IDF 버전도 사용할 수 있습니다.
1.1 서론
ESP32는 다음 기능을 통합한 칩 시스템입니다. · Wi-Fi(2.4GHz 대역) · Bluetooth · 듀얼 고성능 Xtensa® 32비트 LX6 CPU 코어 · 초저전력 보조 프로세서 · 다중 주변 장치
40nm 기술로 구동되는 ESP32는 견고하고 고도로 통합된 플랫폼을 제공하여 효율적인 전력 사용, 컴팩트한 디자인, 보안, 고성능 및 신뢰성에 대한 지속적인 요구를 충족합니다. Espressif는 애플리케이션 개발자가 ESP32 시리즈 하드웨어를 사용하여 아이디어를 실현할 수 있도록 기본적인 하드웨어 및 소프트웨어 리소스를 제공합니다. Espressif의 소프트웨어 개발 프레임워크는 Wi-Fi, 블루투스, 전력 관리 및 기타 여러 시스템 기능을 갖춘 사물 인터넷(IoT) 애플리케이션 개발을 위해 설계되었습니다.
1.2 필요한 것
1.2.1 하드웨어
· ESP32 보드. · USB 케이블 – USB A / 마이크로 USB B. · Windows, Linux 또는 macOS를 실행하는 컴퓨터.
참고: 현재 일부 개발 보드는 USB Type C 커넥터를 사용합니다. 보드에 맞는 케이블을 사용하세요!
아래 나열된 ESP32 공식 개발 보드 중 하나가 있다면 링크를 클릭하여 하드웨어에 대해 자세히 알아볼 수 있습니다.
3

1장. 시작하기
ESP32-DevKitS(-R)
이 사용자 가이드는 Espressif에서 제작한 ESP32 기반 플래싱 보드인 ESP32-DevKitS(-R)에 대한 정보를 제공합니다. ESP32-DevKitS(-R)은 ESP32-DevKitS와 ESP32-DevKitS-R 두 보드 이름의 합성어입니다. S는 스프링을, R은 WROVER를 의미합니다.

ESP32-DevKitS

ESP32-DevKitS-R

이 문서는 다음과 같은 주요 섹션으로 구성됩니다. · 시작하기: 개요 제공view ESP32-DevKitS(-R) 및 하드웨어/소프트웨어 설정 지침을 통해 시작하세요. · 하드웨어 참조: ESP32-DevKitS(-R)ns 하드웨어에 대한 자세한 정보를 제공합니다. · 관련 문서: 관련 문서에 대한 링크를 제공합니다.

시작하기 이 섹션에서는 ESP32-DevKitS(-R)를 시작하는 방법을 설명합니다. 먼저 ESP32-DevKitS(-R)에 대한 몇 가지 소개 섹션으로 시작하고, 이어서 "보드 플래싱 방법" 섹션에서는 ESP32-DevKitS(-R)에 모듈을 장착하고, 준비하고, 펌웨어를 플래싱하는 방법을 설명합니다.

위에view ESP32-DevKitS(-R)는 ESP32용으로 특별히 설계된 Espressifns 플래싱 보드입니다. 모듈을 전원 공급 장치 및 신호선에 납땜하지 않고도 ESP32 모듈을 플래싱하는 데 사용할 수 있습니다. 모듈을 장착하면 ESP32-DevKitS(-R)을 ESP32-DevKitC와 같은 소형 개발 보드로도 사용할 수 있습니다.
ESP32-DevKitS 및 ESP32-DevKitS-R 보드는 다음 ESP32 모듈에 맞게 스프링 핀의 레이아웃만 다릅니다.
· ESP32-DevKitS: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER(PCB 및 IPEX) ESP32-WROVER-B(PCB 및 IPEX) ESP32-WROVER-E ESP32-WROVER-IE
위 모듈에 대한 자세한 내용은 ESP32 시리즈 모듈을 참조하세요.

구성 요소 설명

에스프레소 시스템

4 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

그림 1: ESP32-DevKitS – 전면

에스프레소 시스템

그림 2: ESP32-DevKitS-R – 앞면 5
문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

주요 구성 요소 스프링 핀 2.54mm 암 헤더
USB-UART 브리지 LDO Micro-USB 커넥터/Micro USB 포트 EN 버튼 부팅 버튼
전원 켜짐 LED

설명: 모듈을 클릭합니다. 핀은 모듈의 캐슬형 구멍에 맞춰집니다. 이 암 헤더는 이 보드에 장착된 모듈의 핀에 연결됩니다. 암 헤더에 대한 설명은 헤더 블록을 참조하십시오. 단일 칩 USB-UART 브리지는 최대 3Mbps의 전송 속도를 제공합니다.
5V~3.3V 저드롭아웃 볼륨tage 레귤레이터(LDO).
USB 인터페이스. 보드에 전원을 공급하고 컴퓨터와 보드 간의 통신 인터페이스를 제공합니다.
재설정 버튼.
다운로드 버튼. Boot 키를 누른 상태에서 EN 키를 누르면 펌웨어 다운로드 모드가 시작되어 직렬 포트를 통해 펌웨어를 다운로드합니다.
USB나 전원 공급 장치가 보드에 연결되면 켜집니다.

ESP32-DevKitS(-R)에 전원을 공급하기 전에 보드가 양호한 상태이고 눈에 띄는 손상 흔적이 없는지 확인하세요.
필요한 하드웨어 · 선택한 ESP32 모듈 · USB 2.0 케이블(Standard-A~Micro-B) · Windows, Linux 또는 macOS를 실행하는 컴퓨터
하드웨어 설정 다음 단계에 따라 원하는 모듈을 ESP32-DevKitS(-R)에 장착하세요.
· ESP32-DevKitS(-R) 보드에 모듈을 조심스럽게 올려놓으세요. 모듈의 캐슬형 구멍이 보드의 스프링 핀과 정렬되어 있는지 확인하세요.
· 모듈을 보드에 딸깍 소리가 날 때까지 눌러 넣으세요. · 모든 스프링 핀이 캐슬형 구멍에 제대로 삽입되었는지 확인하세요. 스프링 핀이 정렬되지 않은 경우,
핀셋을 이용해 움푹 들어간 구멍에 넣어줍니다.
소프트웨어 설정
ESP-IDF 개발 프레임워크는 ESP32-DevKitS(-R)에 바이너리를 플래싱하는 권장 방법을 제공합니다. 시작하기 섹션으로 이동하여 "설치"를 통해 개발 환경을 설정하고 애플리케이션을 플래싱하는 방법을 빠르게 확인할 수 있습니다.ampESP32-DevKitS(-R)에 추가하세요.
다른 방법으로, Windows 사용자는 Flash Download Tool을 사용하여 바이너리를 플래시할 수 있습니다. 다운로드하고 압축을 푼 후 doc 폴더 안의 지침을 따르세요.
참고: 1. 바이너리를 플래시하려면 fileESP32는 펌웨어 다운로드 모드로 설정해야 합니다. 플래시 도구를 사용하여 자동으로 설정하거나, Boot 버튼을 누른 상태에서 EN 버튼을 눌러 설정할 수 있습니다. 2. 바이너리 플래싱 후 files, 플래시 다운로드 도구는 ESP32 모듈을 다시 시작하고 기본적으로 플래시된 애플리케이션을 부팅합니다.

보드 치수 내용물 및 포장

에스프레소 시스템

6 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기 그림 3: ESP32-DevKitS 보드 치수 - 뒷면

에스프레소 시스템

그림 4: ESP32-DevKitS-R 보드 치수 – 뒷면 7
문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
소매 주문 몇 개 주문하면amp각 ESP32-DevKitS(-R)는 개별 포장되어 있으며, 소매업체에 따라 정전기 방지 백 또는 기타 포장재로 제공됩니다. 소매 주문은 https://www.espressif.com/en/contact-us/get-s 에서 확인하세요.amp레.
도매 주문 대량 주문 시, 보드는 큰 골판지 상자에 담겨 배송됩니다. 도매 주문은 https://www.espressif.com/en/contact-us/sales-questions 를 방문하세요.
하드웨어 참조
블록 다이어그램 아래의 블록 다이어그램은 ESP32-DevKitS(-R)의 구성 요소와 상호 연결을 보여줍니다.

그림 5: ESP32-DevKitS(-R) (확대하려면 클릭)
전원 공급 옵션 보드에 전원을 공급하는 세 가지 상호 배타적인 방법이 있습니다. · 마이크로 USB 포트, 기본 전원 공급 · 5V 및 GND 헤더 핀 · 3V3 및 GND 헤더 핀
첫 번째 옵션인 마이크로 USB 포트를 사용하는 것이 좋습니다.

에스프레소 시스템

.

라벨 신호

L1 3V3 VDD 3V3

L2 EN 칩_PU

L3 VP 센서_VP

L4 VN 센서_VN

L5 34

GPIO34

L6 35

GPIO35

L7 32

GPIO32

L8 33

GPIO33

다음 페이지에 계속됩니다

8 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

표 1은 이전 페이지에서 계속됩니다.

.

라벨 신호

L9 25

GPIO25

L10 26

GPIO26

L11 27

GPIO27

L12 14

GPIO14

L13 12

GPIO12

L14 접지 접지

L15 13

GPIO13

L16 D2 SD_DATA2

L17 D3 SD_DATA3

L18 명령 SD_CMD

L19 5V

외부 5V

R1 접지 접지

R2 23

GPIO23

R3 22

GPIO22

R4 TX U0TXD

R5 RX U0RXD

R6 21

GPIO21

R7 접지 접지

R8 19

GPIO19

R9 18

GPIO18

R10 5

GPIO5

R11 17

GPIO17

R12 16

GPIO16

R13 4

GPIO4

R14 0

GPIO0

R15 2

GPIO2

R16 15

GPIO15

R17 D1 SD_DATA1

R18 D0 SD_DATA0

R19 클록 SD_CLK

헤더 블록 헤더 블록의 이미지는 구성 요소 설명을 참조하세요.

관련 문서
· ESP32-DevKitS(-R) 회로도(PDF) · ESP32 데이터시트(PDF) · ESP32-WROOM-32 데이터시트(PDF) · ESP32-WROOM-32D 및 ESP32-WROOM-32U 데이터시트(PDF) · ESP32-SOLO-1 데이터시트(PDF) · ESP32-WROVER 데이터시트(PDF) · ESP32-WROVER-B 데이터시트(PDF) · ESP 제품 선택기

ESP32-DevKitM-1

이 사용자 가이드는 ESP32-DevKitM-1을 시작하는 데 도움이 되며 보다 자세한 정보도 제공합니다.
ESP32-DevKitM-1은 Espressif에서 제작한 ESP32-MINI-1(1U) 기반 개발 보드입니다. 대부분의 I/O 핀은 양쪽 핀 헤더로 분리되어 있어 인터페이스가 간편합니다. 사용자는 점퍼선을 사용하여 주변 장치를 연결하거나 ESP32-DevKitM-1을 브레드보드에 장착할 수 있습니다.

에스프레소 시스템

9 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

ESP32-DevKitM-1 – 전면

ESP32-DevKitM-1 – 등각 투영

이 문서는 다음과 같은 주요 섹션으로 구성됩니다. · 시작하기: 개요 제공view ESP32-DevKitM-1 및 하드웨어/소프트웨어 설정 지침을 참조하여 시작하세요. · 하드웨어 참조: ESP32-DevKitM-1ns 하드웨어에 대한 자세한 정보를 제공합니다. · 관련 문서: 관련 문서에 대한 링크를 제공합니다.

시작하기 이 섹션에서는 ESP32-DevKitM-1을 시작하는 방법을 설명합니다. 먼저 ESP32-DevKitM-1에 대한 몇 가지 소개 섹션으로 시작하고, "애플리케이션 개발 시작" 섹션에서는 초기 하드웨어 설정 방법과 ESP32-DevKitM-1에 펌웨어를 플래싱하는 방법을 설명합니다.

위에view 이것은 다음을 특징으로 하는 작고 편리한 개발 보드입니다.
· ESP32-MINI-1 또는 ESP32-MINI-1U 모듈 · 보드에 전원 공급을 제공하는 USB-직렬 프로그래밍 인터페이스 · 핀 헤더 · 펌웨어 다운로드 모드 재설정 및 활성화를 위한 푸시 버튼 · 기타 몇 가지 구성 요소

내용물 및 포장

소매 주문 몇 개 주문하면amp각 ESP32-DevKitM-1은 소매업체에 따라 정전 방지 백이나 기타 포장재로 개별 포장되어 제공됩니다.
소매 주문의 경우 https://www.espressif.com/en/contact-us/get-s로 이동하세요.amp레.

도매 주문 대량 주문 시, 보드는 큰 골판지 상자에 담겨 배송됩니다. 도매 주문은 https://www.espressif.com/en/contact-us/sales-questions 를 방문하세요.

구성 요소 설명 다음 그림과 아래 표는 ESP32-DevKitM-1 보드의 주요 구성 요소, 인터페이스 및 제어 장치를 설명합니다. ESP32-MINI-1 모듈이 장착된 보드를 예로 들어 보겠습니다.amp다음 섹션에서 le.

에스프레소 시스템

10 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

그림 6: ESP32-DevKitM-1 – 전면

주요 구성 요소 온보드 모듈
5V ~ 3.3V LDO 부트 버튼
재설정 버튼 Micro-USB 포트
USB-UART 브리지 3.3V 전원 켜짐 LED
I/O 커넥터

설명
ESP32-MINI-1 모듈 또는 ESP32-MINI-1U 모듈. ESP32-MINI-1에는 온보드 PCB 안테나가 포함되어 있습니다. ESP32-MINI-1U에는 외부 안테나 커넥터가 포함되어 있습니다. 두 모듈 모두 4MB 플래시 메모리(Flash-in-Chip)를 사용합니다. 자세한 내용은 ESP32-MINI-1 및 ESP32-MINI-1U 데이터시트를 참조하세요.
전원 조절기는 5V를 3.3V로 변환합니다.
다운로드 버튼. Boot 버튼을 누른 상태에서 Reset 버튼을 누르면 펌웨어 다운로드 모드가 시작되어 직렬 포트를 통해 펌웨어를 다운로드합니다.
재설정 버튼
USB 인터페이스. 보드에 전원을 공급하고 컴퓨터와 ESP32 칩 사이의 통신 인터페이스입니다.
단일 USB-UART 브리지 칩은 최대 3Mbps의 전송 속도를 제공합니다.
USB가 보드에 연결되면 켜집니다. 자세한 내용은 관련 문서의 회로도를 참조하십시오. 사용 가능한 모든 GPIO 핀(플래시용 SPI 버스 제외)은 보드의 핀 헤더로 연결되어 있습니다. 사용자는 ESP32 칩을 프로그래밍하여 여러 기능을 활성화할 수 있습니다.

ESP32-DevKitM-1에 전원을 공급하기 전에 눈에 띄는 손상 흔적이 없고 양호한 상태인지 확인하세요.
필요한 하드웨어 · ESP32-DevKitM-1 · USB 2.0 케이블(Standard-A~Micro-B) · Windows, Linux 또는 macOS를 실행하는 컴퓨터
소프트웨어 설정 시작하기로 이동하세요. 설치 섹션에서는 개발 환경을 빠르게 설정하고 애플리케이션을 플래시하는 데 도움이 됩니다.ampESP32-DevKitM-1에 추가하세요.

에스프레소 시스템

11 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
주의: 2021년 12월 2일 이전에 제조된 ESP32-DevKitM-1 보드에는 단일 코어 모듈이 설치되어 있습니다. 어떤 모듈이 설치되어 있는지 확인하려면 PCN-2021-021의 모듈 표시 정보를 확인하세요. 보드에 단일 코어 모듈이 설치된 경우, 애플리케이션을 플래싱하기 전에 menuconfig에서 단일 코어 모드(CONFIG_FREERTOS_UNICORE)를 활성화하세요.
하드웨어 참조 블록 다이어그램 아래의 블록 다이어그램은 ESP32-DevKitM-1의 구성 요소와 상호 연결을 보여줍니다.

그림 7: ESP32-DevKitM-1
전원 공급 선택 보드에 전원을 공급하는 세 가지 상호 배타적인 방법이 있습니다. · 마이크로 USB 포트, 기본 전원 공급 장치 · 5V 및 GND 헤더 핀 · 3V3 및 GND 헤더 핀
경고: · 전원 공급은 위의 옵션 중 하나만 사용하여야 합니다. 그렇지 않으면 보드 및/또는 전원 공급 장치가 손상될 수 있습니다. · 마이크로 USB 포트를 통한 전원 공급을 권장합니다.

핀 설명 아래 표는 보드 양쪽에 있는 핀의 이름과 기능을 보여줍니다. 주변 장치 핀 구성은 ESP32 데이터시트를 참조하십시오.

아니요.

이름

유형

1

접지

P

2

3V3

P

기능 접지 3.3V 전원 공급 장치

다음 페이지에 계속됩니다

에스프레소 시스템

12 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

표 2은 이전 페이지에서 계속됩니다.

아니요.

이름

유형

기능

3

아이36

I

GPIO36, ADC1_CH0, RTC_GPIO0

4

아이37

I

GPIO37, ADC1_CH1, RTC_GPIO1

5

아이38

I

GPIO38, ADC1_CH2, RTC_GPIO2

6

아이39

I

GPIO39, ADC1_CH3, RTC_GPIO3

7

뉴스

I

재설정; 높음: 활성화; 낮음: 전원 끄기

8

아이34

I

GPIO34, ADC1_CH6, RTC_GPIO4

9

아이35

I

GPIO35, ADC1_CH7, RTC_GPIO5

10

IO32

입출력

GPIO32, XTAL_32K_P(32.768kHz 수정 발진기 입력),

ADC1_CH4, 터치9, RTC_GPIO9

11

IO33

입출력

GPIO33, XTAL_32K_N(32.768kHz 수정 발진기 출력),

ADC1_CH5, 터치8, RTC_GPIO8

12

IO25

입출력

GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0

13

IO26

입출력

GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1

14

IO27

입출력

GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV

15

IO14

입출력

GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,

HS2_CLK, SD_CLK, EMAC_TXD2

16

5V

P

5V 전원 공급

17

IO12

입출력

GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,

HS2_DATA2, SD_DATA2, EMAC_TXD3

18

IO13

입출력

GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,

HS2_DATA3, SD_DATA3, EMAC_RX_ER

19

IO15

입출력

GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,

HS2_CMD, SD_CMD, EMAC_RXD3

20

IO2

입출력

GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,

HS2_DATA0, SD_DATA0

21

IO0

입출력

GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,

EMAC_TX_CLK

22

IO4

입출력

GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,

HS2_DATA1, SD_DATA1, EMAC_TX_ER

23

IO9

입출력

GPIO9, HS1_DATA2, U1RXD, SD_DATA2

24

IO10

입출력

GPIO10, HS1_DATA3, U1TXD, SD_DATA3

25

IO5

입출력

GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK

26

IO18

입출력

GPIO18, HS1_DATA7, VSPICLK

27

IO23

입출력

GPIO23, HS1_STROBE, VSPID

28

IO19

입출력

GPIO19, VSPIQ, U0CTS, EMAC_TXD0

29

IO22

입출력

GPIO22, VSPIWP, U0RTS, EMAC_TXD1

30

IO21

입출력

GPIO21, VSPIHD, EMAC_TX_EN

31

TXD0

입출력

GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2

32

RXD0

입출력

GPIO3, U0RXD, CLK_OUT2

하드웨어 개정 세부 정보 이전 버전이 없습니다.
관련 문서
· ESP32-MINI-1 및 ESP32-MINI-1U 데이터시트(PDF) · ESP32-DevKitM-1 회로도(PDF) · ESP32-DevKitM-1 PCB 레이아웃(PDF) · ESP32-DevKitM-1 레이아웃(DXF) – 다음을 수행할 수 있습니다. view Autodesk와 함께 Viewer 온라인 · ESP32 데이터시트(PDF) · ESP 제품 선택기
보드에 대한 다른 설계 문서가 필요하시면 sales@espressif.com으로 문의해 주세요.

에스프레소 시스템

13 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
1.2.2 소프트웨어
ESP32에서 ESP-IDF를 사용하려면 다음 소프트웨어를 설치하세요. · ESP32용 코드를 컴파일하기 위한 툴체인 · 빌드 도구 - ESP32용 전체 애플리케이션을 빌드하기 위한 CMake 및 Ninja · ESP32용 API(소프트웨어 라이브러리 및 소스 코드)와 툴체인을 작동하기 위한 스크립트가 기본적으로 포함된 ESP-IDF

1.3 설치
필요한 모든 소프트웨어를 설치하기 위한 다양한 방법을 제공합니다. 사용 가능한 옵션 중 하나를 선택하세요.
1.3.1 IDE

참고: 선호하는 IDE를 통해 ESP-IDF를 설치하는 것을 적극 권장합니다.
· 이클립스 플러그인 · VSCode 확장

1.3.2 수동 설치
수동 절차의 경우, 귀하의 운영 체제에 맞게 선택해 주시기 바랍니다.

에스프레소 시스템

14 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
Windows용 툴체인 표준 설정
소개 ESP-IDF는 지원되는 칩에 대한 펌웨어를 빌드할 수 있도록 몇 가지 필수 도구를 설치해야 합니다.필수 도구에는 Python, Git, 크로스 컴파일러, CMake 및 Ninja 빌드 도구가 포함됩니다.이 시작하기에서는 명령 프롬프트를 사용하지만 ESP-IDF를 설치한 후에는 Eclipse 플러그인이나 CMake를 지원하는 다른 그래픽 IDE를 대신 사용할 수 있습니다.참고: 제한 사항: – ESP-IDF 및 ESP-IDF 도구의 설치 경로는 90자를 넘을 수 없습니다.설치 경로가 너무 길면 빌드에 실패할 수 있습니다.– Python 또는 ESP-IDF의 설치 경로에는 공백이나 괄호가 포함되어서는 안 됩니다.– 운영 체제가 유니코드 UTF-8p 지원으로 구성된 경우를 제외하고 Python 또는 ESP-IDF의 설치 경로에는 특수 문자(비ASCII)가 포함되어서는 안 됩니다.시스템 관리자는 제어판을 통해 지원을 활성화할 수 있습니다.– 날짜, 시간 또는 숫자 형식 변경 – 관리 탭 – 시스템 로캘 변경 – 베타: 전 세계 언어 지원에 유니코드 UTF-8 사용 옵션을 선택합니다.– 확인을 클릭하고 컴퓨터를 재부팅합니다.
ESP-IDF 도구 설치 프로그램 ESP-IDFns 필수 구성 요소를 설치하는 가장 쉬운 방법은 ESP-IDF 도구 설치 프로그램 중 하나를 다운로드하는 것입니다.

Windows Installer 다운로드
온라인 및 오프라인 설치 프로그램의 사용 사례는 무엇입니까? 온라인 설치 프로그램은 매우 작으며 사용 가능한 모든 ESP-IDF 릴리스를 설치할 수 있습니다. 설치 프로그램은 설치 과정에서 Git For Windows를 포함한 필수 종속성만 다운로드합니다. 설치 프로그램은 다운로드된 파일을 저장합니다. file캐시 디렉토리 %userpro에 s가 있습니다.file%. 에스프레시프
오프라인 설치 프로그램은 네트워크 연결이 필요하지 않습니다. 설치 프로그램에는 Git For Windows를 포함한 모든 필수 종속성이 포함되어 있습니다.
설치 구성 요소 설치 프로그램은 다음 구성 요소를 배포합니다.
· 임베디드 Python · 크로스 컴파일러 · OpenOCD · CMake 및 Ninja 빌드 도구 · ESP-IDF
설치 프로그램은 ESP-IDF를 사용하여 기존 디렉터리를 재사용할 수도 있습니다. 권장 디렉터리는 %userpro입니다.file%Desktopesp-idf 여기서 %userprofile%는 홈 디렉토리입니다.

에스프레소 시스템

15 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
ESP-IDF 환경 실행 설치 과정이 끝나면 "ESP-IDF PowerShell 환경 실행" 또는 "ESP-IDF 명령 프롬프트(cmd.exe)" 실행 옵션을 선택할 수 있습니다. 설치 프로그램이 선택한 프롬프트에서 ESP-IDF 환경을 실행합니다. ESP-IDF PowerShell 환경 실행:

그림 8: ESP-IDF PowerShell 환경 실행을 통한 ESP-IDF 도구 설치 마법사 완료
ESP-IDF 명령 프롬프트(cmd.exe)를 실행합니다.
명령 프롬프트 사용 나머지 시작하기 단계에서는 Windows 명령 프롬프트를 사용합니다. ESP-IDF 도구 설치 프로그램은 시작 메뉴에 ESP-IDF 명령 프롬프트를 실행하는 바로 가기를 생성합니다. 이 바로 가기는 명령 프롬프트(cmd.exe)를 실행하고 export.bat 스크립트를 실행하여 환경 변수(PATH, IDF_PATH 등)를 설정합니다. 이 명령 프롬프트 내에서 설치된 모든 도구를 사용할 수 있습니다. 이 바로 가기는 ESP-IDF 도구 설치 프로그램에서 선택한 ESP-IDF 디렉터리에만 적용됩니다. 컴퓨터에 여러 ESP-IDF 디렉터리가 있는 경우(예:amp(ESP-IDF의 다른 버전과 함께 작동하려면) 두 가지 옵션을 사용할 수 있습니다.
1. ESP-IDF 도구 설치 프로그램에서 만든 바로 가기의 복사본을 만들고, 새 바로 가기의 작업 디렉터리를 사용하려는 ESP-IDF 디렉터리로 변경합니다.
2. 또는 cmd.exe를 실행한 후, 사용하려는 ESP-IDF 디렉터리로 이동하여 export.bat를 실행합니다. 이전 옵션과 달리 이 방법은 PATH에 Python과 Git이 있어야 합니다. Python 또는 Git을 찾을 수 없다는 오류가 발생하면 첫 번째 옵션을 사용하세요.
ESP-IDF에 대한 첫 단계 이제 모든 요구 사항이 충족되었으므로 다음 주제에서는 첫 번째 프로젝트를 시작하는 방법을 안내합니다.

에스프레소 시스템

16 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기 그림 9: ESP-IDF PowerShell

그림 10: ESP-IDF 명령 프롬프트(cmd.exe)를 실행하여 ESP-IDF 도구 설치 마법사 완료

에스프레소 시스템

17 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

그림 11: ESP-IDF 명령 프롬프트

에스프레소 시스템

18 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
이 가이드는 ESP-IDF 사용의 첫 단계를 안내합니다. 이 가이드에 따라 ESP32에서 새 프로젝트를 시작하고 장치 출력을 빌드, 플래시 및 모니터링하세요. 참고: 아직 ESP-IDF를 설치하지 않으셨다면 설치 페이지로 이동하여 이 가이드를 사용하는 데 필요한 모든 소프트웨어를 다운로드하세요.

프로젝트 시작하기 이제 ESP32 애플리케이션을 준비할 준비가 되었습니다. ex에서 getstarted/hello_world 프로젝트로 시작할 수 있습니다.ampESP-IDF의 les 디렉토리.
중요: ESP-IDF 빌드 시스템은 ESP-IDF 또는 프로젝트 경로에 공백을 지원하지 않습니다.
프로젝트 get-started/hello_world를 ~/esp 디렉토리로 복사합니다: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedhello_world hello_world
참고: 다양한 예가 있습니다.amp전의 르 프로젝트ampESP-IDF의 les 디렉토리. 위에 제시된 것과 같은 방식으로 모든 프로젝트를 복사하여 실행할 수 있습니다. ex를 구축하는 것도 가능하다.amp먼저 복사하지 않고도 그 자리에 les를 저장합니다.

장치 연결하기 이제 ESP32 보드를 컴퓨터에 연결하고 보드가 어떤 직렬 포트에 표시되는지 확인하세요. Windows에서 직렬 포트 이름은 COM으로 시작합니다. 직렬 포트 이름을 확인하는 방법을 모르는 경우, 자세한 내용은 "ESP32를 사용하여 직렬 연결 설정"을 참조하세요.
참고: 다음 단계에서 필요하므로 포트 이름을 잘 보관하십시오.

프로젝트 구성 hello_world 디렉토리로 이동하여 대상으로 ESP32를 설정하고 프로젝트 구성 유틸리티 menuconfig를 실행합니다.
윈도우 cd %userprofile%esphello_world idf.py set-target esp32 idf.py menuconfig
새 프로젝트를 연 후 먼저 idf.py set-target esp32를 사용하여 대상을 설정해야 합니다. 이 과정에서 프로젝트에 기존 빌드 및 구성이 있는 경우 삭제되고 초기화됩니다. 대상을 환경 변수에 저장하면 이 단계를 건너뛸 수 있습니다. 자세한 내용은 "대상 칩 선택: set-target"을 참조하세요. 이전 단계를 올바르게 수행했다면 다음 메뉴가 나타납니다. 이 메뉴는 Wi-Fi 네트워크 이름 및 비밀번호, 프로세서 속도 등 프로젝트별 변수를 설정하는 데 사용됩니다. ohello_wordp의 경우 menuconfig를 사용하여 프로젝트를 설정하는 단계는 건너뛸 수 있습니다.ample는 기본 구성으로 실행됩니다.
주의: ESP32-SOLO-1 모듈과 함께 ESP32-DevKitC 보드를 사용하거나 ESP32-MIN1-1(1U) 모듈과 함께 ESP32-DevKitM-1 보드를 사용하는 경우 ex를 플래싱하기 전에 menuconfig에서 단일 코어 모드(CONFIG_FREERTOS_UNICORE)를 활성화하세요.amp레.

에스프레소 시스템

19 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

그림 12: 프로젝트 구성 – 홈 창
참고: 터미널마다 메뉴 색상이 다를 수 있습니다. --style 옵션을 사용하여 모양을 변경할 수 있습니다. 자세한 내용은 idf.py menuconfig --help를 실행하세요.
지원되는 개발 보드 중 하나를 사용 중이라면, 보드 지원 패키지를 사용하여 개발 속도를 높일 수 있습니다. 자세한 내용은 추가 팁을 참조하세요.
프로젝트 빌드 다음을 실행하여 프로젝트를 빌드합니다.
idf.py 빌드
이 명령은 애플리케이션과 모든 ESP-IDF 구성 요소를 컴파일한 다음 부트로더, 파티션 테이블 및 애플리케이션 바이너리를 생성합니다.
$ idf.py build /path/to/hello_world/build 디렉토리에서 cmake 실행 "cmake -G Ninja –warn-uninitialized /path/to/hello_world" 실행… 초기화되지 않은 값에 대해 경고합니다. — Git 발견: /usr/bin/git (버전 "2.17.0" 발견) — 구성으로 인해 빈 aws_iot 구성 요소 빌드 — 구성 요소 이름: … — 구성 요소 경로: …
… (더 많은 빌드 시스템 출력 라인)
[527/527] hello_world.bin esptool.py v2.3.1 생성
프로젝트 빌드가 완료되었습니다. 플래시하려면 다음 명령을 실행하세요. ../../../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 또는 'idf.py -p PORT flash'를 실행하세요.
오류가 없으면 펌웨어 바이너리 .bin을 생성하여 빌드가 완료됩니다. files.

에스프레소 시스템

20 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
장치에 플래시하기 방금 빌드한 바이너리(bootloader.bin, partition-table.bin 및 hello_world.bin)를 ESP32 보드에 플래시하려면 다음을 실행합니다. idf.py -p PORT [-b BAUD] flash
PORT를 ESP32 보드의 직렬 포트 이름으로 바꾸세요. BAUD를 원하는 전송 속도로 바꿔 플래셔의 전송 속도를 변경할 수도 있습니다. 기본 전송 속도는 460800입니다. idf.py 인수에 대한 자세한 내용은 idf.py를 참조하세요.
참고: flash 옵션은 프로젝트를 자동으로 빌드하고 플래시하므로 idf.py build를 실행할 필요가 없습니다.

플래싱 중 문제가 발생했나요? 주어진 명령을 실행했을 때 "Failed to connectp"와 같은 오류가 표시된다면 여러 가지 이유가 있을 수 있습니다. 그 중 하나는 빌드 시스템에서 칩을 재설정하고, ROM 부트로더와 상호 작용하고, 펌웨어를 플래싱하기 위해 호출하는 유틸리티인 esptool.py에서 발생하는 문제일 수 있습니다. 간단한 해결책 중 하나는 아래에 설명된 수동 재설정이며, 이 방법으로도 문제가 해결되지 않으면 문제 해결에서 발생할 수 있는 문제에 대한 자세한 내용을 확인할 수 있습니다.
esptool.py는 USB-시리얼 변환기 칩(예: FTDI 또는 CP210x)의 DTR 및 RTS 제어 라인을 활성화하여 ESP32를 자동으로 재설정합니다(자세한 내용은 ESP32와의 직렬 연결 설정 참조). DTR 및 RTS 제어 라인은 ESP32의 GPIO0 및 CHIP_PU(EN) 핀에 연결되므로, vol이 변경됩니다.tagDTR 및 RTS 레벨은 ESP32를 펌웨어 다운로드 모드로 부팅합니다.ampESP32 DevKitC 개발 보드의 회로도를 확인하세요.
일반적으로 공식 esp-idf 개발 보드를 사용하면 문제가 발생하지 않습니다. 그러나 다음과 같은 경우에는 esptool.py가 하드웨어를 자동으로 재설정할 수 없습니다.
· 하드웨어에 GPIO0 및 CHIP_PU에 연결된 DTR 및 RTS 라인이 없습니다. · DTR 및 RTS 라인이 다르게 구성되어 있습니다. · 이러한 직렬 제어 라인이 전혀 없습니다.
보유한 하드웨어의 종류에 따라 ESP32 보드를 수동으로 펌웨어 다운로드 모드(재설정)로 전환할 수도 있습니다.
· Espressif에서 제작한 개발 보드의 경우, 해당 시작 가이드 또는 사용자 가이드에서 이 정보를 확인할 수 있습니다. 예를 들어ampESP-IDF 개발 보드를 수동으로 재설정하려면 Boot 버튼(GPIO0)을 누른 상태에서 EN 버튼(CHIP_PU)을 누릅니다.
· 다른 유형의 하드웨어의 경우 GPIO0을 아래로 당겨보세요.

정상 작동 깜박일 때 다음과 유사한 출력 로그가 표시됩니다.
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev 직렬 포트 /dev/ttyUSB0 연결 중…….._ 칩은 ESP32D0WDQ6(개정판 0) 기능: WiFi, BT, 듀얼 코어, 코딩 방식 없음 크리스탈은 40MHz MAC: 24:0a:c4:05:b9:14 스텁 업로드 중… 스텁 실행 중… 스텁 실행 중… 통신 속도를 460800으로 변경됨 변경됨.
(다음 페이지에 계속)

에스프레소 시스템

21 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
(이전 페이지에서 계속) 플래시 크기 구성 중... 3072바이트를 103개로 압축... 0x00008000에 쓰기... (100%) 0x00008000에 3072바이트(103개 압축)를 0.0초 안에 썼습니다(실효 5962.8kbit/s)... 데이터 해시가 확인되었습니다. 26096바이트를 15408개로 압축... 0x00001000에 쓰기... (100%) 0x00001000에 26096바이트(15408개 압축)를 0.4초 안에 썼습니다(실효 546.7kbit/s)... 데이터 해시가 확인되었습니다. 147104바이트를 77364로 압축... 0x00010000...에 쓰기(20%) 0x00014000...에 쓰기(40%) 0x00018000...에 쓰기(60%) 0x0001c000...에 쓰기(80%) 0x00020000...에 쓰기(100%) 1.9초(실질적으로 615.5kbit/s) 동안 0x00010000에 147104바이트(77364 압축)를 썼습니다... 데이터 해시가 검증되었습니다.
떠나는 중... RTS 핀을 통한 하드 재설정 중... 완료
플래시 프로세스가 끝날 때까지 문제가 없으면 보드가 재부팅되고 ohello_worldp 애플리케이션이 시작됩니다. idf.py를 실행하는 대신 Eclipse 또는 VS Code IDE를 사용하려면 Eclipse 플러그인, VSCode 확장 프로그램을 확인해 보세요.
출력 모니터링 ohello_worldpis가 실제로 실행 중인지 확인하려면 idf.py -p PORT monitor를 입력합니다(PORT를 직렬 포트 이름으로 바꾸는 것을 잊지 마세요).
이 명령은 IDF 모니터 응용 프로그램을 시작합니다.
$ idf.py -p 디렉토리 […]/esp/hello_world/build에서 idf_monitor 실행 중 “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… 실행 중 — idf_monitor 켜짐 115200 —– 종료: Ctrl+] | 메뉴: Ctrl+T | 도움말: Ctrl+T를 누른 후 Ctrl+H –ets 2016년 6월 8일 00:22:57
rst:0x1(POWERON_RESET),boot:0x13(SPI_FAST_FLASH_BOOT) ets 2016년 6월 8일 00:22:57 …
시작 및 진단 로그가 위로 스크롤된 후 애플리케이션에서 oHello world!가 출력되는 것을 볼 수 있습니다.
… 안녕하세요! 10초 후에 다시 시작합니다… 2개의 CPU 코어, WiFi/BT/BLE, 실리콘 개정판 1, 2MB 외장 플래시 메모리를 탑재한 ESP32 칩입니다. 최소 사용 가능 힙 크기: 298968바이트 9초 후에 다시 시작합니다… 8초 후에 다시 시작합니다… 7초 후에 다시 시작합니다…
IDF 모니터를 종료하려면 단축키 Ctrl+]를 사용하십시오.

에스프레소 시스템

22 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
업로드 직후 IDF 모니터가 실패하거나, 위 메시지 대신 아래와 같은 무작위적인 가비지 메시지가 표시되는 경우, 보드가 26MHz 크리스털을 사용하고 있을 가능성이 높습니다. 대부분의 개발 보드 설계는 40MHz를 사용하므로 ESP-IDF는 이 주파수를 기본값으로 사용합니다.

이러한 문제가 발생하면 다음을 수행하세요. 1. 모니터를 종료합니다. 2. menuconfig로 돌아갑니다. 3. 구성 요소 구성 > 하드웨어 설정 > 기본 XTAL 구성 > 기본 XTAL 주파수로 이동한 다음 CONFIG_XTAL_FREQ_SEL을 26MHz로 변경합니다. 4. 그런 다음 애플리케이션을 다시 빌드하고 플래시합니다.
ESP-IDF의 현재 버전에서 ESP32가 지원하는 주요 XTAL 주파수는 다음과 같습니다.
· 26MHz · 40MHz
참고: idf.py -p PORT flash monitor를 실행하여 빌드, 플래싱 및 모니터링을 하나의 단계로 결합할 수 있습니다.
또한 다음을 참조하세요. · IDF Monitor에서 편리한 단축키와 IDF Monitor 사용에 대한 자세한 내용을 확인하세요. · idf.py에서 idf.py 명령과 옵션에 대한 전체 참조를 확인하세요.
ESP32를 시작하는 데 필요한 모든 것이 끝났습니다! 이제 다른 ex를 시도해 볼 준비가 되었습니다.amp또는 바로 자신의 애플리케이션을 개발할 수도 있습니다.
중요: 일부 전ampESP32에 필요한 하드웨어가 포함되어 있지 않아 ESP32를 지원할 수 없기 때문에 les는 ESP32를 지원하지 않습니다. ex를 빌드하는 경우ample, README를 확인하세요 file 지원되는 대상 테이블에 대한 정보입니다. ESP32 대상을 포함하여 이 테이블이 존재하거나 테이블이 전혀 존재하지 않는 경우,ample는 ESP32에서 작동할 것입니다.
추가 팁
권한 문제 /dev/ttyUSB0 일부 Linux 배포판에서는 ESP32를 플래싱할 때 "/dev/ttyUSB0 포트를 열 수 없습니다" 오류 메시지가 나타날 수 있습니다. 이 문제는 현재 사용자를 dialout 그룹에 추가하면 해결할 수 있습니다.
Python 호환성 ESP-IDF는 Python 3.7 이상을 지원합니다. 운영 체제를 이 요구 사항을 충족하는 최신 버전으로 업그레이드하는 것이 좋습니다. 다른 방법으로는 소스에서 Python을 설치하거나 pyenv와 같은 Python 버전 관리 시스템을 사용하는 것이 있습니다.
일부 개발 보드에서 프로토타입 제작 속도를 높이려면 보드 지원 패키지(BSP)를 사용할 수 있습니다. BSP를 사용하면 몇 번의 함수 호출만으로 특정 보드의 초기화가 쉬워집니다.

에스프레소 시스템

23 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

BSP는 일반적으로 개발 보드에 제공되는 모든 하드웨어 구성 요소를 지원합니다. 핀아웃 정의 및 초기화 기능 외에도 BSP는 센서, 디스플레이, 오디오 코덱 등과 같은 외부 구성 요소용 드라이버를 제공합니다. BSP는 IDF Component Manager를 통해 배포되므로 IDF Component Registry에서 찾을 수 있습니다. Herens an examp프로젝트에 ESP-WROVER-KIT BSP를 추가하는 방법: idf.py add-dependency esp_wrover_kit
더 많은 전ampBSP 사용의 감소는 BSP ex에서 찾을 수 있습니다.amp레 폴더.
설치 프로세스를 사용자 지정하려는 고급 사용자를 위한 관련 문서: · Windows에서 ESP-IDF 도구 업데이트 · ESP32를 사용하여 직렬 연결 설정 · Eclipse 플러그인 · VSCode 확장 · IDF 모니터
Windows에서 ESP-IDF 도구 업데이트
스크립트를 사용하여 ESP-IDF 도구 설치 Windows 명령 프롬프트에서 ESPIDF가 설치된 디렉터리로 이동합니다. 그런 다음 다음을 실행합니다.
설치.bat
PowerShell의 경우 ESP-IDF가 설치된 디렉터리로 이동한 후 다음을 실행합니다.
설치.ps1
ESP-IDF 사용에 필요한 도구가 다운로드되어 설치됩니다. 해당 도구의 특정 버전이 이미 설치되어 있는 경우 아무런 작업도 수행되지 않습니다. 도구는 ESP-IDF 도구 설치 과정에서 지정한 디렉터리에 다운로드되어 설치됩니다. 기본 디렉터리는 C:Usersusername.espressif입니다.
내보내기 스크립트를 사용하여 ESP-IDF 도구를 PATH에 추가합니다. ESP-IDF 도구 설치 프로그램은 oESP-IDF 명령 프롬프트의 시작 메뉴 바로가기를 생성합니다. 이 바로가기는 모든 도구가 이미 설치된 명령 프롬프트 창을 엽니다.
사용 가능합니다. 경우에 따라 해당 바로가기로 시작되지 않은 명령 프롬프트 창에서 ESP-IDF를 사용하고 싶을 수 있습니다. 이 경우 아래 지침에 따라 ESP-IDF 도구를 PATH에 추가하세요. ESP-IDF를 사용해야 하는 명령 프롬프트에서 ESP-IDF가 설치된 디렉터리로 이동한 후 export.bat를 실행하세요.
CD %userprofile%espesp-idf 내보내기.bat
또는 ESP-IDF를 사용해야 하는 Powershell에서 ESP-IDF가 설치된 디렉토리로 변경한 다음 export.ps1을 실행합니다.
cd ~/esp/esp-idf export.ps1
이 작업이 완료되면 해당 도구를 이 명령 프롬프트에서 사용할 수 있습니다.
ESP32로 직렬 연결 설정하기 이 섹션에서는 ESP32와 PC 사이에 직렬 연결을 설정하는 방법에 대한 지침을 제공합니다.

에스프레소 시스템

24 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
ESP32를 PC에 연결하세요. USB 케이블을 사용하여 ESP32 보드를 PC에 연결하세요. 장치 드라이버가 자동으로 설치되지 않으면 ESP32 보드(또는 외부 변환기 동글)에서 USB-시리얼 변환기 칩을 확인하고 인터넷에서 드라이버를 검색하여 설치하세요. 아래는 Espressif에서 생산하는 대부분의 ESP32 보드에 설치된 USB-시리얼 변환기 칩 목록과 드라이버 링크입니다.
· CP210x: CP210x USB-UART 브리지 VCP 드라이버 · FTDI: FTDI 가상 COM 포트 드라이버. 사용하는 특정 USB-시리얼 변환기 칩에 대한 자세한 내용은 보드 사용자 가이드를 참조하십시오. 위 드라이버는 주로 참조용입니다. 일반적인 환경에서는 드라이버가 운영 체제와 함께 제공되며 보드를 PC에 연결하면 자동으로 설치됩니다.
Windows에서 포트 확인 Windows 장치 관리자에서 식별된 COM 포트 목록을 확인하세요. ESP32를 분리했다가 다시 연결하여 목록에서 사라졌다가 다시 나타나는 포트를 확인하세요. 아래 그림은 ESP32 DevKitC 및 ESP32 WROVER KIT의 직렬 포트를 보여줍니다.

그림 13: Windows 장치 관리자의 ESP32-DevKitC의 USB-UART 브리지

ESP32 보드(또는 외부 변환기 동글)의 직렬 포트에 대한 장치 이름을 확인하려면 이 명령을 두 번 실행합니다. 먼저 보드/동글을 분리한 상태에서 실행하고, 그 다음에는 연결한 상태에서 실행합니다. 두 번째로 나타나는 포트가 필요한 포트입니다. Linux
ls /dev/tty*
맥 OS

에스프레소 시스템

25 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

그림 14: Windows 장치 관리자의 ESP-WROVER-KIT의 두 개의 USB 직렬 포트

에스프레소 시스템

26 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

ls /dev/cu.* 참고: macOS 사용자: 직렬 포트가 표시되지 않으면 USB/직렬 드라이버가 설치되어 있는지 확인하세요. 드라이버 링크는 "ESP32를 PC에 연결" 섹션을 참조하세요. macOS High Sierra(10.13)의 경우 드라이버 로드를 명시적으로 허용해야 할 수도 있습니다. 시스템 환경설정 -> 보안 및 개인정보 보호 -> 일반을 열고 개발자 이름이 Silicon Labs 또는 FTDI인 개발자 lp의 oSystem Software에 대한 메시지가 표시되는지 확인하세요.

Linux에서 dialout에 사용자 추가하기 현재 로그인한 사용자는 USB를 통해 직렬 포트에 대한 읽기 및 쓰기 권한이 있어야 합니다. 대부분의 Linux 배포판에서는 다음 명령을 사용하여 dialout 그룹에 사용자를 추가하면 됩니다.
sudo usermod -a -G 다이얼아웃 $USER
Arch Linux에서는 다음 명령을 사용하여 사용자를 uucp 그룹에 추가하여 이를 수행합니다.
sudo usermod -a -G uucp $USER
직렬 포트에 대한 읽기 및 쓰기 권한을 활성화하려면 다시 로그인하십시오.
직렬 연결 확인 이제 직렬 연결이 작동하는지 확인하세요. ESP32를 재설정한 후 터미널에 출력이 있는지 확인하여 직렬 터미널 프로그램을 사용할 수 있습니다. ESP32의 기본 콘솔 통신 속도는 115200입니다.
Windows 및 Linux 이 예에서는ampWindows와 Linux 모두에서 사용 가능한 PuTTY SSH 클라이언트를 사용하겠습니다. 다른 직렬 프로그램을 사용하여 아래와 같이 통신 매개변수를 설정할 수 있습니다. 터미널을 실행하고 식별된 직렬 포트를 설정합니다. 통신 속도는 115200(필요한 경우 사용 중인 칩의 기본 통신 속도로 변경), 데이터 비트는 8, 정지 비트는 1, 패리티는 N입니다. 아래는 예시입니다.ampWindows 및 Linux에서 포트 및 전송 매개변수(간단히 115200-8-1-N이라고 함)를 설정하는 스크린샷입니다. 위 단계에서 확인한 것과 동일한 직렬 포트를 선택해야 합니다. 그런 다음 터미널에서 직렬 포트를 열고 ESP32에서 출력된 로그가 있는지 확인합니다. 로그 내용은 ESP32에 로드된 애플리케이션에 따라 달라집니다. 예시를 참조하세요.amp출력.
참고: 통신이 정상 작동하는지 확인한 후 시리얼 터미널을 닫으세요. 터미널 세션을 계속 열어 두면 나중에 펌웨어 업로드 시 시리얼 포트에 접근할 수 없습니다.

macOS 직렬 터미널 프로그램을 설치하는 번거로움을 덜기 위해 macOS에서는 screen 명령을 제공합니다. · Linux 및 macOS에서 포트 확인에서 설명한 대로 다음을 실행하세요.

ls /dev/cu.* · 다음과 비슷한 출력이 표시됩니다.

/dev/cu.Bluetooth 수신 포트 /dev/cu.SLAB_USBtoUART USBtoUART7

/dev/cu.SLAB_

· 출력은 PC에 연결된 보드의 종류와 개수에 따라 달라집니다. 그런 다음 보드의 장치 이름을 선택하고 실행하세요(필요한 경우 o115200p를 사용 중인 칩의 기본 통신 속도로 변경하세요).

screen /dev/cu.device_name 115200 device_name을 ls /dev/cu.*를 실행하여 찾은 이름으로 바꿉니다.

에스프레소 시스템

27 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

그림 15: Windows에서 PuTTY에서 직렬 통신 설정

에스프레소 시스템

28 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

그림 16: Linux의 PuTTY에서 직렬 통신 설정

에스프레소 시스템

29 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
· 찾고 계신 것은 화면에 표시되는 로그입니다. 로그 내용은 ESP32에 로드된 애플리케이션에 따라 달라집니다. 자세한 내용은 Ex를 참조하세요.amp출력. 화면 세션을 종료하려면 Ctrl-A + .를 누르세요.
참고: 통신이 제대로 작동하는지 확인한 후 화면 세션을 종료하는 것을 잊지 마세요. 종료하지 않고 터미널 창을 닫으면 나중에 펌웨어 업로드를 위해 직렬 포트에 접근할 수 없게 됩니다.
Example Output An examp로그는 아래와 같습니다. 아무것도 보이지 않으면 보드를 재설정하세요. ets 2016년 6월 8일 00:22:57
rst:0x5(DEEPSLEEP_RESET),boot:0x13(SPI_FAST_FLASH_BOOT) ets 2016년 6월 8일 00:22:57
rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0x00 clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0008,len:8 load:0x3fff0010,len:3464 load:0x40078000,len:7828 load:0x40080000,len:252 entry 0x40080034 I (44) boot: ESP-IDF v2.0-rc1-401-gf9fba35 2nd stage 부트로더 I (45) 부팅: 컴파일 시간 18:48:10

읽을 수 있는 로그 출력이 보인다면 직렬 연결이 작동 중이고 설치를 진행하고 마지막으로 ESP32에 애플리케이션을 업로드할 준비가 되었다는 의미입니다.
참고: 일부 직렬 포트 배선 구성의 경우, ESP32가 부팅되어 직렬 출력을 생성하기 전에 터미널 프로그램에서 직렬 RTS 및 DTR 핀을 비활성화해야 합니다. 이는 하드웨어 자체에 따라 다르며, 대부분의 개발 보드(모든 Espressif 보드 포함)에는 이 문제가 없습니다. RTS 및 DTR이 EN 및 GPIO0 핀에 직접 연결된 경우 이 문제가 발생합니다. 자세한 내용은 esptool 설명서를 참조하십시오.
ESP32 개발을 위한 소프트웨어를 설치할 때 5단계. ESP-IDF에 대한 첫 번째 단계에서 여기까지 왔다면 5단계. ESP-IDF에 대한 첫 번째 단계를 계속 진행할 수 있습니다.
IDF Monitor는 대상 장치의 직렬 포트와 직렬 데이터를 주고받는 직렬 터미널 프로그램입니다. 또한 일부 IDF 관련 기능도 제공합니다. IDF Monitor는 IDF 프로젝트에서 idf.py monitor를 실행하여 실행할 수 있습니다.
IDF Monitor와 쉽게 상호 작용하려면 표에 나와 있는 단축키를 사용하세요.

에스프레소 시스템

30 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

단축키 Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A(또는 A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (또는 I)
· Ctrl+H(또는 H)
· Ctrl+X (또는 X)
컨트롤+씨

행동

설명

프로그램 종료 메뉴 이스케이프 키 메뉴 문자 자체를 원격으로 전송합니다.
종료 문자 자체를 원격으로 보냅니다.
RTS 라인을 통해 앱을 일시 중지하려면 부트로더로 대상을 재설정하세요.
RTS를 통해 타겟 보드 재설정
프로젝트를 빌드하고 플래시합니다.

앱만 빌드하고 플래시합니다.

화면에 로그 출력 인쇄 중지/재개

로그 출력 중지/재개 저장됨 file

정지/재개 시간amps

인쇄

모든 키보드 단축키 표시

누른 후 아래에 주어진 키 중 하나를 누르세요.
RTS 라인(연결된 경우)을 통해 타겟 보드를 부트로더로 재설정하여 보드가 아무것도 실행하지 않도록 합니다. 다른 장치가 시작될 때까지 기다려야 할 때 유용합니다. RTS 라인(연결된 경우)을 통해 타겟 보드를 재설정하고 애플리케이션을 다시 시작합니다.
idf_monitor를 일시 중지하여 프로젝트 플래시 대상을 실행한 다음 idf_monitor를 다시 시작합니다. 변경된 소스 files는 재컴파일 후 다시 플래시됩니다. idf_monitor가 -E 인수로 시작된 경우, 대상 encrypted-flash가 실행됩니다. app-flash 대상을 실행하기 위해 idf_monitor를 일시 중지한 후 idf_monitor를 다시 시작합니다. 플래시 대상과 유사하지만, 기본 앱만 빌드되고 다시 플래시됩니다. idf_monitor가 -E 인수로 시작된 경우, 대상 encrypted-app-flash가 실행됩니다. 활성화된 동안 모든 수신 직렬 데이터를 삭제합니다. 모니터를 종료하지 않고도 로그 출력을 빠르게 일시 중지하고 검사할 수 있습니다. file 프로젝트 디렉토리에 있고 출력은 해당 디렉토리에 기록됩니다. file 동일한 키보드 단축키로 비활성화하거나 IDF Monitor가 종료될 때까지. IDF Monitor는 타임스탬프를 인쇄할 수 있습니다.amp 각 줄의 시작 부분에. 가장 빠른 시간amp 형식은 –timest로 변경할 수 있습니다.amp-format 명령줄 인수.

프로그램 종료

실행 중인 애플리케이션 중단

IDF Monitor를 일시 중지하고 GDB 프로젝트 디버거를 실행하여 런타임에 애플리케이션을 디버깅합니다. 이 기능을 사용하려면 :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME 옵션을 활성화해야 합니다.

Ctrl-]와 Ctrl-T를 제외한 모든 키는 직렬 포트를 통해 전송됩니다.

IDF 특정 기능

자동 주소 디코딩 ESP-IDF가 0x4_______ 형태의 16진수 코드 주소를 출력할 때마다 IDF Monitor는 addr2line_을 사용하여 소스 코드에서 해당 위치를 찾고 함수 이름을 찾습니다.
ESP-IDF 앱이 충돌하고 패닉 상태가 되면 다음과 같은 레지스터 덤프와 백트레이스가 생성됩니다.

에스프레소 시스템

31 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

코어 0에서 StoreProhibited 유형의 Guru Meditation 오류가 발생했습니다. 예외가 발생했습니다.

다루지 않은.

등록 덤프:

PC

: 0x400f360d PS

: 0x00060330 A0

: 0x800dbf56 A1

:

0x3ffb7e00

A2

: 0x3ffb136c A3

: 0x00000005 A4

: 0x00000000 A5

:

0x00000000

A6

: 0x00000000 A7

: 0x00000080 A8

: 0x00000000 A9

:

0x3ffb7dd0

A10

: 0x00000003 A11

: 0x00060f23 A12

: 0x00060f20 A13

:

0x3ffba6d0

A14

: 0x00000047 A15

: 0x0000000f SAR

: 0x00000019 변명:

0x0000001일

EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:

0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90

IDF Monitor는 덤프에 더 많은 세부 정보를 추가합니다.

코어 0에서 StoreProhibited 유형의 Guru Meditation 오류가 발생했습니다. 예외가 발생했습니다.

다루지 않은.

등록 덤프:

PC

: 0x400f360d PS

: 0x00060330 A0

: 0x800dbf56 A1

:

0x3ffb7e00

0x400f360d: /home/gus/esp/32/idf/ex에서 do_something_to_crash가 발생합니다.amples/시작하기/

hello_world/main/./hello_world_main.c:57

(inner_dont_crash에서) /home/gus/esp/32/idf/ex에 의해 인라인됨amples/get-started/hello_

월드/메인/./hello_world_main.c:52

A2

: 0x3ffb136c A3

: 0x00000005 A4

: 0x00000000 A5

:

0x00000000

A6

: 0x00000000 A7

: 0x00000080 A8

: 0x00000000 A9

:

0x3ffb7dd0

A10

: 0x00000003 A11

: 0x00060f23 A12

: 0x00060f20 A13

:

0x3ffba6d0

A14

: 0x00000047 A15

: 0x0000000f SAR

: 0x00000019 변명:

0x0000001일

EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:

0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90 0x400f360d: do_something_to_crash at /home/gus/esp/32/idf/examples/get-started/ hello_world/main/./hello_world_main.c:57 (inlined by) /home/gus/esp/32/idf/ex에서 inner_dont_crashamples/get-started/hello_ world/main/./hello_world_main.c:52 0x400dbf56: /home/gus/esp/32/idf/ex에서 still_dont_crash가 발생합니다.amples/get-started/hello_ world/main/./hello_world_main.c:47 0x400dbf5e: /home/gus/esp/32/idf/ex에서 dont_crash가 발생합니다.amples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: /home/gus/esp/32/idf/ex의 app_mainamples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254의 main_task

각 주소를 디코딩하기 위해 IDF Monitor는 백그라운드에서 다음 명령을 실행합니다. xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS

참고: 환경 변수 ESP_MONITOR_DECODE를 0으로 설정하거나 특정 명령줄로 idf_monitor.py를 호출합니다.

에스프레소 시스템

32 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
옵션: idf_monitor.py –disable-address-decoding은 주소 디코딩을 비활성화합니다.
연결 시 대상 재설정 기본적으로 IDF Monitor는 연결 시 대상을 재설정합니다. 대상 칩 재설정은 DTR 및 RTS 직렬 회선을 통해 수행됩니다. IDF Monitor가 연결 시 대상을 자동으로 재설정하지 않도록 하려면 –no-reset 옵션(예: idf_monitor.py –no-reset)을 사용하여 IDF Monitor를 호출하십시오.
참고: –no-reset 옵션은 IDF Monitor를 특정 포트에 연결할 때에도 동일한 동작을 적용합니다(예: idf.py monitor –no-reset -p [PORT]).
GDBStub으로 GDB 실행하기 GDBStub은 타겟에서 실행되고 직렬 포트를 통해 호스트에 연결하여 디버깅 명령을 수신하는 유용한 런타임 디버깅 기능입니다. GDBStub은 메모리 및 변수 읽기, 호출 스택 프레임 검사 등의 명령을 지원합니다. GDBStub은 J보다 다재다능하지는 않지만,TAG 디버깅에는 특별한 하드웨어(예: J)가 필요하지 않습니다.TAG 통신은 전적으로 직렬 포트를 통해 이루어지므로 USB 브리지로) 설정해야 합니다. 런타임 시 CONFIG_ESP_SYSTEM_PANIC을 GDBStub으로 설정하여 타겟이 GDBStub을 백그라운드에서 실행하도록 구성할 수 있습니다. GDBStub은 Ctrl+C 메시지가 직렬 포트를 통해 전송될 때까지 백그라운드에서 실행되며, 이 메시지는 GDBStub이 프로그램을 중단(즉, 실행을 중지)시켜 GDBStub이 디버깅 명령을 처리할 수 있도록 합니다. 또한, CONFIG_ESP_SYSTEM_PANIC을 GDBStub으로 설정하여 패닉 발생 시 GDBStub을 실행하도록 패닉 처리기를 구성할 수 있습니다. 충돌이 발생하면 GDBStub은 직렬 포트를 통해 특수 문자열 패턴을 출력하여 실행 중임을 나타냅니다. 두 경우 모두(Ctrl+C 메시지를 전송하거나 특수 문자열 패턴을 수신하는 경우) IDF Monitor는 사용자가 디버깅 명령을 전송할 수 있도록 자동으로 GDB를 실행합니다. GDB가 종료되면 타겟은 RTS 직렬 회선을 통해 재설정됩니다. 이 회선이 연결되지 않은 경우 사용자는 대상을 재설정할 수 있습니다(보드의 재설정 버튼을 눌러서).
참고: 백그라운드에서 IDF Monitor는 다음 명령을 실행하여 GDB를 시작합니다.
xtensa-esp32-elf-gdb -ex "직렬 전송 속도 설정" -ex "대상 원격 포트" -ex 인터럽트 build/PROJECT.elf :idf_target:`Hello NAME chip`

출력 필터링 IDF 모니터는 idf.py monitor --print-filter="xyz"로 호출할 수 있습니다. 여기서 --print-filter는 출력 필터링 매개변수입니다. 기본값은 빈 문자열이며, 이는 모든 내용이 출력됨을 의미합니다.
인쇄할 내용에 대한 제한 사항은 다음과 같이 지정할 수 있습니다.tag>: 항목tag> 는 tag 문자열과 로깅 수준을 나타내는 {N, E, W, I, D, V, *} 집합의 문자입니다.
예를 들어ample, PRINT_FILTER=”tag1:W”는 ESP_LOGW(“로 작성된 출력만 일치하고 인쇄합니다.tag1”, …) 또는 더 낮은 자세한 수준, 즉 ESP_LOGE(“tag1″, …). 지정하지 않음 또는 *를 사용하면 기본적으로 자세한 수준이 설정됩니다.
참고: 로깅 라이브러리를 통해 컴파일 시 불필요한 출력을 비활성화하려면 기본 로깅을 사용하세요. IDF 모니터를 이용한 출력 필터링은 애플리케이션을 다시 컴파일하지 않고도 필터링 옵션을 조정하는 데 유용한 보조 솔루션입니다.
귀하의 앱 tags 출력 필터링 기능과 호환되려면 공백, 별표(*), 콜론을 포함할 수 없습니다.
앱에서 출력 마지막 줄 뒤에 캐리지 리턴이 없으면 출력 필터링이 제대로 작동하지 않을 수 있습니다. 즉, 모니터가 해당 줄을 출력하기 시작하다가 나중에 해당 줄이 잘못 작성되었음을 알게 될 수 있습니다. 이는 알려진 문제이며, 항상 캐리지 리턴을 추가하면 (특히 바로 뒤에 출력이 없는 경우) 문제를 해결할 수 있습니다.

에스프레소 시스템

33 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
Examp필터링 규칙:
· *는 어떤 것과도 일치할 수 있습니다. tags. 그러나 문자열 PRINT_FILTER=”*:I tag1:E”에 관하여 tag1은 규칙에 따라 오류만 출력합니다. tag1은 * 규칙보다 우선순위가 높습니다.
· 기본(빈) 규칙은 모든 항목과 일치하기 때문에 *:V와 동일합니다. tag 자세한 수준이나 그 이하 수준은 모든 것을 일치시키는 것을 의미합니다.
· "*:N"은 로깅 함수의 출력뿐만 아니라 printf 등에 의한 출력도 억제합니다. 이를 방지하려면 *:E 또는 더 높은 수준의 자세한 정보를 사용하세요.
· 규칙 “tag1:V”, “tag1:v”, “tag1:”, “tag1:*”, 그리고 “tag1”은 동등합니다. · 규칙 “tag1:여 tag1:E”는 “tag1:E”는 동일한 결과가 연속적으로 발생하기 때문에 tag
이름이 이전 이름을 덮어씁니다. · 규칙 "tag1:나는 tag2:W”만 인쇄합니다 tag1 정보 상세 수준 이하 및 tag2 경고에서
자세한 정보 수준 이하. · 규칙 "tag1:나는 tag2:여 tag3:N”은 본질적으로 이전 것과 동일합니다. tag3:N은 다음을 지정합니다.
저것 tag3은 인쇄하면 안 됩니다. · tag3:N 규칙에서 “tag1:나는 tag2:여 tag3:N *:V”는 더 의미가 있습니다. tag3:N
tag3개의 메시지가 인쇄되었을 수 있습니다. 오류는 다음과 같습니다. tag1 및 tag2는 지정된(또는 그보다 낮은) 자세한 수준으로 인쇄되고, 나머지는 기본적으로 인쇄됩니다.
더 복잡한 필터링 예amp다음 로그 조각은 필터링 옵션 없이 수집되었습니다.
load:0x40078000,len:13564 항목 0x40078d4c E (31) esp_image: 0x30000의 이미지에 잘못된 매직 바이트가 있습니다 W (31) esp_image: 0x30000의 이미지에 잘못된 SPI 모드가 있습니다 255 E (39) boot: 팩토리 앱 파티션을 부팅할 수 없습니다 I (568) cpu_start: Pro CPU 작동.I (569) heap_init: 초기화.동적 할당에 사용 가능한 RAM: I (603) cpu_start: Pro CPU 시작 사용자 코드 D (309) light_driver: [light_init, 74]:상태: 1, 모드: 2 D (318) vfs: esp_vfs_register_fd_range가 범위 <54에 대해 성공했습니다. 64) 및 VFS ID 1 I (328) wifi: wifi 드라이버 작업: 3ffdbf84, prio:23, stack:4096, core=0
필터링 옵션 PRINT_FILTER="wifi esp_image:E light_driver:I"에 대한 캡처된 출력은 아래와 같습니다.
E(31) esp_image: 0x30000의 이미지에 잘못된 매직 바이트가 있습니다. I(328) wifi: wifi 드라이버 작업: 3ffdbf84, prio:23, stack:4096, core=0
옵션 “PRINT_FILTER="light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V"는 다음과 같은 출력을 보여줍니다.
load:0x40078000,len:13564 항목 0x40078d4c I (569) heap_init: 초기화 중입니다. 동적 할당에 사용 가능한 RAM: D (309) light_driver: [light_init, 74]:status: 1, mode: 2
IDF 모니터의 알려진 문제
Windows에서 관찰된 문제
· 화살표 키와 일부 다른 키는 Windows 콘솔 제한으로 인해 GDB에서 작동하지 않습니다. · 때때로 oidf.pype가 종료될 때 IDF Monitor가 다시 시작되기 전에 최대 30초 동안 멈출 수 있습니다. · ogdbpis가 실행될 때 GDBStub과 통신을 시작하기 전에 잠시 멈출 수 있습니다.

에스프레소 시스템

34 문서 피드백 제출

릴리스 v5.0.9

1장. Linux 및 macOS용 표준 툴체인 설정 시작하기

단계별 설치 이는 설치 과정을 안내하는 자세한 로드맵입니다.
개발 환경 설정 다음은 ESP32에 대한 ESP-IDF를 설정하는 단계입니다. · 1단계. 필수 구성 요소 설치 · 2단계. ESP-IDF 가져오기 · 3단계. 도구 설정 · 4단계. 환경 변수 설정 · 5단계. ESP-IDF의 첫 단계
1단계. 필수 구성 요소 설치 ESP32와 함께 ESP-IDF를 사용하려면 운영 체제에 따라 몇 가지 소프트웨어 패키지를 설치해야 합니다. 이 설치 가이드는 Linux 및 macOS 기반 시스템에 필요한 모든 소프트웨어를 설치하는 데 도움이 됩니다.
Linux 사용자의 경우 ESP-IDF를 사용하여 컴파일하려면 다음 패키지가 필요합니다. 실행할 명령은 사용 중인 Linux 배포판에 따라 다릅니다.
· Ubuntu 및 Debian: sudo apt-get install git wget flex bison gperf python3 python3-pip python3venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
· CentOS 7 및 8: sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7은 계속 지원되지만 더 나은 사용자 경험을 위해 CentOS 버전 8을 권장합니다. · 아키텍처: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
참고: · ESP-IDF를 사용하려면 CMake 버전 3.16 이상이 필요합니다. OS 버전에 적합한 버전이 없는 경우 otools/idf_tools.py install cmakep를 실행하여 설치하세요. · 위 목록에 사용 중인 Linux 배포판이 없는 경우 해당 배포판의 설명서를 확인하여 패키지 설치에 사용할 명령을 확인하세요.
macOS 사용자의 경우 ESP-IDF는 macOS에 기본적으로 설치된 Python 버전을 사용합니다. · CMake 및 Ninja 빌드 설치: HomeBrew가 있는 경우 다음을 실행할 수 있습니다. brew install cmake ninja dfu-util MacPorts가 있는 경우 다음을 실행할 수 있습니다. sudo port install cmake ninja dfu-util 그렇지 않은 경우 macOS 설치 다운로드는 CMake 및 Ninja 홈페이지를 참조하세요.

에스프레소 시스템

35 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
· 빌드 속도를 높이려면 ccache도 설치하는 것이 좋습니다. HomeBrew를 사용하는 경우, brew install ccache 또는 MacPorts에서 sudo port install ccache를 실행하여 설치할 수 있습니다.
참고: 어떤 단계에서든 이와 같은 오류가 표시되는 경우: xcrun: 오류: 잘못된 활성 개발자 경로(/Library/Developer/CommandLineTools), /Library/Developer/CommandLineTools/usr/bin/xcrun에 xcrun이 없습니다.
계속하려면 XCode 명령줄 도구를 설치해야 합니다. xcode-select --install을 실행하여 설치할 수 있습니다.
Apple M1 사용자 Apple M1 플랫폼을 사용 중 다음과 같은 오류가 발생하는 경우: 경고: 도구 xtensa-esp32-elf 버전 esp-2021r2-patch3-8.4.0에 대한 디렉터리가 있지만 도구를 찾을 수 없습니다. 오류: 도구 xtensa-esp32-elf에 설치된 버전이 없습니다. 'install.sh'를 실행하여 설치하세요.
또는: zsh: 실행 파일의 CPU 유형이 잘못되었습니다: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
그런 다음 /usr/sbin/softwareupdate –install-rosetta –agree-to-license를 실행하여 Apple Rosetta 2를 설치해야 합니다.
Python 3 설치 macOS Catalina 10.15 릴리스 노트에 따르면 Python 2.7 사용은 권장되지 않으며, 향후 macOS 버전에서는 Python 2.7이 기본적으로 포함되지 않습니다. 현재 사용 중인 Python 버전을 확인하세요: python –version
출력 결과가 Python 2.7.17과 비슷하다면 기본 인터프리터는 Python 2.7입니다. 그렇다면 Python 3가 컴퓨터에 설치되어 있지 않은지 확인하세요: python3 –version
위 명령에서 오류가 발생하면 Python 3가 설치되지 않았음을 의미합니다. 아래는view Python 3을 설치하는 단계입니다.
· HomeBrew를 사용하여 설치하는 방법은 다음과 같습니다. brew install python3
· MacPorts가 있는 경우 다음을 실행할 수 있습니다: sudo port install python38
2단계. ESP-IDF 가져오기 ESP32용 애플리케이션을 빌드하려면 Espressif에서 제공하는 소프트웨어 라이브러리가 ESP-IDF 저장소에 있어야 합니다. ESP-IDF를 가져오려면 설치 디렉터리로 이동하여 git clone을 사용하여 저장소를 복제합니다. 아래 운영 체제별 지침에 따라 진행하세요. 터미널을 열고 다음 명령을 실행하세요.

에스프레소 시스템

36 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDF는 ~/esp/esp-idf에 다운로드됩니다. 주어진 상황에서 사용할 ESP-IDF 버전에 대한 정보는 ESP-IDF 버전을 참조하십시오.
3단계. 도구 설정 ESP-IDF 외에도 ESP32를 지원하는 프로젝트의 경우 컴파일러, 디버거, Python 패키지 등 ESP-IDF에서 사용하는 도구도 설치해야 합니다. cd ~/esp/esp-idf ./install.sh esp32
또는 Fish shell을 사용하여 cd ~/esp/esp-idf ./install.fish esp32
위 명령어는 ESP32용 도구만 설치합니다. 더 많은 칩 타겟을 대상으로 프로젝트를 개발하려는 경우 모든 도구를 나열하고 다음을 실행해야 합니다.amp파일: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
또는 Fish shell을 사용하여 cd ~/esp/esp-idf ./install.fish esp32,esp32s2
지원되는 모든 대상에 대한 도구를 설치하려면 다음 명령을 실행하세요. cd ~/esp/esp-idf ./install.sh all
또는 Fish shell cd ~/esp/esp-idf ./install.fish all을 사용합니다.
참고: macOS 사용자의 경우 어떤 단계에서든 이와 같은 오류가 표시되면 다음을 수행하십시오.url오류 [SSL: CERTIFICATE_VERIFY_FAILED] 인증서 확인에 실패했습니다. 로컬 발급자 인증서를 가져올 수 없습니다(_ssl.c:xxx)
컴퓨터의 Python 폴더에서 Install Certificates.command를 실행하여 인증서를 설치할 수 있습니다. 자세한 내용은 ESP-IDF 도구 설치 중 다운로드 오류를 참조하세요.

대안 File 다운로드 도구 설치 프로그램은 여러 가지를 다운로드합니다. fileGitHub 릴리스에 첨부된 파일입니다. GitHub 접속 속도가 느린 경우, GitHub 에셋 다운로드 시 Espressifns 다운로드 서버를 우선적으로 사용하도록 환경 변수를 설정할 수 있습니다.

참고: 이 설정은 GitHub 릴리스에서 다운로드한 개별 도구만 제어하며 변경하지 않습니다. URLGit 저장소에 접근하는 데 사용됩니다.

도구를 설치할 때 Espressif 다운로드 서버를 선호하려면 install.sh를 실행할 때 다음 명령 시퀀스를 사용하세요.

에스프레소 시스템

37 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

cd ~/esp/esp-idf export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets" ./install.sh
도구 설치 경로 사용자 지정 이 단계에서 소개하는 스크립트는 ESP-IDF에 필요한 컴파일 도구를 사용자 홈 디렉터리(Linux의 경우 $HOME/.espressif)에 설치합니다. 도구를 다른 디렉터리에 설치하려면 설치 스크립트를 실행하기 전에 환경 변수 IDF_TOOLS_PATH를 설정해야 합니다. 사용자 계정에 이 경로를 읽고 쓸 수 있는 권한이 있는지 확인하십시오. IDF_TOOLS_PATH를 변경하는 경우, 설치 스크립트(install.bat, install.ps1 또는 install.sh)와 내보내기 스크립트(export.bat, export.ps1 또는 export.sh)를 실행할 때마다 동일한 값으로 설정해야 합니다.
4단계. 환경 변수 설정 설치된 도구는 아직 PATH 환경 변수에 추가되지 않았습니다. 명령줄에서 도구를 사용할 수 있도록 하려면 일부 환경 변수를 설정해야 합니다. ESP-IDF는 이를 위한 다른 스크립트를 제공합니다. ESP-IDF를 사용할 터미널에서 다음을 실행하세요.
. $HOME/esp/esp-idf/export.sh
또는 fish의 경우(fish 버전 3.0.0부터 지원):
. $HOME/esp/esp-idf/내보내기.fish
맨 앞의 점과 경로 사이의 공백에 주의하세요! esp-idf를 자주 사용할 계획이라면 export.sh 실행에 대한 별칭을 만들 수 있습니다.
1. 다음 명령을 shellns pro에 복사하여 붙여넣습니다.file (.찬성file, .bashrc, .zprofile, 등.)
별칭 get_idf='.$HOME/esp/esp-idf/export.sh' 2. 터미널 세션을 다시 시작하거나 source [path to pro]를 실행하여 구성을 새로 고칩니다.file],
예를 들어ample, source ~/.bashrc. 이제 get_idf를 실행하여 모든 터미널 세션에서 esp-idf 환경을 설정하거나 새로 고칠 수 있습니다. 기술적으로 export.sh를 shellns pro에 추가할 수 있습니다.file 직접 실행은 권장하지 않습니다. 이렇게 하면 모든 터미널 세션(IDF가 필요하지 않은 세션 포함)에서 IDF 가상 환경이 활성화되어 가상 환경의 본래 목적이 훼손되고 다른 소프트웨어에도 영향을 미칠 수 있습니다.
5단계. ESP-IDF 첫 단계 이제 모든 요구 사항을 충족했으므로 다음 항목에서는 첫 번째 프로젝트를 시작하는 방법을 안내합니다. 이 가이드는 ESP-IDF를 사용하는 첫 단계를 안내합니다. 이 가이드에 따라 ESP32에서 새 프로젝트를 시작하고 장치 출력을 빌드, 플래시 및 모니터링하세요.
참고: 아직 ESP-IDF를 설치하지 않았다면 설치로 이동하여 지침을 따라 이 가이드를 사용하는 데 필요한 모든 소프트웨어를 받으세요.

프로젝트 시작하기 이제 ESP32 애플리케이션을 준비할 준비가 되었습니다. ex에서 getstarted/hello_world 프로젝트로 시작할 수 있습니다.ampESP-IDF의 les 디렉토리.

중요: ESP-IDF 빌드 시스템은 ESP-IDF 또는 프로젝트 경로에 공백을 지원하지 않습니다.

프로젝트 get-started/hello_world를 ~/esp 디렉토리로 복사합니다.

에스프레소 시스템

38 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
참고: 다양한 예가 있습니다.amp전의 르 프로젝트ampESP-IDF의 les 디렉토리. 위에 제시된 것과 같은 방식으로 모든 프로젝트를 복사하여 실행할 수 있습니다. ex를 구축하는 것도 가능하다.amp먼저 복사하지 않고도 그 자리에 les를 저장합니다.
장치 연결하기 이제 ESP32 보드를 컴퓨터에 연결하고 보드가 어떤 직렬 포트에 보이는지 확인하세요. 직렬 포트의 명명 패턴은 다음과 같습니다.
· Linux: /dev/tty로 시작 · macOS: /dev/cu로 시작. 직렬 포트 이름을 확인하는 방법을 모르는 경우, 자세한 내용은 ESP32를 사용하여 직렬 연결 설정하기를 참조하세요.
참고: 다음 단계에서 필요하므로 포트 이름을 잘 보관하십시오.
프로젝트 구성 hello_world 디렉토리로 이동하여 ESP32를 대상으로 설정하고 프로젝트 구성 유틸리티 menuconfig를 실행합니다. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
새 프로젝트를 연 후에는 먼저 idf.py set-target esp32를 사용하여 대상을 설정해야 합니다. 이 과정에서 프로젝트에 기존 빌드 및 구성이 있는 경우 모두 삭제되고 초기화됩니다. 대상을 환경 변수에 저장하면 이 단계를 건너뛸 수 있습니다. 자세한 내용은 "대상 칩 선택: set-target"을 참조하세요. 이전 단계가 올바르게 수행되었다면 다음 메뉴가 나타납니다.

그림 17: 프로젝트 구성 - 홈 창 이 메뉴를 사용하여 프로젝트별 변수(예: Wi-Fi 네트워크 이름 및 암호, 프로세서 속도 등)를 설정합니다. menuconfig를 사용하여 hello_worldp의 프로젝트를 설정하는 것은 건너뛸 수 있습니다.ample는 ~와 함께 실행됩니다

에스프레소 시스템

39 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
기본 구성.
주의: ESP32-SOLO-1 모듈과 함께 ESP32-DevKitC 보드를 사용하거나 ESP32-MIN1-1(1U) 모듈과 함께 ESP32-DevKitM-1 보드를 사용하는 경우 ex를 플래싱하기 전에 menuconfig에서 단일 코어 모드(CONFIG_FREERTOS_UNICORE)를 활성화하세요.amp레.
참고: 터미널마다 메뉴 색상이 다를 수 있습니다. --style 옵션을 사용하여 모양을 변경할 수 있습니다. 자세한 내용은 idf.py menuconfig --help를 실행하세요.
지원되는 개발 보드 중 하나를 사용 중이라면, 보드 지원 패키지를 사용하여 개발 속도를 높일 수 있습니다. 자세한 내용은 추가 팁을 참조하세요.
프로젝트 빌드 다음을 실행하여 프로젝트를 빌드합니다.
idf.py 빌드
이 명령은 애플리케이션과 모든 ESP-IDF 구성 요소를 컴파일한 다음 부트로더, 파티션 테이블 및 애플리케이션 바이너리를 생성합니다.
$ idf.py build /path/to/hello_world/build 디렉토리에서 cmake 실행 "cmake -G Ninja –warn-uninitialized /path/to/hello_world" 실행… 초기화되지 않은 값에 대해 경고합니다. — Git 발견: /usr/bin/git (버전 "2.17.0" 발견) — 구성으로 인해 빈 aws_iot 구성 요소 빌드 — 구성 요소 이름: … — 구성 요소 경로: …
… (더 많은 빌드 시스템 출력 라인)
[527/527] hello_world.bin esptool.py v2.3.1 생성
프로젝트 빌드가 완료되었습니다. 플래시하려면 다음 명령을 실행하세요. ../../../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 또는 'idf.py -p PORT flash'를 실행하세요.
오류가 없으면 펌웨어 바이너리 .bin을 생성하여 빌드가 완료됩니다. files.
ESP32 보드에 방금 빌드한 바이너리(bootloader.bin, partition-table.bin 및 hello_world.bin)를 플래시하려면 다음을 실행합니다.
idf.py -p 포트 [-b BAUD] 플래시
PORT를 ESP32 보드의 직렬 포트 이름으로 바꾸세요. BAUD를 원하는 전송 속도로 바꿔 플래셔의 전송 속도를 변경할 수도 있습니다. 기본 전송 속도는 460800입니다. idf.py 인수에 대한 자세한 내용은 idf.py를 참조하세요.
참고: flash 옵션은 프로젝트를 자동으로 빌드하고 플래시하므로 idf.py build를 실행할 필요가 없습니다.

에스프레소 시스템

40 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기

플래싱 중 문제가 발생했나요? 주어진 명령을 실행했을 때 "Failed to connectp"와 같은 오류가 표시된다면 여러 가지 이유가 있을 수 있습니다. 그 중 하나는 빌드 시스템에서 칩을 재설정하고, ROM 부트로더와 상호 작용하고, 펌웨어를 플래싱하기 위해 호출하는 유틸리티인 esptool.py에서 발생하는 문제일 수 있습니다. 간단한 해결책 중 하나는 아래에 설명된 수동 재설정이며, 이 방법으로도 문제가 해결되지 않으면 문제 해결에서 발생할 수 있는 문제에 대한 자세한 내용을 확인할 수 있습니다.
esptool.py는 USB-시리얼 변환기 칩(예: FTDI 또는 CP210x)의 DTR 및 RTS 제어 라인을 활성화하여 ESP32를 자동으로 재설정합니다(자세한 내용은 ESP32와의 직렬 연결 설정 참조). DTR 및 RTS 제어 라인은 ESP32의 GPIO0 및 CHIP_PU(EN) 핀에 연결되므로, vol이 변경됩니다.tagDTR 및 RTS 레벨은 ESP32를 펌웨어 다운로드 모드로 부팅합니다.ampESP32 DevKitC 개발 보드의 회로도를 확인하세요.
일반적으로 공식 esp-idf 개발 보드를 사용하면 문제가 발생하지 않습니다. 그러나 다음과 같은 경우에는 esptool.py가 하드웨어를 자동으로 재설정할 수 없습니다.
· 하드웨어에 GPIO0 및 CHIP_PU에 연결된 DTR 및 RTS 라인이 없습니다. · DTR 및 RTS 라인이 다르게 구성되어 있습니다. · 이러한 직렬 제어 라인이 전혀 없습니다.
보유한 하드웨어의 종류에 따라 ESP32 보드를 수동으로 펌웨어 다운로드 모드(재설정)로 전환할 수도 있습니다.
· Espressif에서 제작한 개발 보드의 경우, 해당 시작 가이드 또는 사용자 가이드에서 이 정보를 확인할 수 있습니다. 예를 들어ampESP-IDF 개발 보드를 수동으로 재설정하려면 Boot 버튼(GPIO0)을 누른 상태에서 EN 버튼(CHIP_PU)을 누릅니다.
· 다른 유형의 하드웨어의 경우 GPIO0을 아래로 당겨보세요.

정상 작동 깜박일 때 다음과 유사한 출력 로그가 표시됩니다.
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev 직렬 포트 /dev/ttyUSB0 연결 중…….._ 칩은 ESP32D0WDQ6(개정판 0) 기능: WiFi, BT, 듀얼 코어, 코딩 방식 없음 크리스탈은 40MHz MAC: 24:0a:c4:05:b9:14 스텁 업로드 중… 스텁 실행 중… 스텁 실행 중… 통신 속도를 460800으로 변경됨 변경됨. 플래시 크기 구성 중... 3072바이트를 103개로 압축... 0x00008000에 쓰기... (100%) 0x00008000에 3072바이트(103개 압축)를 0.0초 안에 썼습니다(실효 5962.8kbit/s). 데이터 해시 확인됨. 26096바이트를 15408개로 압축... 0x00001000에 쓰기... (100%) 0x00001000에 26096바이트(15408개 압축)를 0.4초 안에 썼습니다(실효 546.7kbit/s). 데이터 해시 확인됨. 147104바이트를 77364로 압축… 0x00010000…에 쓰기(20%) 0x00014000…에 쓰기(40%) 0x00018000…에 쓰기(60%) 0x0001c000…에 쓰기(80%)
(다음 페이지에 계속)

에스프레소 시스템

41 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
(이전 페이지에서 계속) 0x00020000에 쓰기… (100%) 0x00010000에 1.9초(실질 615.5kbit/s) 동안 147104바이트(압축 시 77364)를 썼습니다. 데이터 해시가 확인되었습니다.
떠나는 중... RTS 핀을 통한 하드 재설정 중... 완료
플래시 프로세스가 끝날 때까지 문제가 없으면 보드가 재부팅되고 ohello_worldp 애플리케이션이 시작됩니다. idf.py를 실행하는 대신 Eclipse 또는 VS Code IDE를 사용하려면 Eclipse 플러그인, VSCode 확장 프로그램을 확인해 보세요.
출력 모니터링 ohello_worldpis가 실제로 실행 중인지 확인하려면 idf.py -p PORT monitor를 입력합니다(PORT를 직렬 포트 이름으로 바꾸는 것을 잊지 마세요). 이 명령은 IDF Monitor 애플리케이션을 실행합니다.
$ idf.py -p 디렉토리 […]/esp/hello_world/build에서 idf_monitor 실행 중 “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… 실행 중 — idf_monitor 켜짐 115200 —– 종료: Ctrl+] | 메뉴: Ctrl+T | 도움말: Ctrl+T를 누른 후 Ctrl+H –ets 2016년 6월 8일 00:22:57
rst:0x1(POWERON_RESET),boot:0x13(SPI_FAST_FLASH_BOOT) ets 2016년 6월 8일 00:22:57 …
시작 및 진단 로그가 위로 스크롤된 후 애플리케이션에서 oHello world!가 출력되는 것을 볼 수 있습니다.
… 안녕하세요! 10초 후에 다시 시작합니다… 2개의 CPU 코어, WiFi/BT/BLE, 실리콘 개정판 1, 2MB 외장 플래시 메모리를 탑재한 ESP32 칩입니다. 최소 사용 가능 힙 크기: 298968바이트 9초 후에 다시 시작합니다… 8초 후에 다시 시작합니다… 7초 후에 다시 시작합니다…
IDF 모니터를 종료하려면 단축키 Ctrl+]를 사용하세요. 업로드 직후 IDF 모니터가 실패하거나 위 메시지 대신 아래와 같은 무작위 가비지 메시지가 표시되면 보드가 26MHz 크리스털을 사용하고 있을 가능성이 높습니다. 대부분의 개발 보드 설계는 40MHz를 사용하므로 ESP-IDF는 이 주파수를 기본값으로 사용합니다.

이런 문제가 발생하면 다음을 수행하세요.
1. 모니터를 종료합니다. 2. menuconfig로 돌아갑니다. 3. 구성 요소 구성 > 하드웨어 설정 > 기본 XTAL 구성 > 기본 XTAL로 이동합니다.
주파수를 변경한 다음 CONFIG_XTAL_FREQ_SEL을 26MHz로 변경합니다. 4. 그런 다음 애플리케이션을 다시 빌드하고 플래시합니다.

에스프레소 시스템

42 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
ESP-IDF의 현재 버전에서 ESP32가 지원하는 주요 XTAL 주파수는 다음과 같습니다.
· 26MHz · 40MHz
참고: idf.py -p PORT flash monitor를 실행하여 빌드, 플래싱 및 모니터링을 하나의 단계로 결합할 수 있습니다.
또한 다음을 참조하세요. · IDF Monitor에서 편리한 단축키와 IDF Monitor 사용에 대한 자세한 내용을 확인하세요. · idf.py에서 idf.py 명령과 옵션에 대한 전체 참조를 확인하세요.
ESP32를 시작하는 데 필요한 모든 것이 끝났습니다! 이제 다른 ex를 시도해 볼 준비가 되었습니다.amp또는 바로 자신의 애플리케이션을 개발할 수도 있습니다.
중요: 일부 전ampESP32에 필요한 하드웨어가 포함되어 있지 않아 ESP32를 지원할 수 없기 때문에 les는 ESP32를 지원하지 않습니다. ex를 빌드하는 경우ample, README를 확인하세요 file 지원되는 대상 테이블에 대한 정보입니다. ESP32 대상을 포함하여 이 테이블이 존재하거나 테이블이 전혀 존재하지 않는 경우,ample는 ESP32에서 작동할 것입니다.
추가 팁
권한 문제 /dev/ttyUSB0 일부 Linux 배포판에서는 ESP32를 플래싱할 때 "/dev/ttyUSB0 포트를 열 수 없습니다" 오류 메시지가 나타날 수 있습니다. 이 문제는 현재 사용자를 dialout 그룹에 추가하면 해결할 수 있습니다.
Python 호환성 ESP-IDF는 Python 3.7 이상을 지원합니다. 운영 체제를 이 요구 사항을 충족하는 최신 버전으로 업그레이드하는 것이 좋습니다. 다른 방법으로는 소스에서 Python을 설치하거나 pyenv와 같은 Python 버전 관리 시스템을 사용하는 것이 있습니다.
보드 지원 패키지(BSP)로 시작하기 일부 개발 보드에서 프로토타입 제작 속도를 높이기 위해 보드 지원 패키지(BSP)를 사용할 수 있습니다. BSP는 몇 번의 함수 호출만으로 특정 보드의 초기화를 간편하게 해줍니다. BSP는 일반적으로 개발 보드에 제공되는 모든 하드웨어 구성 요소를 지원합니다. 핀아웃 정의 및 초기화 기능 외에도 BSP에는 센서, 디스플레이, 오디오 코덱 등과 같은 외부 구성 요소용 드라이버가 함께 제공됩니다. BSP는 IDF 구성 요소 관리자를 통해 배포되므로 IDF 구성 요소 레지스트리에서 찾을 수 있습니다. Herens an examp프로젝트에 ESP-WROVER-KIT BSP를 추가하는 방법: idf.py add-dependency esp_wrover_kit
더 많은 전ampBSP 사용의 감소는 BSP ex에서 찾을 수 있습니다.amp레 폴더.
팁: ESP-IDF 업데이트하기 최신 버전은 버그를 수정하거나 새로운 기능을 제공하므로 ESP-IDF를 수시로 업데이트하는 것이 좋습니다. 각 ESP-IDF 주 버전과 부 버전에는 관련 지원 기간이 있으며, 특정 릴리스 브랜치의 지원 종료(EOL)가 가까워지면 모든 사용자는 프로젝트를 최신 ESP-IDF 릴리스로 업그레이드하는 것이 좋습니다. 지원 기간에 대한 자세한 내용은 ESP-IDF 버전을 참조하세요.

에스프레소 시스템

43 문서 피드백 제출

릴리스 v5.0.9

1장. 시작하기
가장 간단한 업데이트 방법은 기존 esp-idf 폴더를 삭제하고 2단계에서 설명한 초기 설치처럼 다시 복제하는 것입니다. ESP-IDF를 설치하세요. 또 다른 방법은 변경된 내용만 업데이트하는 것입니다. 업데이트 절차는 사용 중인 ESP-IDF 버전에 따라 다릅니다. ESP-IDF를 업데이트한 후, 새 ESP-IDF 버전에 다른 버전의 도구가 필요한 경우 설치 스크립트를 다시 실행하세요. 3단계 도구 설정의 지침을 참조하세요. 새 도구가 설치되면 내보내기 스크립트를 사용하여 환경을 업데이트하세요. 4단계 환경 변수 설정의 지침을 참조하세요.
관련 문서 · ESP32를 사용한 직렬 연결 설정 · Eclipse 플러그인 · VSCode 확장 프로그램 · IDF 모니터
1.4 첫 번째 프로젝트 구축
ESP-IDF가 이미 설치되어 있고 IDE를 사용하지 않는 경우 Windows에서 프로젝트 시작 또는 Linux 및 macOS에서 프로젝트 시작에 따라 명령줄에서 첫 번째 프로젝트를 빌드할 수 있습니다.
1.5 ESP-IDF 제거
ESP-IDF를 제거하려면 ESP-IDF 제거를 따르세요.

에스프레소 시스템

44 문서 피드백 제출

릴리스 v5.0.9

제2장
API 참조
2.1 API 규칙
이 문서에서는 ESP-IDF 애플리케이션 프로그래밍 인터페이스(API)에 공통적인 규칙과 가정을 설명합니다. ESP-IDF는 다음과 같은 여러 종류의 프로그래밍 인터페이스를 제공합니다.
· 공개 헤더에 선언된 C 함수, 구조체, 열거형, 유형 정의 및 전처리기 매크로 fileESPIDF 구성 요소의 s. 프로그래밍 가이드의 API 참조 섹션의 여러 페이지에는 이러한 함수, 구조체 및 유형에 대한 설명이 포함되어 있습니다.
· 빌드 시스템 함수, 미리 정의된 변수 및 옵션. 이러한 내용은 빌드 시스템 가이드에 설명되어 있습니다. · Kconfig 옵션은 코드와 빌드 시스템(CMakeLists.txt)에서 사용할 수 있습니다. files. · 호스트 도구와 해당 명령줄 매개변수도 ESP-IDF 인터페이스의 일부입니다. ESP-IDF는 ESP-IDF용으로 특별히 작성된 구성 요소와 타사 라이브러리로 구성됩니다. 경우에 따라 ESP-IDF 전용 래퍼가 타사 라이브러리에 추가되어 ESP-IDF의 다른 기능과 더 잘 통합되거나 더 간단한 인터페이스를 제공합니다. 다른 경우에는 타사 라이브러리의 원래 API가 애플리케이션 개발자에게 제공됩니다. 다음 섹션에서는 ESP-IDF API의 몇 가지 측면과 그 사용법을 설명합니다.
2.1.1 오류 처리
대부분의 ESP-IDF API는 esp_err_t 유형으로 정의된 오류 코드를 반환합니다. 오류 처리 방식에 대한 자세한 내용은 오류 처리 섹션을 참조하십시오. 오류 코드 참조에는 ESP-IDF 구성 요소가 반환하는 오류 코드 목록이 포함되어 있습니다.
2.1.2 구성 구조
중요: 구성 구조를 올바르게 초기화하는 것은 ESP-IDF의 향후 버전과 호환되는 애플리케이션을 만드는 데 중요한 부분입니다.
ESP-IDF의 대부분의 초기화 또는 구성 함수는 구성 구조체에 대한 포인터를 인수로 받습니다. 예를 들어amp르 :
45

2장. API 참조

const esp_timer_create_args_t my_timer_args = { .콜백 = &my_timer_callback, .arg = 콜백_인수, .name = "my_timer"
}; esp_timer_handle_t my_timer; esp_err_t err = esp_timer_create(&my_timer_args, &my_timer);
초기화 함수는 구성 구조에 대한 포인터를 저장하지 않으므로 스택에 구조를 할당하는 것이 안전합니다.
애플리케이션은 구조체의 모든 필드를 초기화해야 합니다. 다음은 잘못된 설명입니다.
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* 틀림! .arg 및 .name 필드가 초기화되지 않았습니다. */ esp_timer_create(&my_timer_args, &my_timer);
대부분의 ESP-IDF 전amples는 구조체 초기화를 위해 C99 지정 초기화자를 사용합니다. 이는 필드의 하위 집합을 설정하고 나머지 필드를 0으로 초기화하는 간결한 방법을 제공하기 때문입니다.
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* 맞습니다. .arg 및 .name 필드는 0으로 초기화됩니다. */
};
C++ 언어는 C++20 이전까지는 지정 초기화자 구문을 지원하지 않지만, GCC 컴파일러는 확장 기능으로 이를 부분적으로 지원합니다. C++ 코드에서 ESP-IDF API를 사용할 때는 다음 패턴을 고려해 볼 수 있습니다.
esp_timer_create_args_t my_timer_args = {}; /* 모든 필드는 0으로 초기화됩니다. */ my_timer_args.callback = &my_timer_callback;

기본 초기화 프로그램
일부 구성 구조의 경우 ESP-IDF는 필드의 기본값을 설정하기 위한 매크로를 제공합니다.
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG는 지정된 초기화 프로그램으로 확장됩니다.
이제 모든 필드가 기본값으로 설정되었습니다. 모든 필드는 여전히 수정 가능합니다. */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
특정 구성 구조에 대해 기본 초기화 매크로가 제공되는 경우 항상 기본 초기화 매크로를 사용하는 것이 좋습니다.

2.1.3 개인 API
특정 헤더 fileESP-IDF의 s에는 ESP-IDF 소스 코드에서만 사용하도록 의도된 API가 포함되어 있으며, 애플리케이션에서는 사용할 수 없습니다. 이러한 헤더는 files는 이름이나 경로에 private 또는 esp_private를 포함하는 경우가 많습니다. hal과 같은 특정 구성 요소는 private API만 포함합니다. private API는 마이너 릴리스 또는 패치 릴리스 간에 호환되지 않는 방식으로 제거되거나 변경될 수 있습니다.

2.1.4 ex의 구성 요소amp르 프로젝트
ESP-IDF 전amples에는 ESP-IDF API 사용법을 보여주는 다양한 프로젝트가 포함되어 있습니다. 예제에서 코드 중복을 줄이기 위해amples, 몇 가지 공통 도우미는 여러 ex에서 사용되는 구성 요소 내부에 정의됩니다.amp레.

에스프레소 시스템

46 문서 피드백 제출

릴리스 v5.0.9

2장. API 참조
여기에는 다음이 포함됩니다.

문서 / 리소스

Espressif Systems ESP32 Dev Kitc 개발 보드 [PDF 파일] 사용자 가이드
ESP32 Dev Kitc 개발 보드, ESP32, Dev Kitc 개발 보드, Kitc 개발 보드, 개발 보드, 보드

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *