LINUX.ORG.RU

Запись данных по физическому адресу


0

4

Здравствуйте!
Для одного теста нужно, по заранее известному физическому адресу, записать данные.
Подскажите пожалуйста, какой функцией это можно сделать из модуля ядра?
Писать нужно именно по физическому адресу, без маппирования.
Спасибо.

А линукс точно нужен? а то проще запустить бинарник грабом и записать по нужному адресу нужные данные. Имхо надежнее будет.

Deleted
()

можно в /dev/mem писать

SZT ★★★★★
()
Ответ на: комментарий от Dead

Если это не x86, то, как правило, просто берешь и пишешь.

А x86 чем отличается?

ТС, если «просто взять и записать», то не совсем понятно, почему нельзя просто:

*pointer = data

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

«А x86 чем отличается?»

Боюсь, что там могут быть нюансы в плане работы с VM. Там же есть понятия как физический, реальный и виртуальный адреса. Давно читал ldd, поэтому могу ошибиться.

ТС посоветую почитать LDD. Там это описано.

Dead ★★★★
()
Ответ на: комментарий от Dead

Боюсь, что там могут быть нюансы в плане работы с VM. Там же есть понятия как физический, реальный и виртуальный адреса.

А не на x86 их нет что ли? Есть, конечно, устройства без MMU, но на них, скорее всего, реже встречается Linux.

anonymous
()

ioremap_nocache

mv ★★★★★
()
Ответ на: комментарий от just_a_student

Можно в лоб если адрес известен.

iowrite32(val, (void __iomem *)phys_addr);

Но это прокатит если адрес находится не на выделенных страницах.

А так только ioremap или alloc_page.

geks
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.