mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-01 19:54:32 +02:00
test(isp_dvp): added isp_dvp test
This commit is contained in:
@@ -3,3 +3,9 @@ components/esp_driver_cam/test_apps/csi:
|
|||||||
- if: SOC_MIPI_CSI_SUPPORTED != 1
|
- if: SOC_MIPI_CSI_SUPPORTED != 1
|
||||||
depends_components:
|
depends_components:
|
||||||
- esp_driver_cam
|
- esp_driver_cam
|
||||||
|
|
||||||
|
components/esp_driver_cam/test_apps/isp_dvp:
|
||||||
|
disable:
|
||||||
|
- if: SOC_ISP_DVP_SUPPORTED != 1
|
||||||
|
depends_components:
|
||||||
|
- esp_driver_cam
|
||||||
|
@@ -0,0 +1,6 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
|
set(COMPONENTS main)
|
||||||
|
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
project(test_isp_dvp)
|
2
components/esp_driver_cam/test_apps/isp_dvp/README.md
Normal file
2
components/esp_driver_cam/test_apps/isp_dvp/README.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
| Supported Targets | ESP32-P4 |
|
||||||
|
| ----------------- | -------- |
|
@@ -0,0 +1,16 @@
|
|||||||
|
set(srcs "test_app_main.c")
|
||||||
|
|
||||||
|
if(CONFIG_SOC_ISP_DVP_SUPPORTED)
|
||||||
|
list(APPEND srcs "test_isp_dvp_driver.c")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(priv_requires
|
||||||
|
unity
|
||||||
|
esp_driver_cam
|
||||||
|
esp_psram
|
||||||
|
)
|
||||||
|
|
||||||
|
idf_component_register(SRCS ${srcs}
|
||||||
|
INCLUDE_DIRS "."
|
||||||
|
PRIV_REQUIRES ${priv_requires}
|
||||||
|
WHOLE_ARCHIVE TRUE)
|
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: CC0-1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "unity.h"
|
||||||
|
#include "unity_test_utils.h"
|
||||||
|
#include "esp_heap_caps.h"
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
|
#define TEST_MEMORY_LEAK_THRESHOLD (400)
|
||||||
|
|
||||||
|
void setUp(void)
|
||||||
|
{
|
||||||
|
unity_utils_record_free_mem();
|
||||||
|
}
|
||||||
|
|
||||||
|
void tearDown(void)
|
||||||
|
{
|
||||||
|
unity_utils_evaluate_leaks_direct(TEST_MEMORY_LEAK_THRESHOLD);
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_main(void)
|
||||||
|
{
|
||||||
|
unity_run_menu();
|
||||||
|
}
|
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
#include "unity.h"
|
||||||
|
#include "esp_cam_ctlr_isp_dvp.h"
|
||||||
|
#include "esp_cam_ctlr.h"
|
||||||
|
#include "driver/isp.h"
|
||||||
|
|
||||||
|
TEST_CASE("ISP DVP controller exhausted allocation", "[isp]")
|
||||||
|
{
|
||||||
|
esp_isp_processor_cfg_t isp_config = {
|
||||||
|
.clk_hz = 120 * 1000 * 1000,
|
||||||
|
.input_data_source = ISP_INPUT_DATA_SOURCE_DVP,
|
||||||
|
.input_data_color_type = ISP_COLOR_RAW8,
|
||||||
|
.output_data_color_type = ISP_COLOR_RGB565,
|
||||||
|
.has_line_start_packet = false,
|
||||||
|
.has_line_end_packet = false,
|
||||||
|
.h_res = 800,
|
||||||
|
.v_res = 640,
|
||||||
|
};
|
||||||
|
isp_proc_handle_t isp_proc = NULL;
|
||||||
|
TEST_ESP_OK(esp_isp_new_processor(&isp_config, &isp_proc));
|
||||||
|
|
||||||
|
esp_cam_ctlr_isp_dvp_cfg_t dvp_ctlr_config = {
|
||||||
|
.data_width = 8,
|
||||||
|
.data_io = {53, 54, 52, 0, 1, 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, -1},
|
||||||
|
.pclk_io = 21,
|
||||||
|
.hsync_io = 5,
|
||||||
|
.vsync_io = 23,
|
||||||
|
.de_io = 22,
|
||||||
|
.io_flags.vsync_invert = 1,
|
||||||
|
.queue_items = 10,
|
||||||
|
};
|
||||||
|
esp_cam_ctlr_handle_t dvp_ctrlr[SOC_ISP_DVP_CTLR_NUMS + 1] = {};
|
||||||
|
for (int i = 0; i < SOC_ISP_DVP_CTLR_NUMS; i++) {
|
||||||
|
TEST_ESP_OK(esp_cam_new_isp_dvp_ctlr(isp_proc, &dvp_ctlr_config, &dvp_ctrlr[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_ASSERT(esp_cam_new_isp_dvp_ctlr(isp_proc, &dvp_ctlr_config, &dvp_ctrlr[SOC_ISP_DVP_CTLR_NUMS]) == ESP_ERR_NOT_FOUND);
|
||||||
|
|
||||||
|
for (int i = 0; i < SOC_ISP_DVP_CTLR_NUMS; i++) {
|
||||||
|
TEST_ESP_OK(esp_cam_ctlr_del(dvp_ctrlr[i]));
|
||||||
|
}
|
||||||
|
TEST_ESP_OK(esp_isp_del_processor(isp_proc));
|
||||||
|
}
|
@@ -0,0 +1,10 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
import pytest
|
||||||
|
from pytest_embedded import Dut
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.esp32p4
|
||||||
|
@pytest.mark.generic
|
||||||
|
def test_isp_dvp(dut: Dut) -> None:
|
||||||
|
dut.run_all_single_board_cases()
|
@@ -7,7 +7,6 @@
|
|||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
#include "unity.h"
|
#include "unity.h"
|
||||||
#include "driver/isp.h"
|
#include "driver/isp.h"
|
||||||
#include "esp_private/isp_dvp_private.h"
|
|
||||||
#include "soc/soc_caps.h"
|
#include "soc/soc_caps.h"
|
||||||
|
|
||||||
TEST_CASE("ISP processor exhausted allocation", "[isp]")
|
TEST_CASE("ISP processor exhausted allocation", "[isp]")
|
||||||
@@ -31,45 +30,6 @@ TEST_CASE("ISP processor exhausted allocation", "[isp]")
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SOC_ISP_DVP_SUPPORTED
|
|
||||||
TEST_CASE("ISP DVP controller exhausted allocation", "[isp]")
|
|
||||||
{
|
|
||||||
esp_isp_processor_cfg_t isp_config = {
|
|
||||||
.clk_hz = 120 * 1000 * 1000,
|
|
||||||
.input_data_source = ISP_INPUT_DATA_SOURCE_DVP,
|
|
||||||
.input_data_color_type = ISP_COLOR_RAW8,
|
|
||||||
.output_data_color_type = ISP_COLOR_RGB565,
|
|
||||||
.has_line_start_packet = false,
|
|
||||||
.has_line_end_packet = false,
|
|
||||||
.h_res = 800,
|
|
||||||
.v_res = 640,
|
|
||||||
};
|
|
||||||
isp_proc_handle_t isp_proc = NULL;
|
|
||||||
TEST_ESP_OK(esp_isp_new_processor(&isp_config, &isp_proc));
|
|
||||||
|
|
||||||
esp_cam_ctlr_isp_dvp_cfg_t dvp_ctlr_config = {
|
|
||||||
.data_width = 8,
|
|
||||||
.data_io = {53, 54, 52, 0, 1, 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
.pclk_io = 21,
|
|
||||||
.hsync_io = 5,
|
|
||||||
.vsync_io = 23,
|
|
||||||
.de_io = 22,
|
|
||||||
.io_flags.vsync_invert = 1,
|
|
||||||
};
|
|
||||||
esp_cam_ctlr_handle_t dvp_ctrlr[SOC_ISP_DVP_CTLR_NUMS + 1] = {};
|
|
||||||
for (int i = 0; i < SOC_ISP_DVP_CTLR_NUMS; i++) {
|
|
||||||
TEST_ESP_OK(esp_isp_new_dvp_controller(isp_proc, &dvp_ctlr_config, &dvp_ctrlr[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_ASSERT(esp_isp_new_dvp_controller(isp_proc, &dvp_ctlr_config, &dvp_ctrlr[SOC_ISP_DVP_CTLR_NUMS]) == ESP_ERR_NOT_FOUND);
|
|
||||||
|
|
||||||
for (int i = 0; i < SOC_ISP_DVP_CTLR_NUMS; i++) {
|
|
||||||
TEST_ESP_OK(esp_isp_del_dvp_controller(dvp_ctrlr[i]));
|
|
||||||
}
|
|
||||||
TEST_ESP_OK(esp_isp_del_processor(isp_proc));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TEST_CASE("ISP AF controller exhausted allocation", "[isp]")
|
TEST_CASE("ISP AF controller exhausted allocation", "[isp]")
|
||||||
{
|
{
|
||||||
esp_isp_processor_cfg_t isp_config = {
|
esp_isp_processor_cfg_t isp_config = {
|
||||||
|
Reference in New Issue
Block a user