TuyaOpen 디렉터리 둘러보기
이 문서에서는 TuyaOpen의 디렉터리 구조와 각 디렉터리의 역할을 설명합니다.
주요 디렉터리 구조는 다음과 같습니다.
.
├── apps
│ ├── tuya.ai
│ └── tuya_cloud
├── boards
├── CMakeLists.txt
├── Dockerfile
├── examples
├── export.bat
├── export.sh
├── LICENSE
├── platform
│ └── platform_config.yaml
├── README.md
├── requirements.txt
├── src
├── tools
│ ├── cli_command
│ ├── cmake
│ ├── kconfiglib
│ └── tyutool
└── tos.py
src
프레임워크의 기본 기능 구현, 핵심 모듈, 크로스 플랫폼 공통 코드를 포함하는 핵심 소스 코드의 주 저장 위치입니다.
다음 기능을 지원합니다.
-
기본 구성 요소 및 서비스
- 시스템 커널: 작업 스케줄링, 메모리 관리, 스레드 동기화(뮤텍스와 세마포어) 등 기본 운영 체제(OS) 기능을 포함합니다.
- 디바이스 관리: 디바이스 등록과 구성 로드처럼 디바이스 초기화, 상태 관리, 리소스 할당을 위한 핵심 로직을 구현합니다.
- 통신 프로토콜 스택: Bluetooth, Wi-Fi, MQTT, HTTP용 상위 계층 인터페이스를 캡슐화해 애플리케이션에 통합 네트워크 통신 기능을 제공합니다.
-
크로스 플랫폼 추상화 계층
- 하드웨어 비종속 인터페이스:
platform디렉터리의 드라이버를 호출해 실제 기능을 구현하는 하드웨어 독립 API를 정의합니다. - OS 추상화: 스레드 생성과 타이머 관리처럼 OS 간에 사용할 수 있는 인터페이스를 제공해 Linux 및 RTOS 등 서로 다른 시스템에서 프레임워크를 실행할 수 있도록 합니다.
- 하드웨어 비종속 인터페이스:
주요 구성 요소는 다음과 같습니다.
src/
├── base/ # 기본 유틸리티(로깅, 메모리 연산, 데이터 구조)
├── device/ # 핵심 디바이스 관리 코드
├── network/ # 네트워크 통신(Wi-Fi, Bluetooth, MQTT)
├── security/ # 보안 및 암호화(디바이스 인증 및 데이터 암호화)
├── ai/ # AI 인터페이스(음성 인식 및 이미지 분석)
├── cloud/ # 클라우드 통합 서비스(Tuya Cloud API 호출)
└── utils/ # 공통 유틸리티 함수
apps 및 examples
두 디렉터리 모두 프로젝트를 저장하는 경로입니다.
-
apps디렉터리에는 AI 애플리케이션tuya.ai와 IoT 애플리케이션tuya_cloud로 나뉘는 복잡한 애플리케이션 프로젝트가 포함됩니다. -
examples디렉터리에는 WiFi, Bluetooth, 버튼 등 단일 기능을 보여 주는 데모 루틴이 포함됩니다.
app_default.config
프로젝트 컴파일 매개변수를 구성하는 TuyaOpen 설정 파일입니다.
app_default.config 파일에는 최소 구성 항목만 저장됩니다. 즉, 기본값과 다른 설정만 유지합니다.
주요 기능:
-
컴파일 매개변수 구성:
-
대상 플랫폼 정의: 현재 프로젝트 컴파일의 대상 플랫폼/개발 보드(예: T5AI 및 ESP32)를 기록하고 로드할 하드웨어 드라이버와 툴체인을 결정합니다.
-
컴파일 옵션 제어: 컴파일러 플래그(최적화 수준 및 매크로 정의 등), 펌웨어 버전 번호, 저장소 파티션을 포함합니다.
-
-
하드웨어 리소스 할당 구성:
-
주변 장치 매개변수: 시리얼 포트 보드레이트, GPIO 핀 할당, SPI 클록 속도와 같은 하드웨어 인터페이스 매개변수를 정의합니다.
-
메모리 레이아웃: 플래시 메모리의 펌웨어 주소, RAM 할당 및 기타 메모리 관련 매개변수를 구성합니다.
-
-
기능 모듈 토글
-
구성 요소 활성화/비활성화: Bluetooth, Wi-Fi, AI 서비스 등 특정 기능 모듈을 프로젝트에 포함할지 제어해 불필요한 코드를 줄입니다.
-
옵션 구성: OTA 업데이트 기능을 활성화할지 지정합니다.
-
platform 및 platform_config.yaml
platform 디렉터리에는 툴체인 저장소가 있습니다. 각 저장소는 다음을 구현해야 합니다.
-
하드웨어 추상화 계층(HAL)
ESP32, BK7231N, T5AI와 같은 다양한 칩 아키텍처에서 GPIO, UART, SPI, Bluetooth, Wi-Fi 프로토콜 스택 등 하위 드라이버 구현을 추상화합니다. 따라서 애플리케이션은 하드웨어별 차이를 직접 처리하지 않아도 됩니다.
-
통합 API
hal_gpio_read()및hal_uart_send()와 같은 표준화된 인터페이스를 정의해 상위 계층 코드(예:app폴더의 애플리케이션 로직)가 동일한 방식으로 하드웨어 기능을 호출할 수 있도록 합니다.
-
툴체인 저장소는 많은 저장 공간을 차지하므로 필요한 경우 프로젝트에서 구성한 툴체인만 다운로드합니다.
-
툴체인 다운로드에 필요한
git관련 정보는platform_config.yaml파일에 기록됩니다.
boards
boards 폴더에는 주로 개발 보드와 관련된 구성 파일 및 지원 코드가 저장됩니다. 핵심 기능은 다양한 하드웨어 플랫폼에 맞게 조정해 TuyaOpen 프레임워크가 여러 개발 보드에서 올바르게 실행되도록 하는 것입니다.
-
구성 파일
Kconfig파일은 개발자가 칩 또는 개발 보드 기능과 컴파일 매개변수를 맞춤 설정할 수 있도록 구성 가능한 항목을 노출합니다.tos config menu명령을 실행하면 이러한 구성이 자동으로 로드되고 표시됩니다. -
대상 선택
boards폴더에는 다양한 개발 보드(예:T2.config,T3.config)용 구성 파일이 있습니다. 파일은 대상 보드의 하드웨어 매개변수(예: UART 보드레이트, 핀 할당, 메모리 레이아웃)를 정의합니다. 컴파일할 때tos.py config choice명령을 실행해 구성을 선택합니다. -
하드웨어 적응
boards디렉터리는 칩별(T2, T3, T5AI, ESP32 등) 하위 드라이버 적응 코드와 컴파일 스크립트를 제공해 프레임워크가 UART, GPIO, SPI 등 하드웨어 주변 장치와 올바르게 상호 작용하도록 합니다.
tos.py 및 export.sh
-
tos.py는 개발 워크플로를 간소화하고 프로젝트 구성을 관리하며 컴파일 및 배포 작업을 실행하는 핵심 명령줄 도구입니다. 자세한 내용은 CLI - tos.py 개발 도구를 참조하세요. -
export.sh와export.bat는tos.py의 명령줄 기능을 활성화하는 데 사용됩니다.
tools
개발, 컴파일, 테스트, 배포에 사용하는 도구 스크립트, 유틸리티 및 구성 파일을 저장합니다.
-
컴파일 및 빌드 도구
-
프로젝트 빌드 스크립트: 펌웨어를 컴파일하고 바이너리 파일을 생성하는 스크립트입니다. 예를 들어 Makefile, CMakeLists.txt 또는 사용자 지정 Python 스크립트가 있습니다.
-
펌웨어 패키징 도구: 컴파일된 코드와 구성 파일을
.bin,.ota와 같이 배포 가능한 펌웨어 형식으로 패키징합니다.
-
-
개발 유틸리티
-
플래싱 도구: 하드웨어에 펌웨어를 플래싱하는
tyutool유틸리티를 제공합니다. -
구성 생성기: 디바이스 구성 파일 생성을 지원합니다.
-
코드 포매터: 코드 스타일의 일관성을 유지하도록 스크립트를 포맷합니다.
-
임시 파일 및 디렉터리
-
.venv: Python 가상 환경이 설치되는 경로입니다. -
.build: 빌드된 펌웨어 파일을 포함하는 출력 디렉터리입니다.