В Linux я пытаюсь написать пользовательское приложение, которое может проверять некоторую физическую память (в целях отладки).

Я пытаюсь написать пользовательское приложение, которое может проверять некоторую физическую память (в целях отладки).

od -j <0xknown_good_physical_address> -N 256 /dev/mem 

(w/CONFIG_STRICT_DEVMEM=n) приводит к сбою ОС.

функции ioremap, phys_to_virt и phys_to_page не существуют в моем каталоге /usr/include. Я изучил и попробовал процедуру make headers_install, но функции по-прежнему не попадают в мой каталог usr/include. Насколько я знаю, это означает, что они недоступны для пользовательских приложений. Кто-нибудь знает, как получить доступ к физической памяти из приложения пользовательского пространства? Еще одно сообщение: физический адрес, который я пытаюсь прочитать, — это PCI BAR, который я получил, выполнив lspci -v в строке «memory at».


person Joe C    schedule 21.06.2013    source источник


Ответы (1)


Вы можете использовать mmap() для этих адресов, чтобы получить виртуальный адрес, который вы можете читать и записывать в зависимости от того, как вы mmap.

person krazycoder    schedule 22.06.2013
comment
Я пошел дальше и написал утилиту модуля ядра, которая использует ioremap для доступа к физическому адресу. Оно работает. Вы не возражаете, если я не буду следить за этим? - person Joe C; 03.07.2013