Espressif ESP32-S2 시작하기
중요
이 라이브러리는 더 이상 사용되지 않는 Amazon-FreeRTOS 리포지토리에서 호스팅됩니다. 새 프로젝트를 생성할 때는 여기서 시작하는 것이 좋습니다. 현재 사용되지 않는 Amazon-FreeRTOS 리포지토리를 기반으로 하는 기존 FreeRTOS 프로젝트가 이미 있는 경우에는 Amazon-FreeRTOS Github 리포지토리 마이그레이션 가이드 섹션을 참조하세요.
참고
자체 Espressif IDF 프로젝트 내에 FreeRTOS 모듈식 라이브러리 및 데모를 통합하는 방법을 알아보려면 eatured reference integration for ESP32-C3 platform
이 자습서에서는 Espressif ESP32-S2 SoC 및 ESP32-S2-Saola-1
개요
이 자습서에서는 다음과 같은 단계를 안내합니다.
-
보드를 호스트 시스템에 연결합니다.
-
마이크로 컨트롤러 보드용 내장형 애플리케이션을 개발 및 디버깅하기 위한 소프트웨어를 호스트 머신에 설치합니다.
-
FreeRTOS 데모 애플리케이션을 바이너리 이미지로 크로스 컴파일합니다.
-
애플리케이션 이진 이미지를 보드에 로드한 다음 애플리케이션을 실행합니다.
-
직렬 연결을 사용하여 실행 중인 애플리케이션을 모니터링 및 디버깅합니다.
사전 조건
Espressif 보드에서 FreeRTOS를 시작하려면 먼저 AWS 계정과 권한을 설정해야 합니다.
AWS 계정에 등록
AWS 계정이 없는 경우 다음 절차에 따라 계정을 생성합니다.
AWS 계정에 가입
https://portal.aws.amazon.com/billing/signup
을 엽니다. 온라인 지시 사항을 따릅니다.
등록 절차 중 전화 또는 텍스트 메시지를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.
AWS 계정 루트 사용자에 가입하면 AWS 계정 루트 사용자가 만들어집니다. 루트 사용자에게는 계정의 모든 AWS 서비스 및 리소스에 액세스할 권한이 있습니다. 보안 모범 사례는 사용자에게 관리 액세스 권한을 할당하고, 루트 사용자만 사용하여 루트 사용자 액세스 권한이 필요한 작업을 수행하는 것입니다.
AWS는 가입 절차 완료된 후 사용자에게 확인 이메일을 전송합니다. 언제든지 https://aws.amazon.com/
관리자 액세스 권한이 있는 사용자 생성
AWS 계정에 가입하고 AWS 계정 루트 사용자에 보안 조치를 한 다음, AWS IAM Identity Center을 활성화하고 일상적인 작업에 루트 사용자를 사용하지 않도록 관리 사용자를 생성합니다.
귀하의 AWS 계정 루트 사용자 보호
-
루트 사용자를 선택하고 AWS 계정이메일 주소를 입력하여 AWS Management 콘솔
에 계정 소유자로 로그인합니다. 다음 페이지에서 비밀번호를 입력합니다. 루트 사용자를 사용하여 로그인하는 데 도움이 필요하면 AWS 로그인 User Guide의 루트 사용자로 로그인을 참조하세요.
-
루트 사용자의 다중 인증(MFA)을 활성화합니다.
지침은 IAM 사용 설명서의 AWS 계정 루트 사용자용 가상 MFA 디바이스 활성화(콘솔)를 참조하세요.
관리자 액세스 권한이 있는 사용자 생성
-
IAM Identity Center를 활성화합니다.
지침은 AWS IAM Identity Center 사용 설명서의 AWS IAM Identity Center 설정을 참조하세요.
-
IAM Identity Center에서 사용자에게 관리 액세스 권한을 부여합니다.
IAM Identity Center 디렉터리를 ID 소스로 사용하는 방법에 대한 자습서는 AWS IAM Identity Center 사용 설명서의 기본 IAM Identity Center 디렉터리로 사용자 액세스 구성을 참조하세요.
관리 액세스 권한이 있는 사용자로 로그인
-
IAM IDentity Center 사용자로 로그인하려면 IAM Identity Center 사용자를 생성할 때 이메일 주소로 전송된 로그인 URL을 사용합니다.
IAM Identity Center 사용자로 로그인하는 데 도움이 필요한 경우 AWS 로그인 사용 설명서의 AWS 액세스 포털에 로그인을 참조하세요.
추가 사용자에게 액세스 권한 할당
-
IAM Identity Center에서 최소 권한 적용 모범 사례를 따르는 권한 세트를 생성합니다.
지침은 AWS IAM Identity Center 사용 설명서의 Create a permission set를 참조하세요.
-
사용자를 그룹에 할당하고, 그룹에 Single Sign-On 액세스 권한을 할당합니다.
지침은 AWS IAM Identity Center 사용 설명서의 Add groups를 참조하세요.
액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요:
-
AWS IAM Identity Center의 사용자 및 그룹:
권한 세트를 생성합니다. AWS IAM Identity Center 사용 설명서의 권한 세트 생성의 지침을 따릅니다.
-
보안 인증 공급자를 통해 IAM에서 관리되는 사용자:
ID 페더레이션을 위한 역할을 생성합니다. IAM 사용 설명서의 Create a role for a third-party identity provider (federation)의 지침을 따릅니다.
-
IAM 사용자:
-
사용자가 맡을 수 있는 역할을 생성합니다. IAM 사용 설명서에서 Create a role for an IAM user의 지침을 따릅니다.
-
(권장되지 않음)정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. IAM 사용 설명서에서 사용자(콘솔)에 권한 추가의 지침을 따르세요.
-
시작하기
참고
이 자습서의 Linux 명령을 사용하려면 Bash 쉘을 사용해야 합니다.
-
Espressif 하드웨어 설정.
ESP32-S2 개발 보드 하드웨어를 설정하는 방법에 대한 정보는 ESP32-S2-Saola-1 Getting Started Guide
를 참조하세요. 중요
Espressif 안내서의 다음 단계 섹션에 도달하면 여기서 멈추고 이 페이지의 지침으로 돌아갑니다.
-
GitHub
에서Amazon FreeRTOS를 다운로드합니다. (자세한 지침은 README.md 파일을 참조하세요.) -
개발 환경 설정.
보드와 통신하려면 도구 체인을 설치해야 합니다. Espressif는 보드용 소프트웨어를 개발할 수 있는 ESP-IDF를 제공합니다. ESP-IDF에는 자체 버전의 FreeRTOS 커널이 구성 요소로 통합되어 있으므로 Amazon FreeRTOS에는 FreeRTOS 커널이 제거된 사용자 지정 버전의 ESP-IDF v4.2가 포함되어 있습니다. 그러므로 컴파일할 때 파일이 중복되는 문제가 해결됩니다. Amazon FreeRTOS에 포함된 ESP-IDF v4.2의 사용자 지정 버전을 사용하려면 호스트 시스템의 운영 체제에 따라 아래 지침을 따릅니다.
(Windows):
-
ESP-IDF의 Windows용 범용 온라인 설치 관리자
를 다운로드합니다. -
범용 온라인 설치 관리자를 실행합니다.
-
ESP-IDF 다운로드 또는 사용 단계에 도달하면 기존 ESP-IDF 디렉터리 사용을 선택하고 기존 ESP-IDF 디렉터리 선택을
로 설정합니다.freertos/vendors/espressif/esp-idf -
설치를 완료합니다.
macOS:
-
Standard Setup of Toolchain prerequisites (ESP-IDF v4.2) for macOS
의 지침을 따릅니다. 중요
다음 단계의 ‘ESP-IDF 가져오기’ 지침에 도달하면 여기서 멈추고 이 페이지의 지침으로 돌아옵니다.
-
명령줄 창을 엽니다.
-
FreeRTOS 다운로드 디렉터리로 이동한 후, 다음 스크립트를 실행하여 플랫폼에 해당하는 espressif 도구 체인을 다운로드하고 설치합니다.
vendors/espressif/esp-idf/install.sh -
다음 명령을 사용하여 터미널 경로에 ESP-IDF 도구 체인 도구를 추가합니다.
source vendors/espressif/esp-idf/export.sh
(Linux):
-
Standard Setup of Toolchain prerequisites (ESP-IDF v4.2) for Linux
의 지침을 따릅니다. 중요
다음 단계의 ‘ESP-IDF 가져오기’ 지침에 도달하면 여기서 멈추고 이 페이지의 지침으로 돌아옵니다.
-
명령줄 창을 엽니다.
-
FreeRTOS 다운로드 디렉터리로 이동한 후, 다음 스크립트를 실행하여 플랫폼에 해당하는 Espressif 도구 체인을 다운로드하고 설치합니다.
vendors/espressif/esp-idf/install.sh -
다음 명령을 사용하여 터미널 경로에 ESP-IDF 도구 체인 도구를 추가합니다.
source vendors/espressif/esp-idf/export.sh
-
-
직렬 연결 설정.
-
호스트 시스템과 ESP32-DevKitC 사이에 직렬 연결을 설정하려면 CP210x USB to UART Bridge VCP 드라이버를 설치합니다. Silicon Labs
에서 이러한 드라이버를 다운로드할 수 있습니다. -
ESP32와 직렬 연결 설정
단계를 따릅니다. -
직렬 연결을 설정한 후 보드의 연결을 위한 직렬 포트를 기록해 두십시오. 데모를 플래시하는 데 필요합니다.
-
FreeRTOS 데모 애플리케이션 구성
이 자습서의 경우 FreeRTOS 구성 파일은 에 있습니다. (예를 들어, freertos/vendors/espressif/boards/board-name/aws_demos/config_files/FreeRTOSConfig.hAFR_BOARD espressif.esp32_devkitc를 선택하면 구성 파일은 에 있습니다.) freertos/vendors/espressif/boards/esp32/aws_demos/config_files/FreeRTOSConfig.h
-
macOS 또는 Linux를 실행하는 경우 터미널 프롬프트를 엽니다. Windows를 실행 중인 경우 'ESP-IDF 4.x CMD' 앱(ESP-IDF 도구 체인을 설치할 때 이 옵션을 포함한 경우)을 열고, 그렇지 않으면 '명령 프롬프트' 앱을 엽니다.
-
Python3이 설치되어 있는지 확인하려면 다음 명령을 실행합니다.
python --version설치된 버전이 표시됩니다. Python 3.0.1 이상이 설치되어 있지 않으면 Python
웹 사이트에서 설치할 수 있습니다. -
AWS IoT 명령을 실행하려면 AWS 명령줄 인터페이스(CLI)가 필요합니다. Windows를 실행 중인 경우
easy_install awscli명령을 사용하여 'Command' 또는'“ESP-IDF 4.x CMD' 앱에 AWS CLI를 설치합니다.macOS 또는 Linux를 실행하는 경우 AWS CLI 설치를 참조하세요.
-
Run
aws configureAWS를 실행하고 AWS 액세스 키 ID, 비밀 액세스 키 및 기본 리전 이름으로 AWS를 구성합니다. 자세한 내용은 AWS CLI 구성을 참조하세요.
-
AWS SDK for Python(boto3)을 설치하려면 다음 명령을 사용합니다.
-
Windows에서는 'Command' 또는 'ESP-IDF 4.x CMD' 앱에서 다음을 실행합니다.
easy_install boto3 -
macOS 또는 Linux에서는 다음을 실행합니다.
pip install tornado nose --user계속해서 다음을 실행합니다.
pip install boto3 --user
-
FreeRTOS에는 AWS IoT에 연결하기 위해 Espressif 보드를 더 쉽게 설정할 수 있게 해주는 SetupAWS.py 스크립트가 포함되어 있습니다.
구성 스크립트를 실행하려면
-
스크립트를 구성하려면
을 열고 다음 속성을 설정합니다.freertos/tools/aws_config_quick_start/configure.jsonafr_source_dir-
컴퓨터에서
디렉터리의 전체 경로입니다. 이 경로를 지정하기 위해 슬래시를 사용하고 있는지 확인합니다.freertos thing_name-
보드를 나타내는 AWS IoT 사물에 할당할 이름.
wifi_ssid-
Wi-Fi 네트워크의 SSID입니다.
wifi_password-
Wi-Fi 네트워크의 암호입니다.
wifi_security-
Wi-Fi 네트워크의 보안 유형입니다. 유효한 보안 유형은 다음과 같습니다.
-
eWiFiSecurityOpen(열림, 보안 없음) -
eWiFiSecurityWEP(WEP 보안) -
eWiFiSecurityWPA(WPA 보안) -
eWiFiSecurityWPA2(WPA2 보안)
-
-
macOS 또는 Linux를 실행하는 경우 터미널 프롬프트를 엽니다. Windows를 실행 중인 경우 'Command' 또는 'ESP-IDF 4.x CMD' 앱을 엽니다.
-
디렉터리로 이동하여 다음을 실행합니다.freertos/tools/aws_config_quick_startpython SetupAWS.py setup이 스크립트는 다음 작업을 수행합니다.
-
AWS IoT 사물, 인증서 및 정책을 생성합니다.
-
AWS IoT 정책을 인증서에 연결하고 인증서를 AWS IoT 사물에 연결합니다.
-
aws_clientcredential.h파일을 AWS IoT 엔드포인트, Wi-Fi SSID 및 보안 인증 정보로 채웁니다. -
인증서와 프라이빗 키에 형식을 지정하고
aws_clientcredential_keys.h헤더 파일에 기록합니다.
참고
인증서는 데모 용도로만 하드 코딩됩니다. 프로덕션 수준 애플리케이션은 이러한 파일을 보안 위치에 저장해야 합니다.
SetupAWS.py에 대한 자세한 내용은디렉터리의freertos/tools/aws_config_quick_startREADME.md파일을 참조하세요. -
AWS 클라우드에서 MQTT 메시지 모니터링
FreeRTOS 데모 프로젝트를 실행하기 전에 AWS IoT 콘솔에서 디바이스가 AWS 클라우드로 보내는 메시지를 모니터링하도록 MQTT 클라이언트를 설정할 수 있습니다.
AWS IoT MQTT 클라이언트를 사용하여 MQTT 주제를 구독하려면
-
AWS IoT 콘솔
에 로그인합니다. -
탐색 창에서 테스트를 선택하고 MQTT 테스트 클라이언트를 선택합니다.
-
구독 주제에
을 입력한 다음 주제 구독을 선택합니다.your-thing-name/example/topic
데모 프로젝트가 디바이스에서 성공적으로 실행되면 ‘Hello World!’가 구독한 주제로 여러 번 전송된 것을 볼 수 있습니다.
idf.py 스크립트를 사용하여 FreeRTOS 데모 프로젝트 빌드, 플래시 및 실행
Espressif의 IDF 유틸리티를 사용하여 빌드 파일을 생성하고, 애플리케이션 바이너리를 빌드하고, 보드를 플래시할 수 있습니다.
Windows, Linux 및 macOS에서 FreeRTOS 빌드 및 플래시(ESP-IDF v4.2)
idf.py 스크립트를 사용하여 프로젝트를 빌드하고 바이너리를 디바이스에 플래시합니다.
참고
다음 예제와 같이 일부 설정에서는 idf.py에서 포트 옵션 -p port-name을 사용하여 올바른 포트를 지정해야 할 수도 있습니다.
idf.py -p /dev/cu.usbserial-00101301B flash
프로젝트를 빌드하고 플래시하려면
-
FreeRTOS 다운로드 디렉터리의 루트로 이동합니다.
-
명령줄 창에서 다음 명령을 입력하여 ESP-IDF 도구를 터미널의 경로에 추가합니다.
- Windows('Command' 앱)
-
vendors\espressif\esp-idf\export.bat - Windows('ESP-IDF 4.x CMD' 앱)
-
(앱을 열었을 때 이미 완료되었습니다.)
- Linux/macOS
-
source vendors/espressif/esp-idf/export.sh
-
build디렉터리에서 cmake를 구성하고 다음 명령을 사용하여 펌웨어 이미지를 빌드합니다.idf.py -DVENDOR=espressif -DBOARD=esp32s2_saola_1 -DCOMPILER=xtensa-esp32s2 build다음 예제와 같은 출력이 표시됩니다.
Executing action: all (aliases: build) Running cmake in directory /path/to/hello_world/build Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DVENDOR=espressif -DBOARD=esp32s2_saola_1 -DCOMPILER=xtensa-esp32s2 -DCCACHE_ENABLE=0 /path/to/hello_world"... -- The C compiler identification is GNU 8.4.0 -- The CXX compiler identification is GNU 8.4.0 -- The ASM compiler identification is GNU ... (more lines of build system output) [1628/1628] Generating binary image from built executable esptool.py v3.0 Generated /path/to/hello_world/build/aws_demos.bin Project build complete. To flash, run this command: esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32s2 write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x16000 build/ota_data_initial.bin 0x20000 build/aws_demos.bin or run 'idf.py -p (PORT) flash'오류가 없는 경우 빌드는 펌웨어 바이너리 .bin 파일을 생성합니다.
-
다음 명령을 사용하여 개발 보드의 플래시 메모리를 지웁니다.
idf.py erase_flash -
idf.py스크립트를 사용하여 애플리케이션 바이너리를 보드에 플래시합니다.idf.py flash -
다음 명령을 사용하여 보드의 직렬 포트 출력을 모니터링합니다.
idf.py monitor참고
-
다음 예제와 같이 이들 명령을 결합할 수 있습니다.
idf.py erase_flash flash monitor -
특정 호스트 시스템 설정의 경우 다음 예제와 같이 보드를 플래시할 때 포트를 지정해야 합니다.
idf.py erase_flash flash monitor -p /dev/ttyUSB1
-
CMake를 사용하여 FreeRTOS 빌드 및 플래시
IDF SDK에서 제공하는 idf.py 스크립트를 사용하여 코드를 빌드하고 실행하는 방법 외에도 CMake를 사용하여 프로젝트를 빌드할 수도 있습니다. 현재는 Unix Makefile 및 Ninja 빌드 시스템을 지원합니다.
프로젝트를 빌드하고 플래시하려면
-
명령줄 창에서 FreeRTOS 다운로드 디렉터리의 루트로 이동합니다.
-
다음 스크립트를 실행하여 ESP-IDF 도구를 쉘의 경로에 추가합니다.
-
Windows
vendors\espressif\esp-idf\export.bat -
Linux/macOS
source vendors/espressif/esp-idf/export.sh
-
-
다음 명령을 입력하여 빌드 파일을 생성합니다.
-
Unix Makefile 사용
cmake -DVENDOR=espressif -DBOARD=esp32s2_saola_1 -DCOMPILER=xtensa-esp32s2 -S . -B ./YOUR_BUILD_DIRECTORY-DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0 -
Ninja 사용
cmake -DVENDOR=espressif -DBOARD=esp32s2_saola_1 -DCOMPILER=xtensa-esp32s2 -S . -B ./YOUR_BUILD_DIRECTORY-DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0 -GNinja
-
-
프로젝트를 빌드합니다.
-
Unix Makefile 사용
make -C ./YOUR_BUILD_DIRECTORY-j8 -
Ninja 사용
ninja -C ./YOUR_BUILD_DIRECTORY-j8
-
-
플래시를 지운 다음 보드를 플래시합니다.
-
Unix Makefile 사용
make -C ./YOUR_BUILD_DIRECTORYerase_flashmake -C ./YOUR_BUILD_DIRECTORYflash -
Ninja 사용
ninja -C ./YOUR_BUILD_DIRECTORYerase_flashninja -C ./YOUR_BUILD_DIRECTORYflash
-
추가 정보
Espressif ESP32 보드 사용 및 문제 해결에 대한 추가 정보는 다음 주제를 참조하세요.