본문으로 건너뛰기

TDD/TDL 드라이버 아키텍처

TuyaOpen는 두 층 주변 드라이버 프레임 워크를 사용합니다. ** TDL** (Tuya Driver Layer)는 장치 수명주기를 관리하고 애플리케이션 API를 제공합니다. ** TDD** (Tuya Device Driver)는 칩 별 하드웨어 액세스를 구현합니다. 이 분리는 애플리케이션 코드를 변경하지 않고 새로운 하드웨어를 추가 할 수 있습니다.

층 개요

제품정보연락처제품정보누가 그것을 쓰고
**TDL **tdl_*장치 관리, 등록, 응용 APITuyaOpen SDK (당신은 거의 이것을 수정)
**TDD **tdd_*TDL 인터페이스를 구현하는 하드웨어 별 드라이버새로운 센서/display/codec를 추가할 때
**TKL **tkl_*플랫폼 요약 (GPIO, I2C, SPI, UART)플랫폼 어댑터 (칩당)

등록 패턴

모든 주변 범주는 동일한 패턴을 따릅니다 :

1. TDL는 공용영역 struct를 정의합니다

typedef struct {
OPERATE_RET (*create)(TDL_OPRT_INFO *dev);
OPERATE_RET (*delete)(TDL_OPRT_INFO *dev);
OPERATE_RET (*read_value)(TDL_OPRT_INFO *dev, uint8_t *value);
} TDL_BUTTON_CTRL_INFO;

2. TDD는 공용영역과 기록기를 실행합니다

OPERATE_RET tdd_gpio_button_register(char *name, BUTTON_GPIO_CFG_T *cfg)
{
TDL_BUTTON_CTRL_INFO ctrl = {
.create = __tdd_create_gpio_button,
.delete = __tdd_delete_gpio_button,
.read_value = __tdd_read_gpio_value,
};
return tdl_button_register(name, &ctrl, &device_info);
}

3. 이사회 init 호출 TDD 등록

void board_register_hardware(void)
{
BUTTON_GPIO_CFG_T btn_cfg = {
.pin = BOARD_BUTTON_PIN,
.level = BOARD_BUTTON_ACTIVE_LV,
.mode = BUTTON_IRQ_MODE,
};
tdd_gpio_button_register("power_btn", &btn_cfg);
}

4. 신청은 TDL 전용을 이용합니다

board_register_hardware();

TDL_BUTTON_HANDLE handle;
TDL_BUTTON_CFG_T cfg = { .long_start_valid_time = 3000 };
tdl_button_create("power_btn", &cfg, &handle);
tdl_button_event_register(handle, TDL_BUTTON_PRESS_DOWN, my_callback);

관련 분류

(주)TDL 헤더TDD 예제소스 경로
이름 *tdl_button_driver.htdd_button_gpiosrc/peripherals/button/
주도하는tdl_led_driver.htdd_led_gpiosrc/peripherals/led/
LED 화소tdl_pixel_driver.htdd_ws2812, tdd_sm16703psrc/peripherals/leds_pixel/
제품정보tdl_display_driver.htdd_disp_spi, tdd_disp_rgbsrc/peripherals/display/
언어: 영어tdl_audio_driver.htdd_audio(T5AI),tdd_audio_alsasrc/peripherals/audio_codecs/
제품정보tdl_camera_driver.htdd_camera_dvp_ov2640src/peripherals/camera/
제품정보tdl_tp_driver.htdd_tp_i2c_ft6336, tdd_tp_i2c_gt911src/peripherals/tp/
IR정보tdl_ir_driver.htdd_ir_driversrc/peripherals/ir/
조이스틱tdl_joystick_driver.htdd_joysticksrc/peripherals/joystick/
관련 상품tdl_transport_driver.htdd_transport_uartsrc/peripherals/transport/

TDL/TDD 없는 주변

일부 주변 장치 사용 직접 TKL 호출 없이 등록 프레임 워크:

회사 소개제품 정보이름 *
이뮤 (BMI270)벤더 라이브러리 +tkl_i2c_*examples/peripherals/imu/bmi270/
지원하다회사 소개drv_encodersrc/peripherals/encoder/
SHT3x/SHT4x의직접 I2C 읽기examples/peripherals/i2c/sht3x_4x_sensor/
PMIC (AXP2101)공급 업체src/peripherals/pmic/axp2101/

간단한 센서 (온도, 습도, 압력), 당신은 일반적으로 TDL / TDD 층을 만들기보다 TKL I2C를 직접 사용합니다. 이름 *새로운 센서 드라이버 작성.

Kconfig 통합

각 주변은 Kconfig toggle에 의해 문질러boards/{platform}/TKL_Kconfig:

config ENABLE_BUTTON
bool
default n

config ENABLE_LED
bool
default n

Board-specific Kconfig 파일을 선택하면 주변을 활성화할 수 있습니다:

config BOARD_CONFIG
select ENABLE_BUTTON
select ENABLE_LED
select ENABLE_AUDIO

빌드 시스템은 활성화된 TDD 드라이버만 컴파일합니다.

더 보기