aboutsummaryrefslogtreecommitdiff
path: root/applications
AgeCommit message (Collapse)Author
2024-04-22Add missing mutex/semaphore destroy overridesJonny Svärd
Override NPU driver weak function prototypes to properly free up resources after use. Change-Id: I4f3141d6106e5feeb1523452ca5fe2dbe66903be Signed-off-by: Jonny Svärd <jonny.svaerd@arm.com>
2024-04-19Fix rpmsg not being zero initializedMikael Olsson
The rpmsg struct used in response messages is not zero initialized so later response messages may contain old data. To resolve this, the rpmsg struct is now zero initialized for each new message. Change-Id: I116fa443eca7b6ec3d8817909fd3c59bd69427cb Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2024-04-18Print useful core_platform build variablesRajasekaran Kalidoss
To make it easier to verify the settings used for a build, additional prints of useful cmake variables has been added to the CmakeLists.txt file. Change-Id: I147144ed9eea07ad2d90e5f7eaa3f665e0220c95 Signed-off-by: Rajasekaran Kalidoss <rajasekaran.kalidoss@arm.com>
2024-04-16Fix zero init of class members in message handlerMikael Olsson
There are instances of class members not being zero initialized in the message handler. To avoid possible issues with using the class members when they have an intermediate value, the constructors have been updated to zero initialize all the member variables. Change-Id: Ib539410a8f1486f8155272731f5cb7006c22ac7a Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2024-04-02Fix semaphore clean up in RProc destructorMikael Olsson
The semaphore created in the RProc constructor is never cleaned up. To resolve this, the destructor will now delete the semaphore. Change-Id: Ib641a87129bacf3d7ba097c4e89aa77fa255e2f8 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2024-04-02Fix Rpmsg constructor not initializing membersMikael Olsson
The constructor for the Rpmsg class does not zero-initialize its member variables. This causes issues with the remoteproc library because it thinks function pointers in the variables are set to valid functions when they are actually just uninitialized values and using these function pointer causes crashes and unexpected behavior. To resolve this, the Rpmsg class constructor has been changed to zero-initialize all its member variables. Change-Id: Ic34fd52bc39ed3018e5f67474949f10adc8cb7a8 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2024-03-21Change tensor arena size to be a power of twoMikael Olsson
The size of the memory used for the message handler's tensor arena will always be rounded up to the next power of two when the Linux kernel allocates it. Therefore, to align the tensor arena size with how the memory is allocated and be able to use the full size allocated, the tensor arena size must now be a power of two. Change-Id: Ib67e77d1ffeb233ad12762a56ddbc20d26c71052 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2024-02-13Update rpmsg type names in message handlerMikael Olsson
With the restructuring of the Linux kernel driver source files, some macros and types in the rpmsg header was renamed to better namespace their usage. The message handler openamp application has been updated accordingly. Change-Id: Ibfc11ced58cddd23463bb2060d658cc9b374e035 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2024-02-12Update kernel rpmsg header path in message handlerMikael Olsson
The source files for the Linux kernel driver has been restructured and the common rpmsg header file has been renamed and moved to an include folder. The message handler openamp application has been updated accordingly to use the new header file. Change-Id: If1c4f5f80dbd87ee1b14103620b1183f6a3e3826 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2024-01-24Change threadx_demo to only build for Corstone-300Mikael Olsson
The threadx_demo is only supported for the Corstone-300 target so a check for the target has been added to the CMake file Change-Id: I2778a85582625239df0b46b9b0bf3abd12c5826f Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2024-01-22Change threadx_demo to use ThreadX lib init fileMikael Olsson
Instead of using its own low level initialization file for ThreadX, the ThreadX demo has been changed to use the one provided by the ThreadX library. The initialization file from the ThreadX library, assumes some specific symbol names are present in the linker script so the script for the Corstone-300 platform, which is the only one that currently supports the ThreadX demo, has been updated accordingly. To still be able to use the HardFault_Handler from the platform target, the handler provided by the ThreadX library is marked as a weak symbol before linking. Change-Id: I757b74bc30e295bc1f7126fc5d9330e381d7a886 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2024-01-16Remove cancel error for inference not in queueMikael Olsson
Currently if the inference to cancel is not found in the inference queue, the message_handler_openamp will response with an error. The inference may already be running and therefore not be in the queue anymore or the inference is already done and the response is in the mailbox queue. In either case, responding with an error when the inference is not in the queue isn't useful so the check has been removed. The Linux kernel driver knows what inferences that are inflight and will track what inferences that have been cancelled and handle it accordingly. Change-Id: I780e0e08a68e458221649bc2cecf7d665adc3c33 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2024-01-16Remove designated initializer usage in remoteprocMikael Olsson
Designated initializer is not part of the C++ standard until C++20 and requires a compiler extension to work in earlier versions. To ensure the message_handler_openamp can be compiled with compilers without this extension the usage has been removed. Change-Id: I97c90df6691302cc470b8538f515a1b1ceb385b9 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2023-12-21Change to accumulate PMU values in message handlerMikael Olsson
Currently the message_handler_openamp overwrites the PMU values in the response message each time operators are offloaded the NPU in an inference request. To instead get the total PMU values for all the times the NPU was used during the inference, the PMU values are now accumulated instead. Change-Id: I7fb8697e441b362f2f6da8a26536ba51d17c6b4c Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2023-12-19Add app support for core_driver inference timeoutJonny Svärd
Update example applications to support new core_driver inference timeout feature. Change-Id: Ib7283421aa8db9a3b5f1dd6d1bd44803491f0399 Signed-off-by: Jonny Svärd <jonny.svaerd@arm.com>
2023-12-15Update message_handler_openamp to use NPU profilerMikael Olsson
The message_handler_openamp application now uses the NPU profiler to use a common way to collect profiling data and report it. Change-Id: Ia2a860c790facc5193aca065636c58e1b5bbef22 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2023-09-28Remove address translation for buffer and carveoutMikael Olsson
Address translation for inference buffers and carveout areas have been removed because the Linux Kernel NPU driver now provides device addresses for them. Change-Id: I71a133ba5ecbb94aa2c225d259e75229b6dbce5b Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2023-09-28Add resource table entry for address translationMikael Olsson
To avoid having to use a hardcoded memory map to translate between the Linux physical addresses and device addresses, a new entry type has been added to the resource table where the host can provide the memory map to use for the translation. Change-Id: I668bba3aeac27c358647c969c5504326e1c91d24 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2023-09-21Set mailbox interrupt priority in message handlerMikael Olsson
When the mailbox interrupt is triggered, the mailbox interrupt handler will invoke the remote processor mailbox callback, which in turn will use FreeRTOS's xSemaphoreGiveFromISR to wake up a task to handle the new message. Until now, the interrupt priority for the mailbox interrupt has been left at its default value but this stopped working since FreeRTOS kernel V10.6.0 because since that version, the ISR functions will only work from an interrupt with the same or lower priority than configMAX_SYSCALL_INTERRUPT_PRIORITY in the FreeRTOS configuration. Therefore, a priority is now set for the mailbox interrupt that is compatible with the FreeRTOS configuration used. Change-Id: I0186fdc9951dfa73a2692ba95530094abb0e4d4a Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
2023-06-15Add trace resource entry in firmware's resource tableLedion Daja
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
2023-03-14Fix SEI CERT coding standard warningsLedion Daja
Change-Id: I47fdf29a50440c82fd9ccf111a846bf87e8a9e29
2023-02-16Update baremetal systick timer handling23.02-rc223.02Kristofer Jonsson
Use the ethosuDrv pointer to signal if the systick handler should be restarted. Change-Id: Id47b37ab773970317ab324b95706ea54d7dcc74a
2023-02-13Don't lock and unlock ThreadX mutex during initializationKristofer Jonsson
Change-Id: Ic308ea6b18dec1a612a198d94de918798f6304f8
2023-02-10Fix size of TFLM arenaKristofer Jonsson
The TFLM arena size was incorrectly surrounded by sizeof(), which caused the arena size to be allocated to only 4 bytes. Change-Id: Iea8c76e0ce434973c9d0a7f696cfb51af49a48fd
2023-02-08Updating message handler firmware23.02-rc1Kristofer Jonsson
The 'message handler' firmware was based on a custom interface between Linux and the firmware. Because the kernel driver has been converted into a rpmsg driver, the 'message handler' application has been updated into an OpenAMP based firmware. Change-Id: I1339180c4f53cbad42501a2827863b7b49561ff4
2023-01-25Change app examples to use counting semaphoreJonny Svärd
Adapt to Ethos-U driver changes Change-Id: I5a10f9166f4d9ac32a1502409e1708ea62844944
2022-12-15Remove ethosu_core and ethosu_applicationsKristofer Jonsson
Interface libraries ethosu_core and ethosu_applications are removed. Each application shall depend directly on the libraries they need. Change-Id: I1721ea0fd3c79e74da5e131a60f7aa24277c99ba
2022-12-14Change modelName to char array in keyword_spotting models' header filesLedion Daja
Change-Id: I06c94d0503f762cf0ad2054c1ef087fefbabe69a
2022-12-14Remove duplicate linking of message handler test apps to mhu_dummy libLedion Daja
Change-Id: I9846dfdd0c6a87812662980488d7ffc22107a119
2022-12-05Use delta delays for baremetal applicationKristofer Jonsson
Baremetal application uses systick to poll the Ethos-U PMU block for profiling data. Instead of using a periodical timer, the timer is now reset at the end of every poll. This will reduce the risk of "systick deadlock" where the timing for handling the systick is longer than the time of the periodic tick. Change-Id: Ie812fab151b33d10bdf1cb4c5fb3e4fcbd5f1b05
2022-10-19Ethos-U PMU monitorKristofer Jonsson
Add Python script demonstrating how to download performance data from device. Write baremetal PMU events to Event Recorder ring buffer and increase the systick sample rate. Change-Id: Ib73c56100a8de2d7b74c455d8f80cda0b59383da
2022-09-08Add test message handler to be used for testingDavide Grohmann
It is like message handler but it does not process any inferences. They are simply queue and never executed. Change-Id: I131c3c779b616e82d650ff03e3723dc607de58bf
2022-08-25Add message_handler tests for inference cancellationDavide Grohmann
Change-Id: Ifdacc47024250e34549d45377795501c371c69f5
2022-08-25Add negative testing to message_handlerDavide Grohmann
Also restructure the scatter file to not be constrained of the artificial 512k size limit of the APP_IMAGE region. Add missing sections in DDR for both scatter file and linker script. Change-Id: I3d9bc8aeae1b1c11ab994276be64a2850cc23f8e
2022-08-24Skip ThreadX application for NPU configs other than ethos-u55-128Ledion Daja
Change-Id: I19a30e3b8a8fc5c0c4db301cf98e61f0b1fb48e8
2022-08-23Fix wrong assertion in test for Ethos-U6522.08Davide Grohmann
Both version_major and version_minor for the U65 hw are set to 0, so we cannot test that they are greater than 0. So simply test that version_status is set instead. Change-Id: Ia2ac15a18c4865bdd3501c2645f644ca210d1ee1
2022-08-17Make sure that unused symbols are dropped when using GCC22.08-rc2Davide Grohmann
Add compiler and linker options to add each symbols in its own section so unused one can be dropped. Also adds missing noexcept Change-Id: I9143ae5865c4a071c6e09d14eb08ce3069b4b2db
2022-08-17Add first set of tests for the message_handlerDavide Grohmann
Covering inference runs and other utility messages. Change-Id: I95958a9e5902fde2003c870c78e0b0f2e8cd7968
2022-08-17Generalize test models to be reusedDavide Grohmann
Change-Id: I47705cfde2788fa74f8bbcd07100188e4690dbf2
2022-08-16Fix: compile message_handler_lib with correct flagsDavide Grohmann
Link core_driver as PUBLIC so the ETHOSU define is exported. Change-Id: I8900c11cc1a17ec37b8666131079a5a49875c73f
2022-08-10Increase stack for ThreadX demo22.08-rc1Kristofer Jonsson
Change-Id: I7346b6e57e2579baf44840957e67d870922a5fe8
2022-06-28Bug fix for queue capacity calculationKristofer Jonsson
Reduce queue capacity by one byte, else it will not be possible to distinguish between an empty and full queue. Change-Id: I872e1eeac31bf2ee8682c1340776d56396c00ff7
2022-06-28Initialize padding for core message queuesKristofer Jonsson
Change-Id: Iebf79869216a6f2e24b307e3c9b2273887fb3864
2022-06-13Refactor message_handler app to be more test friendlyDavide Grohmann
Fix importing indexed models, the inclusion of header files was not working. Change-Id: Idab7e002abc31f57acc4eda6a2f1cf2defdfd5c4
2022-05-19Handle network indices out of rangePer Åstrand
Check that getting the network succeeds before parsing the the buffer to avoid hardfault. Change-Id: I582412fb0e7459bf45fdb790df2d48401c1a2d0b
2022-05-19Move taskparams out of main stackPer Åstrand
FreeRTOS resets the stack to the running tasks. Move the task parameters to avoid the parameters to be overwritten. Change-Id: Ib22b3d49451ea8c97c6faf24bafc8bf0952b38a9
2022-05-18Update documentation with new path of Vela INI config fileLedion Daja
Change-Id: I1dabf8f675fa47fc9096393a29810fc430e006dc
2022-05-10Fix warning by adding missing delete operator functionsDavide Grohmann
Also override new/delete operators to call in FreeRTOS malloc/free in the freeRTOS example app. Change-Id: I08c0780c907e5fe90ccb1679869d3f41c87c2731
2022-05-09Update documentationKristofer Jonsson
Add documentation about how base addresses are used by the driver unit tests. Update message handler application to use TENSOR_ARENA_SIZE the same way as the FreeRTOS application. Add documenation about Corstone-310. Change-Id: I08a315b95ca757ce3449cb7af104b8f1ac7f8865
2022-05-09Add support for cancelling enqueued inferencesDavide Grohmann
If an enqueued inference is cancelled it is simply removed from the queue. Both a cancel inference response with status done and a inference response with status cancelled are sent back. Also override the new operators to call in the FreeRTOS allocator instead of malloc/free. Change-Id: I243e678aa6b996084c9b9be1d1b00ffcecc75bc9