TrustZone: планирование процессов из двух миров

Если у меня есть одноядерный ЦП на устройстве с поддержкой TZ и запущены два процесса: один в безопасном мире и один в незащищенном мире, возможно ли, чтобы планировщик управлял ими упреждающим образом, так что каждому процессу назначается определенный временной интервал?


person Richard Laurant    schedule 20.10.2014    source источник


Ответы (2)


На самом деле, это возможно, но только в обход. Вы не можете использовать один планировщик для обработки двух отдельных задач, поскольку они выполняются в совершенно разных средах выполнения. Что вы можете сделать, так это использовать FIQ, чтобы разделить время за вас. Если вы настроили FIQ как исключение ПО, вы можете настроить его на периодическое срабатывание, например, каждые 50 мс. Когда это произойдет, выполнение будет принудительно выполнено в SW, и ваш процесс сможет работать там. Затем вы можете запустить процесс в течение определенного периода, а затем передать управление обратно NW, сбросив таймер FIQ перед выходом. Затем NW может работать до тех пор, пока снова не сработает FIQ.

Как уже говорилось, это НЕ один планировщик, обрабатывающий как процессы SW, так и процессы NW, но это потенциальный способ сделать то, что вы пытаетесь сделать. Однако вам все равно придется учитывать другие прерывания, так что имейте это в виду.

person engineereeyore    schedule 02.04.2015

TZ обычно выполняется в одном потоке, поэтому всякий раз, когда есть запрос с незащищенной стороны на запуск какого-либо безопасного приложения. Он пройдет через режим монитора, а затем произойдет переключение контекста с незащищенного на безопасный мир, а затем безопасное приложение начнет выполнение в безопасном мире в одном потоке. Таким образом, это ядро ​​​​будет работать в безопасном мире в течение этого времени, но если произойдет какое-либо прерывание из безопасного мира, тогда выполнение остановится, и контекст переключится с безопасного на небезопасный для обработки прерывания, после обработки он снова переключится на безопасный мир и на этот раз безопасный мир можно запланировать на другое ядро.

Так что как ответ на ваш вопрос это невозможно. На данный момент реализация TZ работает на одном ядре, и только одно ядро ​​может выполнять это одновременно.

просто чтобы уточнить, нужно ли безопасному приложению выполнять какую-либо файловую операцию (поскольку TZ не имеет файловой системы, он использует некоторый прослушиватель на незащищенной стороне для выполнения этого действия, тогда снова произойдет переключение контекста)

person RATHI    schedule 27.11.2014