Я работаю с Zynq 7 Xilinx. На Zynq есть FPGA, процессор ARM и 512 МБ оперативной памяти DDR. Когда плата включена, процессор ARM запускает Ubuntu, которая инициализирует оперативную память DDR и объявляет ее своей. На ПЛИС разрабатываю еще один процессор и хочу отдать ему кусок памяти DDR. Поскольку я все еще разрабатываю, я хотел бы как-то выделить кусок 64 МБ непрерывной памяти DDR из пользовательского пространства linux (устройство имеет MMU). Затем я получил бы начальный адрес этой части ОЗУ, передал бы его процессору FPGA, и он бы работал с ним. Пока на нем работает, я мог бы проверить, все ли в порядке из той же программы, в Ubuntu.
Вопрос касается стороны Linux, что было бы хорошим способом?
Вот что я насобирал сам: немного почитал про cma и заметил, что инстанс Ubuntu уже выделяет 128 МБ оперативной памяти cma при загрузке. Итак, я думаю, что лучшим способом было бы найти или разработать драйвер, который занимает часть этой оперативной памяти и «запирает» ее, чтобы ОС не выдавала ее другим программам. Тогда мне все равно понадобится способ получить к нему доступ из пользовательского пространства. Это правильный путь мышления?