diff options
author | Ledion Daja <ledion.daja@arm.com> | 2023-05-22 10:45:31 +0200 |
---|---|---|
committer | Ledion Daja <ledion.daja@arm.com> | 2023-06-15 14:01:52 +0200 |
commit | b00e4edccd6314e7b651ad8b9498673cd0656ca7 (patch) | |
tree | c18d6e96d2c948be0fb948ebebc51e8b17332e1f /applications/message_handler_openamp/main.cpp | |
parent | 4db21c986a8aec9a1ee31479fd3ca9806781865f (diff) | |
download | ethos-u-core-platform-b00e4edccd6314e7b651ad8b9498673cd0656ca7.tar.gz |
Add trace resource entry in firmware's resource table
Patch adds an optional trace resource entry which can be enabled via
build flags. This patch also changes the resource table into a plain C
struct, which allows for link time assignment of trace resource address
and size.
Change-Id: I6ca3260eb9b13a9bf511c95cd54c57d554c0d997
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 } /***************************************************************************** |