Mahagam (01.02.2006 15:41, просмотров: 1) ответил Cидopгeк на Про кольцевой буфер чего-то не подумал. Queue занимает в 4 раза больше памяти. Не могли бы Вы положить в файлообменник правленный ctl.c, а то никак не разберусь, где править.
там просто файл ctl.c строка 201 (функция ctl_exit_isr)
было:
for (t=ctl_task_list; t && (t->priority > ctl_task_executing->priority); p=t,t=t->next)
стало:
for (t=ctl_task_list; t && (t->priority >= ctl_task_executing->priority); p=t,t=t->next)
после чего по таймеру переключаются равноприоритетные задачи.
у меня пролетала мысль о том, чтобы переписать это место так, чтобы, например, один из 10 раз выполнялась бы и задача с более низким приоритетом.
далее. в файле ctl_arm.s находим по метке и приводим в соотвествие с приведённым куском текста:
swi_handler:
// ensure it is our swi
ldr r13, =SWIlabel+4
cmp r13, r14
bne reset_handler
а в crt0.s добавляем строку
.global reset_handler
после чего в любом месте сишного файла добавив строки вида
asm("swi 0xff");
можно сделать полный рестарт процессора, с переинициализацией всех стеков, bss области и прочей херни.