Keil Logo

RTX51 TINY: Setting Round-Robin Timesharing to 1


Information in this article applies to:

  • C51 Version 5.50a
  • C51 Version 6.00

SYMPTOMS

In CONF_TNY.A51, you may specify a value for the number of ticks each task runs in round-robin multitasking.

;
;               ; define Round-Robin Timeout in Hardware-Timer Ticks.
TIMESHARING     EQU     5       ; default is 5 ticks.
;               ;
;               ; note: Round-Robin can be disabled by using value 0.
;
;  Note:   Round-Robin Task Switching can be disabled by using '0' as
;          value for the TIMESHARING equate.

Any value other than 0 enables round-robin multitasking. However, setting TIMESHARING to a value of 1 causes problems with the real-time kernel. This value should be avoided.

CAUSE

When the value for TIMESHARING is 1, a race condition may occur when creating tasks. If a new task is created just before the next timer tick interrupt occurs, you may get a round robin time-out for the newly created and activated task. However, in this case no round-robin time switch occurs and the task runs until the next time out. This means that this task will run for 256 RTX timer ticks.

The same problem might appear when a task switch occurs due to an os_wait call in another task.

RESOLUTION

Don't set TIMESHARING to 1 for round-robin multitasking.

MORE INFORMATION


Last Reviewed: Thursday, February 25, 2021


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.