Почему в STM32 нет виртуальной памяти, а есть адресное пространство 4 ГБ
Что проверяют
Понимаете ли вы разницу между адресным пространством и объёмом памяти, и что из отсутствия MMU следует для тестирования прошивки. Вопрос выглядит теоретическим, но проверяют прикладное: какие классы дефектов возможны на таком контроллере и как их ловить.
Как отвечать
4 ГБ это не память, а диапазон адресов, который способна выразить 32-битная шина. Ядро Cortex-M раскладывает диапазон по фиксированной карте: область кода и флеш, область SRAM, область периферии, служебная область ядра. Реальной памяти там на порядки меньше: десятки килобайт оперативной и сотни килобайт флеш, остальные адреса просто не заняты.
Виртуальной памяти нет, потому что в Cortex-M нет MMU, блока трансляции виртуального адреса в физический. Адрес в коде это адрес на шине, один к одному. Есть опциональный MPU, но он умеет только раздавать права на регионы, а подкачки страниц и свопа не даёт. Для встраиваемой задачи это скорее плюс: время доступа предсказуемо, нет промахов по таблице страниц и нет момента, когда обращение к памяти внезапно уходит в другое устройство.
Практический вывод для тестирования: регистры периферии лежат в том же адресном пространстве, что и переменные, поэтому запись по испорченному указателю может дёрнуть пин или таймер вместо аккуратного падения.
Где спотыкаются
Говорят «памяти 4 ГБ». Это первая ловушка вопроса: путают ширину адреса с объёмом, хотя рядом в документации указаны килобайты.
Второе: ждут поведения большой системы. Здесь нет защиты процессов, выход за границу массива не ловится, он тихо портит соседние данные или стек, а проявляется через минуты и в другом месте. Отсюда практики: заполнять стек шаблоном и проверять остаток, разбирать регистры при HardFault, гонять длинные прогоны, а не пару коротких кейсов.
Третье: переносят привычки с настольной операционной системы. Нет подсистемы, которая убьёт процесс и перезапустит его, нет свопа, а фрагментация кучи приводит к отказу выделения через сутки работы. Это отдельный тестовый сценарий, а не теория.