[an error occurred while processing this directive]
|
>swi в DSP/BIOS используют какие-то аппаратные ресурсы или >это "логическая" разновидность задач?
Аппаратные ресурсы не используются. SWI - это действительно
"логическая" разновидность задач. Приоритет SWI всегда ниже,
чем HWI и всегда выше, чем TSK.
>получил исходники, в которых в "железных" прерываниях генерятся SWI -> вопрос какой в этом смысл, если в SWI запрещенны сервисы (семафоры)
>почему не пользоватся задачами TSK?
Вызов блокирующих сервисов DSP/BIOS из SWI действительно запрещен.
Преимущества SWI следующие:
- при исполнении обработчика SWI не маскируются HWI.
Поэтому, если обработка HWI требует много времени, но должна быть выполнена с высоким приоритетом, то часть ее можно перенести в обработчик SWI. В противном случае (нет SWI), затянутая обработка одного HWI привела бы к задержке в обработки последующих HWI.
- Если необходимо иметь доступ к какой-то области данных из TSK и HWI, то для исключения коллизий при доступе из TSK пришлось бы запрещать HWI на время доступа. Это не очень хорошо. Альтернатива - модифицировать общие данные в SWI, а в TSK перед доступом к этим данным запрещать SWI. Это нормально.
>проблема более подробно - есть ресурс типа XBUS, через который >подвешена ПЛИС со всей периферией, доступ к ней хотелось бы >контролировать мутексом (как я понял LCK в ДСП/БИОС), но чтобы >эффективно работали мутексы нужно их пользовать в TASK, а не SWI
>может вообще функции работы с DMA реентерабильны (то есть имеют >какой-то внутренний контроль доступа)? Чотя зная ТИ сильно в этом >сомневаюсь...
Функции для работы с DMA не защищены от многопоточности.
>Может есть какое-то другое решение?
Использовать TSK, наверное, оптимальный вариант в данном случае.
E-mail: info@telesys.ru