Я довольно новичок в C в целом и пытаюсь провести небольшую проверку оперативной памяти на встроенном Linux.
Я работаю с Beagle Bone Black revC и Debian 6.3.0.
Для некоторых функций я хочу читать и записывать из / в реестр RAM, чтобы, например, проверить работоспособность шины данных.
Теоретически я понимаю, что нужно сделать.Открыть / mem / dev -> отобразить некоторую память -> записать и прочитать на / с физического адреса
Теперь, как мне узнать, какие адреса я могу использовать для таких задач?
Редактировать:
Я воспользовался советом комментариев и отобразил некоторую память с помощью mmap.Если я правильно понимаю, «PROT_WRITE» оставляет мне доступными для записи адреса памяти.Реализуя это, я могу считывать содержимое этой части памяти.
map = (int*)(mmap(NULL,MAPPED_SIZE,PROT_READ|PROT_WRITE,MAP_SHARED,_fdmem,DDR_RAM_PHYS));
Теперь я все еще сталкиваюсь с ошибками сегментации, когда пытаюсь использовать эти физические адреса.Читая man-страницу mmap, я задаюсь вопросом, получаю ли я в итоге доступные для записи адреса или просто пытаюсь писать вообще?Например, если я отображаю физические адреса Ядра с помощью PROT_WRITE, я получаю ошибку отображения или ошибка возникает при попытке записи на эти адреса?