본문으로 건너뛰기

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/ # 공통 유틸리티 함수

appsexamples

두 디렉터리 모두 프로젝트를 저장하는 경로입니다.

  • 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 업데이트 기능을 활성화할지 지정합니다.

platformplatform_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.pyexport.sh

  • tos.py는 개발 워크플로를 간소화하고 프로젝트 구성을 관리하며 컴파일 및 배포 작업을 실행하는 핵심 명령줄 도구입니다. 자세한 내용은 CLI - tos.py 개발 도구를 참조하세요.

  • export.shexport.battos.py의 명령줄 기능을 활성화하는 데 사용됩니다.

tools

개발, 컴파일, 테스트, 배포에 사용하는 도구 스크립트, 유틸리티 및 구성 파일을 저장합니다.

  • 컴파일 및 빌드 도구

    • 프로젝트 빌드 스크립트: 펌웨어를 컴파일하고 바이너리 파일을 생성하는 스크립트입니다. 예를 들어 Makefile, CMakeLists.txt 또는 사용자 지정 Python 스크립트가 있습니다.

    • 펌웨어 패키징 도구: 컴파일된 코드와 구성 파일을 .bin, .ota와 같이 배포 가능한 펌웨어 형식으로 패키징합니다.

  • 개발 유틸리티

    • 플래싱 도구: 하드웨어에 펌웨어를 플래싱하는 tyutool 유틸리티를 제공합니다.

    • 구성 생성기: 디바이스 구성 파일 생성을 지원합니다.

    • 코드 포매터: 코드 스타일의 일관성을 유지하도록 스크립트를 포맷합니다.

임시 파일 및 디렉터리

  • .venv: Python 가상 환경이 설치되는 경로입니다.

  • .build: 빌드된 펌웨어 파일을 포함하는 출력 디렉터리입니다.