Обновить
2
0

Пользователь

Отправить сообщение
А так, такие операционки с двумя стеками контекст переключают долго, даже у вас это будет довольно долго, несмотря на оптимальный алгоритм.
Вы имеете в виду долгое переключение между PSP и MSP? С чем это связано?
Я даже не встречал, чтобы использовали N ядерные системы на cortex-m3 или cortex-m4.
Sony's CXD5602 microcontroller (ARM® Cortex®-M4F × 6 cores) with a clock speed of 156 MHz. Sony Spresense Main Board
Но при этом, MMU дополнительно предоставляет механизм виртуальной памяти.
Меня интересует конкретно механизм защиты памяти, а не её виртуализация. Память будет защищена в этой ОС?
Если у Вас есть MMU, то это тривиально. Вы просто подставляете в таблице виртуальных адресов адресам для диапазона X корректные физические адреса, на которых загружена библиотека.
Т.е. при переходе от библиотеки к библиотеке наш MMU постоянно перезагружается?
В общем это просто сложнее. И я не слышал, чтобы это реально кто-то применял. Тем более, что когда вы делаете встраиваемую систему куда проще просто скомпилировать свой код, ...
А если мне не просто помигать светодиодом, но и GUI и WebCam и Webserver с Websocket и JS, C# и uPyton интерпретатор и чтобы всё одновременно и оперативы у меня 64МБ и QSPI на 1Gb, то всё, я в пролёте?
Назовите вкратце, какие ограничения (кроме фрагментации памяти) в МК мешают динамической линковке? Хочется разобраться.
В РТОС обычно нет ни процессов, ни загрузки таксков, ни (особенно) динамической линковки. Потому что РТОС использую на железе, где нет аппаратного memory-management unit (не путать с memory-protection unit) и поэтому не поддерживает виртуальную память, которая для всего этого по-хорошему нужна.
Как MMU способствует линковке? Оно ведь только позволяет избежать фрагментации общесистемной памяти (и расширить её) при создании новых heap создав виртуальное адресное пространство.
(не путать с memory-protection unit)
Так вы собираетесь его задействовать по прямому назначению?
Интересная статья!
Будет ли организована защита памяти процессов с помощью MPU?
инверсия приоритетов
Расскажите как избежать.
Ваша ОС будет полноценной (процессы, нити, исполняемые файлы типа «exe» и динамическая линковка типа «dll»)?
Новые опенсорсные программисты — это люди, пришедшие сюда ради интереса
Этот товар делается в основном для них.
Из 30 или-сколько-там-человек что-то продолжают писать в ядро и системный функционал — двое или трое.
Их должно было быть 3000.
А, ну еще один, «образующий альтернативную версию ПО»
А этих должно быть не один, а двадцать один.
Flipper должен был стать «пластилином» из которого можно легко создать «тулс своей мечты».
Кроме того, вот именно то, что вы предлагаете — раздать разрабам
Да! Это был бы дружественный шаг, на встречу комьюнити. А сейчас ему просто не из чего образоваться.
Я понял у Вас стереотипное мышление. Но они продают товар для энтузиастов и подход должен быть соответствующий.
код сразу решит многие возникшие вопросы
Даже не знаю. Я уже всё расписал как делать. А flipper'а дадите?
слоя для базовой совместимости
Этого вполне достаточно.
То есть без шансов, сазу в бой, без обучения!
1) Для IPC не нужна своя память. Вы свободно пользуетесь вытесняющим менеджером, так вот IPC ест ресурсов меньше. IPC должен работать из SVC и (пользоваться, читать\писать) не будет проблем.
IPC на каждый чих в каждую сторону
Ну не попиксельно же передавать изображение.
2) Если невозможно спрогнозировать то давать с адекватным запасом. Но отдавать всё что можно сразу — это уже крайность.

я изучал, очень много изучал разные проекты и подходы к ос
Я понимаю, но этого недостаточно, нужно экспериментировать, с первого раза и у меня не получилось, но со 1001…
Не согласен. Новые программисты, если грамотно ими воспользоваться (тем более бесплатные), помогут тестированию, либо образуют альтернативные версии ПО. А какая разница если будет продаваться?
Я считаю что поддержка Arduino IDE очень важна для тех кто ей уже пользуются. Как они смогут приобрести устройство и безболезненно пользоваться им. Тогда со временем у них появится желание перейти на полноценную работу и изучить «правильное» программирование.
Раздали бы энтузиастам, уже бы и прошивка давно была готова и дружное комьюнити сразу же образовалось.
1) Переписать её память в память другой задачи внутри SVC, так же часть тесно взаимодействующих задач могут быть объединены в рамках одного процесса и быть в одном защищённом регионе.
2) Так это хорошо когда приложению ограничат доступ к общей памяти, оно пусть скажет сколько ему надо, а система подумает пускать его в работу или нет. Иначе оно пойдет в разнос и кому очень надо не достанется.
3) Значит можно выделить 8 независимых heap'ов на процесс, очень даже не кисло. А в M7 даже 16 дают. Некоторые даже все 8 пристроить не могут.
4) Каждый регион может быть разделён на 8 частей — сразу проще стало.
5) Опять же, разделение каждого региона на 8 частей упрощает эту задачу.

Из-за этих особенностей MPU может достаточно легко защитить программы от взаимного повреждения памяти (а так же всех ресурсов МК), и полностью передать её контроль ОС.
У меня нету Flipper'а чтобы его проверить.
Это не я придумал. Вот выдержка из мануала по Cortex M4:
If a program accesses a memory location that is prohibited by the MPU, the processor generates a memory management fault. This causes a fault exception, and might cause termination of the process in an OS environment.
In an OS environment, the kernel can update the MPU region setting dynamically based on the process to be executed. Typically, an embedded OS uses the MPU for memory protection.

Так как вы пользуетесь FreeRTOS, то вынуждены терпеть все её недостатки, которые компенсируются её «универсальностью» ко всем архитектурам, позволяющей лишь видеть знакомые названия API при программировании разных контроллеров. Если хотите чтобы ОС была полноценной, то она должна быть написана конкретно под Cortex M.
Насколько я понял, используется один большой heap и в нём все программы берут кусочки памяти и затем их возвращают. Почему бы не выделять каждой программе свой heap, и при её завершении освобождать его целиком? Тогда можно защитить эти участки с помощью MPU.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность