|
Доступ к регистрам из программы, Есть ли возможность запретить? |
|
|
|
Sep 17 2010, 10:35
|
Местный
  
Группа: Участник
Сообщений: 352
Регистрация: 10-08-06
Из: Санкт-Петербург
Пользователь №: 19 471

|
Появилась задача безопасного выполнения пользовательской программы на микроконтроллере. В начале работы контроллер настраивает периферию и прочее. После настройки нельзя менять эти настройки, может повредить устройство неправильная установка регистров, а починка будет проблематична. Далее алгоритм задачи должен загружаться пользователем. Выходит два варианта: - Интерпретатор - Загрузка и выполнение кода в RAM
При интерпретаторе все нормально, виртуальная машина обрабатывает пользовательский скрипт, доступа по указателям и периферии нет. Если напишут кривой (скорее всего напишут) код, то программа корректно прекратит работу. Вроде бы все нормально, но из-за виртуальной машины производительность падает примерно в 40 раз (проверяли вычислением F32 на Си и с помощью скрипта). Это не во всех случаях подходит.
При простой подгрузке бинарника встает вопрос об возможности доступа к регистрам и памяти. То есть пользователь, криво написав программу, залепит в какой-нибудь регистр фигню, а дальше как повезет. Тут уже нужно будет обрабатывать Data Abort, но это не всегда спасает.
В конечном виде нужно получить несколько системных вызовов и безопасное выполнение кода пользователя.
Интерпретатор и компилятор не проблема написать, уже писал. Бинарник подгрузить не сложно, но вот не знаю можно ли каким-либо методом ограничить использование регистров и доступ к памяти?
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Sep 17 2010, 13:52
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070

|
Цитата(Dron_Gus @ Sep 17 2010, 17:43)  А к ним можно получить доступ "изнутри"? Не знаю. Попробуйте здесь спросить, как они сумели это сделать.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|