получить физический адрес буфера под Linux

Я использую ядро Linux 3.3 на XilinxМикроблейз с полным MMU. задача, которую я выполняю, требует от меня знать следующее: мне нужно создать текстовый файл (буфер) и найти физический адрес этого буфера, и я неЯ не хочу, чтобы ядро записало этот файл в отдельные области памяти.

причина в том, что мне это нужно, потому что у меня есть механизм DMA, который выполняет потоковую передачу данных с заданного адреса физической памяти, поэтому мне нужно заставить Linux создать файл буфера именно в этом месте памяти, чтобы при записи данных в этот файл он немедленно передавался механизмом DMA на другое аппаратное ядро

Больше деталей:

моя система имеет 512 МБ оперативной памяти DDR3, подключенной к системе черезXilinx» многопортовый контроллер памяти (MPMC). базовый адрес этого контроллера памяти равен 0x90000000, все устройства в системной памяти обращаются через этот контроллер, включая MicroBlaze. Устройство DMA, которое у меня есть, использует специальный интерфейс, называемый Native Personality Interface (NPI), для связи с памятью на очень низком уровне. В результате получается очень высокая скорость работы.

Этот модуль NPI DMA был изначально разработан для использования под очень простым встроенным ядром, называемым "xilkernel» который не поддерживал виртуальную память, ни MMU не был частью MicroBlaze, поэтому программист мог видеть, где будет находиться код ОС, и выбирать адрес физической памяти, такой как 0x91800000, в качестве адреса источника, с которого DMA будет передавать поток, а затем программист может поместить файл в этот точный адрес и запустить систему

когда нам нужно было перенести проект для использования Linux вместо xilkernel, мы столкнулись с этой проблемой, у меня есть файлы на внешнем устройстве хранения, к которым я могу получить доступ как блочное устройство из Linux, и мне нужно переместить каждый файл в основную память (ОЗУ DDR3) и сделать поток DMA файлом. в настоящее время потоки DMA с фиксированного адреса, но я могу сделать его общим, если это необходимо.

Ответы на вопрос(2)

Ваш ответ на вопрос