Если вы ищете защиту памяти во время выполнения, единственной опцией является аппаратная поддержка. Аппаратные средства - единственный способ вмешаться в плохой доступ к памяти, прежде чем это может привести к повреждению. Любое программное решение будет уязвимо к тем самым ошибкам памяти, от которых оно пытается защититься.
С программным обеспечением вы могли бы реализовать схему проверки / обнаружения. Вы можете периодически проверять части памяти, которые не должны иметь доступ к запущенной в данный момент программе, и видеть, изменились ли они (возможно, путем CRCing этих областей). Но, конечно, если мошенническая программа повреждает область, в которой хранятся контрольные суммы, или там, где хранится код программы проверки, все ставки отменяются.
Даже это решение для проверки программного обеспечения было бы скорее средством отладки, чем постоянной защитой во время выполнения. Вполне вероятно, что устройство без MMU - это небольшое встроенное устройство, у которого не будет запасных циклов для постоянной проверки памяти устройства.
Обычно устройства без MMU предназначены для запуска одной программы без ядра или чего-либо еще, поэтому защищать нечего. Если вам нужно запустить несколько программ и вы чувствуете, что нуждаетесь в защите, вам, вероятно, понадобится более совершенное аппаратное обеспечение, которое поддерживает требуемые функции.