Тут встает еще вопрос об используемой среде разработки и стиле написания обработчика прерывания. Пример: В IAR Embedded Workbench существует специальное слово __interrupt, с помощью которого можно сообщать системе об предназначении ДАННОЙ функции. В этом случае будет проведена запись нужных регистров. Кроме того, на самом деле КОРРЕКТНО написанный портинг uC-OS II должен проводить запись и восстановление регистров при переключении задачи самостоятельно. Причем неважно, когда это переключение происходит - при обычной работе, или же во время обработки прерывания. Кстати, на сайте присутствуют не только корректные портинги - как пример, года полтора назад я брал оттуда портинг для M16C, написанный Ляброссом. В итоге оказалось, что там очень много ошмибок и пришлось все это безобразие перелопачивать.
|