v4.23.0 (#32)
This commit is contained in:
committed by
GitHub
parent
8445792b5e
commit
08f088d3b4
@@ -29,7 +29,7 @@ endif()
|
||||
|
||||
# Set firmware version
|
||||
add_definitions( -DFIRMWARE_VERSION_MAJOR=4 )
|
||||
add_definitions( -DFIRMWARE_VERSION_MINOR=22 )
|
||||
add_definitions( -DFIRMWARE_VERSION_MINOR=23 )
|
||||
add_definitions( -DFIRMWARE_VERSION_REVISION=0 )
|
||||
if(HAILO_BUILD_SERVICE)
|
||||
add_definitions( -DHAILO_SUPPORT_MULTI_PROCESS )
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#define _HAILO_IOCTL_COMMON_H_
|
||||
|
||||
#define HAILO_DRV_VER_MAJOR 4
|
||||
#define HAILO_DRV_VER_MINOR 22
|
||||
#define HAILO_DRV_VER_MINOR 23
|
||||
#define HAILO_DRV_VER_REVISION 0
|
||||
|
||||
#define _STRINGIFY_EXPANDED( x ) #x
|
||||
@@ -354,51 +354,7 @@ struct hailo_fw_control {
|
||||
enum hailo_cpu_id cpu_id;
|
||||
};
|
||||
|
||||
/* structure used in ioctl HAILO_MEMORY_TRANSFER */
|
||||
// Max bar transfer size gotten from ATR0_TABLE_SIZE
|
||||
#define MAX_MEMORY_TRANSFER_LENGTH (4096)
|
||||
|
||||
enum hailo_transfer_direction {
|
||||
TRANSFER_READ = 0,
|
||||
TRANSFER_WRITE,
|
||||
|
||||
/** Max enum value to maintain ABI Integrity */
|
||||
TRANSFER_MAX_ENUM = INT_MAX,
|
||||
};
|
||||
|
||||
enum hailo_transfer_memory_type {
|
||||
HAILO_TRANSFER_DEVICE_DIRECT_MEMORY,
|
||||
|
||||
// vDMA memories
|
||||
HAILO_TRANSFER_MEMORY_VDMA0 = 0x100,
|
||||
HAILO_TRANSFER_MEMORY_VDMA1,
|
||||
HAILO_TRANSFER_MEMORY_VDMA2,
|
||||
|
||||
// PCIe driver memories
|
||||
HAILO_TRANSFER_MEMORY_PCIE_BAR0 = 0x200,
|
||||
HAILO_TRANSFER_MEMORY_PCIE_BAR2 = 0x202,
|
||||
HAILO_TRANSFER_MEMORY_PCIE_BAR4 = 0x204,
|
||||
|
||||
// DRAM DMA driver memories
|
||||
HAILO_TRANSFER_MEMORY_DMA_ENGINE0 = 0x300,
|
||||
HAILO_TRANSFER_MEMORY_DMA_ENGINE1,
|
||||
HAILO_TRANSFER_MEMORY_DMA_ENGINE2,
|
||||
|
||||
// PCIe EP driver memories
|
||||
HAILO_TRANSFER_MEMORY_PCIE_EP_CONFIG = 0x400,
|
||||
HAILO_TRANSFER_MEMORY_PCIE_EP_BRIDGE,
|
||||
|
||||
/** Max enum value to maintain ABI Integrity */
|
||||
HAILO_TRANSFER_MEMORY_MAX_ENUM = INT_MAX,
|
||||
};
|
||||
|
||||
struct hailo_memory_transfer_params {
|
||||
enum hailo_transfer_direction transfer_direction; // in
|
||||
enum hailo_transfer_memory_type memory_type; // in
|
||||
uint64_t address; // in
|
||||
size_t count; // in
|
||||
uint8_t buffer[MAX_MEMORY_TRANSFER_LENGTH]; // in/out
|
||||
};
|
||||
|
||||
/* structure used in ioctl HAILO_VDMA_BUFFER_SYNC */
|
||||
enum hailo_vdma_buffer_sync_type {
|
||||
@@ -576,7 +532,7 @@ struct tCompatibleHailoIoctlData
|
||||
tCompatibleHailoIoctlParam Parameters;
|
||||
ULONG_PTR Value;
|
||||
union {
|
||||
struct hailo_memory_transfer_params MemoryTransfer;
|
||||
|
||||
struct hailo_vdma_enable_channels_params VdmaEnableChannels;
|
||||
struct hailo_vdma_disable_channels_params VdmaDisableChannels;
|
||||
struct hailo_vdma_interrupts_read_timestamp_params VdmaInterruptsReadTimestamps;
|
||||
@@ -606,15 +562,13 @@ struct tCompatibleHailoIoctlData
|
||||
#pragma pack(pop)
|
||||
|
||||
enum hailo_general_ioctl_code {
|
||||
HAILO_MEMORY_TRANSFER_CODE,
|
||||
HAILO_QUERY_DEVICE_PROPERTIES_CODE,
|
||||
HAILO_QUERY_DRIVER_INFO_CODE,
|
||||
HAILO_QUERY_DEVICE_PROPERTIES_CODE = 1,
|
||||
HAILO_QUERY_DRIVER_INFO_CODE = 2,
|
||||
|
||||
// Must be last
|
||||
HAILO_GENERAL_IOCTL_MAX_NR,
|
||||
};
|
||||
|
||||
#define HAILO_MEMORY_TRANSFER _IOWR_(HAILO_GENERAL_IOCTL_MAGIC, HAILO_MEMORY_TRANSFER_CODE, struct hailo_memory_transfer_params)
|
||||
#define HAILO_QUERY_DEVICE_PROPERTIES _IOW_(HAILO_GENERAL_IOCTL_MAGIC, HAILO_QUERY_DEVICE_PROPERTIES_CODE, struct hailo_device_properties)
|
||||
#define HAILO_QUERY_DRIVER_INFO _IOW_(HAILO_GENERAL_IOCTL_MAGIC, HAILO_QUERY_DRIVER_INFO_CODE, struct hailo_driver_info)
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
# set(CMAKE_C_CLANG_TIDY "clang-tidy;-checks=*")
|
||||
|
||||
set(HAILORT_MAJOR_VERSION 4)
|
||||
set(HAILORT_MINOR_VERSION 22)
|
||||
set(HAILORT_MINOR_VERSION 23)
|
||||
set(HAILORT_REVISION_VERSION 0)
|
||||
|
||||
# Add the cmake folder so the modules there are found
|
||||
|
||||
@@ -4,7 +4,7 @@ project(gsthailo)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
# GST_PLUGIN_DEFINE needs PACKAGE to be defined
|
||||
set(GST_HAILO_PACKAGE_NAME "hailo")
|
||||
|
||||
@@ -43,7 +43,7 @@ def _verify_pyhailort_lib_exists():
|
||||
|
||||
_verify_pyhailort_lib_exists()
|
||||
|
||||
__version__ = "4.22.0"
|
||||
__version__ = "4.23.0"
|
||||
if _pyhailort.__version__ != __version__:
|
||||
raise ImportError(
|
||||
f"_pyhailort version ({_pyhailort.__version__}) does not match pyhailort version ({__version__})"
|
||||
|
||||
@@ -1588,7 +1588,7 @@ class HailoFormatFlags(_pyhailort.FormatFlags):
|
||||
|
||||
SUPPORTED_PROTOCOL_VERSION = 2
|
||||
SUPPORTED_FW_MAJOR = 4
|
||||
SUPPORTED_FW_MINOR = 22
|
||||
SUPPORTED_FW_MINOR = 23
|
||||
SUPPORTED_FW_REVISION = 0
|
||||
|
||||
MEGA_MULTIPLIER = 1000.0 * 1000.0
|
||||
|
||||
@@ -146,6 +146,6 @@ if __name__ == "__main__":
|
||||
"linux_aarch64",
|
||||
],
|
||||
url="https://hailo.ai/",
|
||||
version="4.22.0",
|
||||
version="4.23.0",
|
||||
zip_safe=False,
|
||||
)
|
||||
|
||||
@@ -76,7 +76,7 @@ if(LIBHAILORT_PATH AND HAILORT_INCLUDE_DIR)
|
||||
_pyhailort
|
||||
PUBLIC
|
||||
HAILORT_MAJOR_VERSION=4
|
||||
HAILORT_MINOR_VERSION=22
|
||||
HAILORT_MINOR_VERSION=23
|
||||
HAILORT_REVISION_VERSION=0
|
||||
)
|
||||
set_target_properties(
|
||||
@@ -88,7 +88,7 @@ if(LIBHAILORT_PATH AND HAILORT_INCLUDE_DIR)
|
||||
elseif(LIBHAILORT_PATH OR HAILORT_INCLUDE_DIR)
|
||||
message(FATAL_ERROR "Both LIBHAILORT_PATH and HAILORT_INCLUDE_DIR must be defined or none of them. LIBHAILORT_PATH: '${LIBHAILORT_PATH}', HAILORT_INCLUDE_DIR: '${HAILORT_INCLUDE_DIR}'")
|
||||
else()
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
target_link_libraries(_pyhailort PRIVATE HailoRT::libhailort)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(data_quantization_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(infer_pipeline_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(multi_device_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
find_package(Threads REQUIRED)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(multi_network_vstream_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(notification_callback_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(power_measurement_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(raw_async_streams_single_thread_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(raw_streams_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(switch_network_groups_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(switch_network_groups_manually_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(vstreams_example.c PROPERTIES LANGUAGE C)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_async_infer_advanced_example async_infer_advanced_example.cpp)
|
||||
target_link_libraries(cpp_async_infer_advanced_example PRIVATE HailoRT::libhailort)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_async_infer_basic_example async_infer_basic_example.cpp)
|
||||
target_link_libraries(cpp_async_infer_basic_example PRIVATE HailoRT::libhailort)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_infer_pipeline_example infer_pipeline_example.cpp)
|
||||
target_link_libraries(cpp_infer_pipeline_example PRIVATE HailoRT::libhailort)
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_multi_device_example multi_device_example.cpp)
|
||||
target_link_libraries(cpp_multi_device_example PRIVATE HailoRT::libhailort Threads::Threads)
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
find_package(Threads REQUIRED)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_multi_network_vstream_example multi_network_vstream_example.cpp)
|
||||
target_link_libraries(cpp_multi_network_vstream_example PRIVATE HailoRT::libhailort Threads::Threads)
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_multi_process_example multi_process_example.cpp)
|
||||
target_link_libraries(cpp_multi_process_example PRIVATE HailoRT::libhailort Threads::Threads)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_notification_callback_example notification_callback_example.cpp)
|
||||
target_link_libraries(cpp_notification_callback_example PRIVATE HailoRT::libhailort)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_power_measurement_example power_measurement_example.cpp)
|
||||
target_link_libraries(cpp_power_measurement_example PRIVATE HailoRT::libhailort)
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_raw_async_streams_multi_thread_example raw_async_streams_multi_thread_example.cpp)
|
||||
target_link_libraries(cpp_raw_async_streams_multi_thread_example PRIVATE HailoRT::libhailort Threads::Threads)
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_raw_async_streams_single_thread_example raw_async_streams_single_thread_example.cpp)
|
||||
target_link_libraries(cpp_raw_async_streams_single_thread_example PRIVATE HailoRT::libhailort Threads::Threads)
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_raw_streams_example raw_streams_example.cpp)
|
||||
target_link_libraries(cpp_raw_streams_example PRIVATE HailoRT::libhailort Threads::Threads)
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_switch_network_groups_example switch_network_groups_example.cpp)
|
||||
target_link_libraries(cpp_switch_network_groups_example PRIVATE HailoRT::libhailort Threads::Threads)
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
find_package(Threads REQUIRED)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_switch_network_groups_manually_example switch_network_groups_manually_example.cpp)
|
||||
target_link_libraries(cpp_switch_network_groups_manually_example PRIVATE HailoRT::libhailort Threads::Threads)
|
||||
|
||||
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(HailoRT 4.22.0 EXACT REQUIRED)
|
||||
find_package(HailoRT 4.23.0 EXACT REQUIRED)
|
||||
|
||||
add_executable(cpp_vstreams_example vstreams_example.cpp)
|
||||
target_link_libraries(cpp_vstreams_example PRIVATE HailoRT::libhailort Threads::Threads)
|
||||
|
||||
@@ -89,39 +89,7 @@ static enum hailo_cpu_id translate_cpu_id(hailo_cpu_id_t cpu_id)
|
||||
return HAILO_CPU_ID_NONE;
|
||||
}
|
||||
|
||||
static hailo_transfer_memory_type translate_memory_type(HailoRTDriver::MemoryType memory_type)
|
||||
{
|
||||
using MemoryType = HailoRTDriver::MemoryType;
|
||||
switch (memory_type) {
|
||||
case MemoryType::DIRECT_MEMORY:
|
||||
return HAILO_TRANSFER_DEVICE_DIRECT_MEMORY;
|
||||
case MemoryType::VDMA0:
|
||||
return HAILO_TRANSFER_MEMORY_VDMA0;
|
||||
case MemoryType::VDMA1:
|
||||
return HAILO_TRANSFER_MEMORY_VDMA1;
|
||||
case MemoryType::VDMA2:
|
||||
return HAILO_TRANSFER_MEMORY_VDMA2;
|
||||
case MemoryType::PCIE_BAR0:
|
||||
return HAILO_TRANSFER_MEMORY_PCIE_BAR0;
|
||||
case MemoryType::PCIE_BAR2:
|
||||
return HAILO_TRANSFER_MEMORY_PCIE_BAR2;
|
||||
case MemoryType::PCIE_BAR4:
|
||||
return HAILO_TRANSFER_MEMORY_PCIE_BAR4;
|
||||
case MemoryType::DMA_ENGINE0:
|
||||
return HAILO_TRANSFER_MEMORY_DMA_ENGINE0;
|
||||
case MemoryType::DMA_ENGINE1:
|
||||
return HAILO_TRANSFER_MEMORY_DMA_ENGINE1;
|
||||
case MemoryType::DMA_ENGINE2:
|
||||
return HAILO_TRANSFER_MEMORY_DMA_ENGINE2;
|
||||
case MemoryType::PCIE_EP_CONFIG:
|
||||
return HAILO_TRANSFER_MEMORY_PCIE_EP_CONFIG;
|
||||
case MemoryType::PCIE_EP_BRIDGE:
|
||||
return HAILO_TRANSFER_MEMORY_PCIE_EP_BRIDGE;
|
||||
}
|
||||
|
||||
assert(false);
|
||||
return HAILO_TRANSFER_MEMORY_MAX_ENUM;
|
||||
}
|
||||
|
||||
static hailo_dma_data_direction direction_to_dma_data_direction(HailoRTDriver::DmaDirection direction) {
|
||||
switch (direction) {
|
||||
@@ -352,52 +320,20 @@ Expected<std::vector<HailoRTDriver::DeviceInfo>> HailoRTDriver::scan_devices(Acc
|
||||
|
||||
hailo_status HailoRTDriver::read_memory(MemoryType memory_type, uint64_t address, void *buf, size_t size)
|
||||
{
|
||||
if (size == 0) {
|
||||
LOGGER__ERROR("Invalid size to read");
|
||||
return HAILO_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
if (buf == nullptr) {
|
||||
LOGGER__ERROR("Read buffer pointer is NULL");
|
||||
return HAILO_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
constexpr uint32_t CHUNK_SIZE = ARRAY_ENTRIES(hailo_memory_transfer_params::buffer);
|
||||
uint32_t offset = 0;
|
||||
|
||||
while (offset < size) {
|
||||
const uint32_t actual_size = std::min(CHUNK_SIZE, static_cast<uint32_t>(size) - offset);
|
||||
auto status = read_memory_ioctl(memory_type, address + offset,
|
||||
reinterpret_cast<uint8_t*>(buf) + offset, actual_size);
|
||||
CHECK_SUCCESS(status);
|
||||
offset += actual_size;
|
||||
}
|
||||
return HAILO_SUCCESS;
|
||||
(void)memory_type;
|
||||
(void)address;
|
||||
(void)buf;
|
||||
(void)size;
|
||||
return HAILO_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
hailo_status HailoRTDriver::write_memory(MemoryType memory_type, uint64_t address, const void *buf, size_t size)
|
||||
{
|
||||
if (size == 0) {
|
||||
LOGGER__ERROR("Invalid size to read");
|
||||
return HAILO_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
if (buf == nullptr) {
|
||||
LOGGER__ERROR("Read buffer pointer is NULL");
|
||||
return HAILO_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
constexpr uint32_t CHUNK_SIZE = ARRAY_ENTRIES(hailo_memory_transfer_params::buffer);
|
||||
uint32_t offset = 0;
|
||||
|
||||
while (offset < size) {
|
||||
const uint32_t actual_size = std::min(CHUNK_SIZE, static_cast<uint32_t>(size) - offset);
|
||||
auto status = write_memory_ioctl(memory_type, address + offset,
|
||||
reinterpret_cast<const uint8_t*>(buf) + offset, actual_size);
|
||||
CHECK_SUCCESS(status);
|
||||
offset += actual_size;
|
||||
}
|
||||
return HAILO_SUCCESS;
|
||||
(void)memory_type;
|
||||
(void)address;
|
||||
(void)buf;
|
||||
(void)size;
|
||||
return HAILO_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
hailo_status HailoRTDriver::vdma_enable_channels(const ChannelsBitmap &channels_bitmap, bool enable_timestamps_measure)
|
||||
@@ -916,56 +852,9 @@ int HailoRTDriver::run_ioctl(uint32_t ioctl_code, PointerType param)
|
||||
#error "Unsupported platform"
|
||||
#endif
|
||||
|
||||
hailo_status HailoRTDriver::read_memory_ioctl(MemoryType memory_type, uint64_t address, void *buf, size_t size)
|
||||
{
|
||||
CHECK(size != 0, HAILO_INVALID_ARGUMENT, "Invalid size to read");
|
||||
CHECK(buf != nullptr, HAILO_INVALID_ARGUMENT, "Read buffer pointer is NULL");
|
||||
|
||||
if (m_dma_type == DmaType::PCIE) {
|
||||
CHECK(address < std::numeric_limits<uint32_t>::max(), HAILO_INVALID_ARGUMENT, "Address out of range {}", address);
|
||||
}
|
||||
|
||||
hailo_memory_transfer_params transfer{};
|
||||
transfer.transfer_direction = TRANSFER_READ;
|
||||
transfer.memory_type = translate_memory_type(memory_type);
|
||||
transfer.address = address;
|
||||
transfer.count = size;
|
||||
memset(transfer.buffer, 0, sizeof(transfer.buffer));
|
||||
|
||||
CHECK(size <= sizeof(transfer.buffer), HAILO_INVALID_ARGUMENT,
|
||||
"Invalid size to read, size given {} is larger than max size {}", size, sizeof(transfer.buffer));
|
||||
|
||||
RUN_AND_CHECK_IOCTL_RESULT(HAILO_MEMORY_TRANSFER, &transfer, "Failed read memory");
|
||||
|
||||
memcpy(buf, transfer.buffer, transfer.count);
|
||||
|
||||
return HAILO_SUCCESS;
|
||||
}
|
||||
|
||||
hailo_status HailoRTDriver::write_memory_ioctl(MemoryType memory_type, uint64_t address, const void *buf, size_t size)
|
||||
{
|
||||
CHECK(size != 0, HAILO_INVALID_ARGUMENT, "Invalid size to read");
|
||||
CHECK(buf != nullptr, HAILO_INVALID_ARGUMENT, "Read buffer pointer is NULL");
|
||||
|
||||
if (m_dma_type == DmaType::PCIE) {
|
||||
CHECK(address < std::numeric_limits<uint32_t>::max(), HAILO_INVALID_ARGUMENT, "Address out of range {}", address);
|
||||
}
|
||||
|
||||
hailo_memory_transfer_params transfer{};
|
||||
transfer.transfer_direction = TRANSFER_WRITE;
|
||||
transfer.memory_type = translate_memory_type(memory_type);
|
||||
transfer.address = address;
|
||||
transfer.count = size;
|
||||
memset(transfer.buffer, 0, sizeof(transfer.buffer));
|
||||
|
||||
CHECK(size <= sizeof(transfer.buffer), HAILO_INVALID_ARGUMENT,
|
||||
"Invalid size to write, size given {} is larger than max size {}", size, sizeof(transfer.buffer));
|
||||
|
||||
memcpy(transfer.buffer, buf, transfer.count);
|
||||
|
||||
RUN_AND_CHECK_IOCTL_RESULT(HAILO_MEMORY_TRANSFER, &transfer, "Failed write memory");
|
||||
return HAILO_SUCCESS;
|
||||
}
|
||||
|
||||
#if defined(__linux__) || defined(_WIN32)
|
||||
Expected<HailoRTDriver::VdmaBufferHandle> HailoRTDriver::vdma_buffer_map_ioctl(uintptr_t user_address, size_t required_size,
|
||||
|
||||
@@ -411,8 +411,7 @@ private:
|
||||
template<typename PointerType>
|
||||
int run_ioctl(uint32_t ioctl_code, PointerType param);
|
||||
|
||||
hailo_status read_memory_ioctl(MemoryType memory_type, uint64_t address, void *buf, size_t size);
|
||||
hailo_status write_memory_ioctl(MemoryType memory_type, uint64_t address, const void *buf, size_t size);
|
||||
|
||||
|
||||
Expected<VdmaBufferHandle> vdma_buffer_map_ioctl(uintptr_t user_address, size_t required_size,
|
||||
DmaDirection data_direction, const vdma_mapped_buffer_driver_identifier &driver_buff_handle,
|
||||
|
||||
@@ -37,9 +37,7 @@ int run_hailo_ioctl(underlying_handle_t file, uint32_t ioctl_code, void *param);
|
||||
|
||||
/**
|
||||
* On windows, all IOCTLs shares the same structure for input and output (tCompatibleHailoIoctlData).
|
||||
* To make windows and posix code the same, we need to convert the actual structure type (for example
|
||||
* hailo_memory_transfer_params) to the compatible structure (tCompatibleHailoIoctlData::Buffer::MemoryTransfer).
|
||||
*
|
||||
* To make windows and posix code the same, we need to convert the actual structure type
|
||||
* This template static class is used to covert to compatible (for input parameters) and from compatible (for output
|
||||
* parameters).
|
||||
*/
|
||||
|
||||
@@ -38,19 +38,18 @@ Expected<FileDescriptor> open_device_file(const std::string &path)
|
||||
|
||||
Expected<std::vector<std::string>> list_devices()
|
||||
{
|
||||
std::vector<std::string> devices;
|
||||
DIR *dir_iter = opendir(HAILO_CLASS_PATH);
|
||||
if (!dir_iter) {
|
||||
if (ENOENT == errno) {
|
||||
LOGGER__ERROR("Can't find hailort driver class. Can happen if the driver is not installed, if the kernel was updated or on some driver failure (then read driver dmesg log)");
|
||||
return make_unexpected(HAILO_DRIVER_NOT_INSTALLED);
|
||||
}
|
||||
else {
|
||||
// Hailo chrdev-class does not exist; meaning no devices have been detected by driver.
|
||||
return devices;
|
||||
} else {
|
||||
LOGGER__ERROR("Failed to open hailo pcie class ({}), errno {}", HAILO_CLASS_PATH, errno);
|
||||
return make_unexpected(HAILO_DRIVER_INVALID_RESPONSE);
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<std::string> devices;
|
||||
struct dirent *dir = nullptr;
|
||||
while ((dir = readdir(dir_iter)) != nullptr) {
|
||||
std::string device_name(dir->d_name);
|
||||
|
||||
@@ -291,7 +291,6 @@ Expected<HailoRTDriver::DeviceInfo> query_device_info(const std::string &device_
|
||||
*(param_ptr) = data.Buffer.NameInCompatible; \
|
||||
}
|
||||
|
||||
COMPATIBLE_PARAM_CAST(hailo_memory_transfer_params, MemoryTransfer);
|
||||
COMPATIBLE_PARAM_CAST(hailo_vdma_enable_channels_params, VdmaEnableChannels)
|
||||
COMPATIBLE_PARAM_CAST(hailo_vdma_disable_channels_params, VdmaDisableChannels)
|
||||
COMPATIBLE_PARAM_CAST(hailo_vdma_interrupts_read_timestamp_params, VdmaInterruptsReadTimestamps)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
:: cmd
|
||||
@ECHO OFF
|
||||
set BASE_URI=https://hailo-hailort.s3.eu-west-2.amazonaws.com
|
||||
set HRT_VERSION=4.22.0
|
||||
set HRT_VERSION=4.23.0
|
||||
set REMOTE_HEF_DIR=Hailo8/%HRT_VERSION%/HEFS
|
||||
set LOCAL_EXAMPLES_HEF_DIR=..\libhailort\examples\hefs
|
||||
set LOCAL_TUTORIALS_HEF_DIR=..\libhailort\bindings\python\platform\hailo_tutorials\hefs
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
set -e
|
||||
|
||||
readonly BASE_URI="https://hailo-hailort.s3.eu-west-2.amazonaws.com"
|
||||
readonly HRT_VERSION=4.22.0
|
||||
readonly HRT_VERSION=4.23.0
|
||||
readonly REMOTE_HEF_DIR="Hailo8/${HRT_VERSION}/HEFS"
|
||||
readonly LOCAL_EXAMPLES_HEF_DIR="../libhailort/examples/hefs"
|
||||
readonly LOCAL_TUTORIALS_HEF_DIR="../libhailort/bindings/python/platform/hailo_tutorials/hefs"
|
||||
|
||||
Reference in New Issue
Block a user