Назначение указанного c начального адреса 2D-массиву в C - PullRequest
0 голосов
/ 06 мая 2020

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

Начальный адрес настраивается извне, как и размеры массива. Я хочу заблокировать программу от использования части, используемой в памяти.

Пока что у меня есть:

volatile float* samples_ptr = (float *)(base_address);

Есть ли способ назначить это volatile-переменная как массив с сохранением начального адреса?

1 Ответ

0 голосов
/ 07 мая 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...