Здесь приведены цифры для оценки времени, требуемого операционной системе для выбора очередной задачи для запуска в разных режимах под разными компиляторами. Что это значит? Допустим, вы пишете программу для PIC16 под компилятором HTPICC, и у вас возникает вопос: "сколько временых ресурсов отнимет OSA?" или "как быстро произойдет переключение с одной задачи на другую?" (для кооперативных RTOS эти вопросы равнозначны). Ответ на этот вопрос приведен в таблице, где вы находите строку с используемым компилятором, затем столбец с используемым режимом работы (неприоритетный, приоритетный, расширенный приоритетный) и видите среднее количество тактов, требуемое OSA для переключения с одной задачи на другую (это число пропорционально зависит от количества активных задач). Далее найденное число умножаем на время выполнения инструкции и получаем время переключения.
Compiler | PRIORITY_DISABLED | PRIORITY_NORMAL | PRIORITY_EXTENDED | |
---|---|---|---|---|
PIC10 (PIC12) |
||||
Hi-tech PICC | 54*N | 84*N | - | |
PIC16 (PIC12) |
||||
HT-PICC STD | 49*N | 80*N | 123*N | |
microC PRO | 74*N | 119*N | 224*N | |
CCS PICC | 62*N | 107*N | 167*N | |
PIC18 |
||||
HT-PICC18 STD | 45*N | 70*N | 85*N | |
MPLAB C18 | 55*N | 96*N | 117*N | |
microC PRO | 73*N | 99*N | 187*N | |
CCS PICC | 49*N | 88*N | 101*N | |
PIC24 (dsPIC) |
||||
MPLAB C30 | 60*N | 87*N | 113*N | |
AVR |
||||
WinAVR | 108*N | 172*N | 190*N | |
IAR | 100*N | 148*N | 177*N | |
STM8 |
||||
Cosmic | 35*N | 58*N | 71*N | |
IAR | 93*N | 118*N | 238*N | |
Raisonance | 61*N | 80*N | 120*N |
N - количество активных задач
Оценка среднего времени переключения. Пример 1 Исходные данные:
Находим в таблице значение, соответствующее контроллеру, компилятору и используемому режиму. В нашем случае оно равно 123*N. N у нас равно 4, т.е. предполагается, что одновременно работают 4 задачи.
Среднее время переключения (с момента выполнения, например, OS_Yield() в одной задачи до момента получения управления другой задачей) будет:
t = 123 * 4 * 200нс = 492 * 200нс = 98.4 мкс
Оценка среднего времени переключения. Пример 2 Исходные данные:
Находим в таблице значение, соответствующее контроллеру, компилятору и используемому режиму. В нашем случае оно равно 58*N. N у нас равно 8, т.е. предполагается, что одновременно работают 8 задач.
Среднее время переключения будет:
t = 58 * 8 * 62.5ns = 464 * 62.5ns = 29 us