Keil Logo

ARM: ported CMSIS RTOS validation project stops when using interrupts


Information in this knowledgebase article applies to:

  • CMSIS-RTOS_Validation pack (CMSIS RTOS API V1)

SYMPTOM

We have ported the example contained in the CMSIS-RTOS_Validation pack to a different controller to run it on some real hardware. But the project stops running when executing test cases that involve the usage of an interrupt handler. What is the problem with it?

CAUSE

The validation test code uses a special test interrupt handler and IRQ entry number 0 by default.

SetPendingIRQ((IRQn_Type)0);

If this handler is not referenced by the vector table (normally implemented in the startup assembler code) at this entry, activating this interrupt will not call the validation code handler. Instead, the default handler for this device at this entry gets called, which might still be an endless loop. So the program will hang here.

RESOLUTION

To make the validation code work, the test interrupt handler needs to be referenced in the vector table. For this, replace the handler at the vector entry used by the validation code, which is entry 0 by default, with the test interrupt handler:

Thread_IRQHandler

Then, when this interrupt becomes active, the correct handler of the validation code is called and the test can continue.

MORE INFORMATION

Last Reviewed: Thursday, January 10, 2019


Did this article provide the answer you needed?
 
Yes
No
Not Sure
 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.