diff options
Diffstat (limited to 'applications/message_handler_openamp/main.cpp')
-rw-r--r-- | applications/message_handler_openamp/main.cpp | 70 |
1 files changed, 69 insertions, 1 deletions
diff --git a/applications/message_handler_openamp/main.cpp b/applications/message_handler_openamp/main.cpp index 9d3c074..e281f6e 100644 --- a/applications/message_handler_openamp/main.cpp +++ b/applications/message_handler_openamp/main.cpp @@ -61,8 +61,76 @@ constexpr size_t arenaSize = TENSOR_ARENA_SIZE; * Resource table *****************************************************************************/ +#if defined(REMOTEPROC_TRACE_BUFFER) +#if defined(__ARMCC_VERSION) +extern uint32_t Image$$trace_buffer$$Base; +extern uint32_t Image$$trace_buffer$$Length; +#define __ethosu_core_trace_buffer_start__ Image$$trace_buffer$$Base +#define __ethosu_core_trace_buffer_size__ Image$$trace_buffer$$Length +#else +extern uint32_t __ethosu_core_trace_buffer_start__; +extern uint32_t __ethosu_core_trace_buffer_size__; +#endif +#endif + extern "C" { -__attribute__((section(".resource_table"))) ResourceTable resourceTable(8, arenaSize *NUM_PARALLEL_TASKS); +// clang-format off +__attribute__((section(".resource_table"))) ResourceTable resourceTable = { + // Table + { + ResourceTable::VERSION, + ResourceTable::NUM_RESOURCES, + {ResourceTable::RESERVED, ResourceTable::RESERVED}, + {} + }, + // Offset + { +#if defined(REMOTEPROC_TRACE_BUFFER) + offsetof(ResourceTable, trace), +#endif + offsetof(ResourceTable, vdev), + offsetof(ResourceTable, carveout), + }, + // Trace buffer +#if defined(REMOTEPROC_TRACE_BUFFER) + { + RSC_TRACE, + reinterpret_cast<uint32_t>(&__ethosu_core_trace_buffer_start__), + reinterpret_cast<uint32_t>(&__ethosu_core_trace_buffer_size__), + ResourceTable::RESERVED, + "Trace resource" + }, +#endif + // VDEV + { + RSC_VDEV, + VIRTIO_ID_RPMSG, + 2, // Notify ID + 1 << VIRTIO_RPMSG_F_NS, + 0, + 0, + 0, + ResourceTable::NUM_VRINGS, + {ResourceTable::RESERVED, ResourceTable::RESERVED}, + {} + }, + // Vrings + { + {FW_RSC_U32_ADDR_ANY, ResourceTable::VRING_ALIGN, ResourceTable::VRING_SIZE, 1, ResourceTable::RESERVED}, + {FW_RSC_U32_ADDR_ANY, ResourceTable::VRING_ALIGN, ResourceTable::VRING_SIZE, 2, ResourceTable::RESERVED} + }, + // Carveout + { + RSC_CARVEOUT, + FW_RSC_U32_ADDR_ANY, + FW_RSC_U32_ADDR_ANY, + arenaSize * NUM_PARALLEL_TASKS, + 0, + ResourceTable::RESERVED, + "TFLM arena" + } +}; +// clang-format on } /***************************************************************************** |