Перейти к содержанию
    

защита пользовательских задач с помощью MPU

Добрый день!

интересует вопрос, каким образом с помощью MPU происходит защита одной пользовательской задачи от другой, в cortex M?

например как это происходит в различных РТОС  имеющих порт на кортекс с MPU?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну у тас это сделано так, что переменные (вообще адрес спейс) одной задачи недоступны для другой. то есть для обмена нужно пользоваться сервисами РТОС.

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

железо у нас MMU-шное, но трансляции адресов нет и динамической загрузки (если не Линукс, а FreeRTOS), поэтому разницы с MPU не должно быть

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

29 минут назад, yes сказал:

железо у нас MMU-шное, но трансляции адресов нет и динамической загрузки (если не Линукс, а FreeRTOS), поэтому разницы с MPU не должно быть

Даже без трансляции адресов разница огромная. Так как в MPU всего 8 регионов и есть существенные ограничения на дискретность задания их границ. Хотя если задач - мало и памяти - вагон, но можно сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

52 минуты назад, yes сказал:

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

ну если есть возможность тупо прописать по неверному указателю, или прочитать, то о какой защите может быть речь?

меня интересует как задействуют MPU для защиты одной пользовательской задачи от другой пользовательской задачи.

единственное что приходит на ум это при переключении контекста каждый раз менять настройки MPU таким образом чтобы для чтения и записи была доступна только та область ОЗУ в которой находятся данные и стек активной задачи, а вся остальная область под запретом.

вот хотел узнать так ли это реализовано в различных РТОС  с поддержкой MPU или нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 минут назад, TTTTTTS сказал:

единственное что приходит на ум это при переключении контекста каждый раз менять настройки MPU таким образом чтобы для чтения и записи была доступна только та область ОЗУ в которой находятся данные и стек активной задачи, а вся остальная область под запретом.

Почти так. Не забывайте, что задачи не в вакууме работают. Им наверное необходимо между собой данными обмениваться. Т.е. - нужна ещё какая то общая область обмена.

И должно быть разделение на системный и прикладной уровни.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

а во FreeRTOS-e это есть, уверен, что взяли готовую. нужно смотреть Cortex-A порты. может и для Cortex-M есть, тут не знаю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 часа назад, yes сказал:

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

Т.е. криворукость лечим блокировкой памяти? А если их поделье заглючит, то что с общей системой произойдет тогда?

ЗЫ. Вообще, как я думаю, вся эта защита нужна только для запуска сторонних программ под осью общего применения, типа винды или линя... И то, чтоб просто закрыть эту программу не порушив всю ось. Во встраиваемых решениях, где нет всяких подгрузок и выгрузок все нужно решать только корректным программированием, иначе все равно ничего не поможет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 18 мая 2019 г. at 3:01 PM, mantech said:

Т.е. криворукость лечим блокировкой памяти?

от объема кода зависит, от квалификации программистов и т.д. в проекте с лимоном+ строк, десятком исполнителей и достаточно длинным временем жизни никакая пряморукость уже не работает, по-моему. нужны инструментальные средства.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

34 минуты назад, yes сказал:

в проекте с лимоном+ строк, десятком исполнителей

Если не секрет, что делает сей мегапроект?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, mantech said:

Если не секрет, что делает сей мегапроект?

Лимон строк эт простенькая RTOS типа Nucleus Plus с GUI и парой коммуникационных стеков. 
Я такой проект тянул один. 
Чтобы проект требовал десяти человек надо минимум десять лимонов строк. 

С изоляцией задач тема актуальная в IoT и для нее придумали Cortex-M33.
Кому нужно найдет все в mbed uVisor.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 5/18/2019 at 8:01 PM, mantech said:

Т.е. криворукость лечим блокировкой памяти? А если их поделье заглючит, то что с общей системой произойдет тогда?

Нет, криворукость здесь совершенно не причём по следующим пунктам:

1. MPU != MMU. MPU (Memory Protection Unit) как раз штатно и предназначен для защиты областей памяти от несанкционированного доступа.

2. MPU вкупе с другими возможностями (например, обработчиком Hard Fault) является отличным инструментом для поиска ошибок в софте.

On 5/18/2019 at 8:01 PM, mantech said:

А если их поделье заглючит, то что с общей системой произойдет тогда?

Ну лучше-то иметь больше инструментов для верификации, чем уповать на "безглчное ПО". ИМХО)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 часов назад, AlexandrY сказал:

Лимон строк эт простенькая RTOS типа Nucleus Plus с GUI и парой коммуникационных стеков.

Ооо да, как раз в духе сегодняшних "вебописателей", когда хочешь проверить почту, а там 3-5 мегов чего-то загружается...

10 часов назад, haker_fox сказал:

Ну лучше-то иметь больше инструментов для верификации, чем уповать на "безглчное ПО".

Тестирование - это понятно, но в релизных-то прогах зачем это??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, mantech said:

Тестирование - это понятно, но в релизных-то прогах зачем это??

А где 100%-я гарантия, что релизная программа без багов? А если он вылезет, что будет с устройством? А если оно на объекте, и не на одном? Так хоть можно параметры ошибки в лог занести, и потом расшифровать неспешно)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, haker_fox сказал:

Так хоть можно параметры ошибки в лог занести, и потом расшифровать неспешно)

Дак и тут будет только очень обобщенная информация, в своих прогах логи ошибок и рестартов тоже делаю, но как-то обходился без подобных наворотов...

6 минут назад, haker_fox сказал:

А если он вылезет, что будет с устройством?

Как правило рестарт по хардфаулту или собаке, другого не придумано :yes3:

7 минут назад, haker_fox сказал:

А где 100%-я гарантия, что релизная программа без багов?

Ктож ее вам даст? Может тот-же боинг, например?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...