aaarrr 69 11 сентября, 2018 Опубликовано 11 сентября, 2018 · Жалоба А вот вынос переменной в регион с защитой от записи (через MMU) и fault-ом при попытке записи - может очень помочь. Предполагается, что "переменную" (тогда уж страницу с оной, да не суть), пишет исключительно вредитель? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 12 сентября, 2018 Опубликовано 12 сентября, 2018 · Жалоба MMU хорош тем, что: 1) позволяет настроить кеширование, буферирование.... (cachable, bufferable), политику кеша (write throw, write back) 2) сделать виртуальное адресное пространство (полезно к примеру для склейки разных диапазонов адресов в один непрервыный) Ну и в целях защиты его использовать пока не приходилось, потому что bare metal и standalone. От кого защищаться? Раскурить аллвиннер вполне норм, примерно месяца полтора факультативной работы потребовалось, единственный трабл - это их УСБ! Это какой-то цирк с конями... Написал в личку Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 12 сентября, 2018 Опубликовано 12 сентября, 2018 · Жалоба Предполагается, что "переменную" (тогда уж страницу с оной, да не суть), пишет исключительно вредитель? Почему? Может и прикладная задача писать. В чём проблема? Да и это может быть не только переменная, но и константы/код. Кстати - MMU позволяет вообще закрыть область с константами/кодом от записи не только при отладке, но и при штатной работе программы, увеличив надёжность работы устройства. И делает этого много гибче чем MPU в Cortex-M. Это ещё один плюс к MMU-кешированию. Кроме того ещё один вариант использования MMU: отображение на адресное пространство МК внешнего устройства хранения (например - SPI-флешки). Т.е. - виртуализация такого устройства. Например есть код, который работает с некоторой большой областью памяти читая в произвольные моменты времени данные из произвольных смещений в этой области. Без MMU придётся такой код наполнить во всех местах чтения вызовами функций чтения SPI-флешь, а с MMU можно сделать отображение адресного пространства SPI-флешь на адресное пространство МК, назначив некоторое число блоков реальной ОЗУ для кеша страниц. При кеш-промахах (доступах к страницам, которые не помещены в кеш) - делать подкачку из SPI-флешь автоматом по fault-у от MMU. Также если нужна запись в такую память, то при записи, опять-же по fault-ам - метить модифицированные сектора и, по некоторому таймауту, в процедуре обслуживания этой памяти, сбрасывать содержимое секторов в SPI-флешь. При этом прикладной код будет простой, как будто он просто работает с линейной областью памяти, находящейся в адресном пространстве МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 12 сентября, 2018 Опубликовано 12 сентября, 2018 · Жалоба Почему? Может и прикладная задача писать. В чём проблема? И чем прикладная задача будет отличаться от вредителя? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться