Цитата(spf @ Apr 5 2007, 15:16)

Имеются такие данные?
Зажгли лампочку и передаем управление ожидающей задаче, лампочку гасит ожидающая, как получит управление. Какое время будет гореть лампочка?
На известной частоте ядра и в одном из режимов.
Хы, пробовал буквально утром

- новый диспетчер 2.4 прогонял (и украл оттуда хинт - sub LR,LR,#4 - в самом начале

)
Код
#define TEST_PIN (1<<21)
void test_task_func4(void *Param)
{
for(;;)
{
PIOA_CODR = TEST_PIN;
tn_sem_acquire (&setSem, TN_WAIT_INFINITE);
}
}
void test_task_func3(void *Param)
{
BOOL Create = TRUE;
tn_sem_create (&setSem, 1, 1);
for(;;)
{
PIOA_SODR = TEST_PIN;
tn_sem_signal(&setSem);
if (Create)
{
tn_task_create(
(TN_TCB*)&test_task4,
test_task_func4,
23,
&(test_task_stack4[TEST_STACK_SIZE-1]),
TEST_STACK_SIZE,
(PVOID)0,
TN_TASK_START_ON_CREATION);
Create = FALSE;
}
}
}
Для:
- AT91SAM7X
- 48MHz core
- ARM mode
- flash execution, 1 wait clock
- cистемы компилировались с флагом USE_MUTEX=0 (влияет незначительно)
- IAR 4.30, оптимизация по размеру -z9
Дает длительность импульса на TEST_PIN:
13.2 uS - TNKernel v2.3
13.0 uS - TNKernel v2.4
11.2 uS - TNKernel v2.3 с полностью модифицированным диспетчером + оптимизирующие мелочи в синхрообъектах
Если не будет лень - попробую еще uC/OS для сравнения.