Part Number: AM263P4
It is understood that the interaction process between the R5 core and the HSM core is as follows: the R5 core initiates an HSM service, sends an interrupt and related data via SIPC, and the HSM core starts processing the task after receiving the SIPC interrupt. At this time, the R5 core continuously waits for the semaphore to be released. After the HSM core finishes processing the task and triggers an interrupt, the R5 core’s interrupt releases the semaphore, allowing it to proceed to the next step. This is a synchronous blocking approach, as detailed in the flowchart below.

However, the current situation is that certain tasks requiring processing by the HSM core, such as multiple RSA4096 signatures, are time-consuming. It is unacceptable for the R5 core to wait continuously, so there is a need to modify the existing mechanism to an asynchronous approach.
One idea is for the R5 core (which does not have an RTOS) to periodically check, either continuously or every 50ms (implemented via a timer), whether the semaphore has been released. If the corresponding semaphore is released, it can then process the data returned by the HSM. If this approach is adopted, how can the program be modified with minimal changes to the existing SDK?
For example, directly setting a flag in the SIPC interrupt handler. However, I am curious why the current SDK does not use this method but instead adopts the synchronous semaphore approach. What are the considerations behind this?
Are there any other recommended approaches?
Thank you for the expert's response. This incident is urgent






















