Полная версия этой страницы:
Доступ к памяти в Linux
vladimir_orl
Feb 13 2013, 07:13
Здравствуйте. Вопрос наверное поднимался уже.
Подскажите, как в Linux (на ARM926, наверное monta vista) получить прямой доступ к регистрам и памяти.
Через /proc/iomem всё видно, а при прямом обращении через указатели или memcpy() запрещает доступ.
Желательно на чистом Си, без использования специальных библиотек и с минимумом системных вызовов.
Кто-нибудь сталкивался?
SAURIS GmbH
Feb 13 2013, 07:48
без помощи со стороны ядра (драйвера ядра, например /dev/mem) - никак. Юзерский процесс не должен иметь доступа куда попало по его желанию. А с помощью ядра - легко. Как пример, работа с видеобуферами в режиме mmap в v4l2, или тот же /dev/mem
vladimir_orl
Feb 13 2013, 08:11
Спасибо большое.
Мне надо переконфигурировать устройство, отображаемое в память (изменить настройки регистров хардварного I2C). Драйвера как такогого у него я не нашёл,
вот хотел напрямую обратиться.
Регистры настроек, как я понял, отображаются напрямую в память.
Слышал, есть ещё mmap_device_io(), но что-то компилер на нём ошибку выдаёт.
Думаю, может, библиотеки надо дополнительно установить.
SAURIS GmbH
Feb 13 2013, 08:19
Цитата(vladimir_orl @ Feb 13 2013, 12:11)

(изменить настройки регистров хардварного I2C). Драйвера как такогого у него я не нашёл, вот хотел напрямую обратиться.
Обязан быть. в drivers/i2c/busses - корректно патчить там, а не из юзер-спейса лезть в регистры. Тем более, что он имеет полное право все Ваши юзерские настройки переписать с нуля на свои в любой удобный ему момент
vladimir_orl
Feb 13 2013, 08:28
Но это тогда менять настройки для всех и постоянно, а здесь подправил частоту в процессе, поработал, поставил обратно.
Да и такого навроде i2cbus->set_freq(int freq) я не нашёл.
Ну и может мне на будущее прямой доступ пригодится, если свой драйвер написать надо будет.
SAURIS GmbH
Feb 13 2013, 08:57
Цитата(vladimir_orl @ Feb 13 2013, 12:28)

Да и такого навроде i2cbus->set_freq(int freq) я не нашёл.
ну вот тут конкретно я не скажу, я же не знаю, какой именно у Вас там драйвер. К примеру, скорость шины для драйверов для OMAP передается при регистрации драйвера шины в системе. Ну в общем нет ничего сложного сделать эту фичу - зато будет корректно. К примеру, тот же драйвер шины ОМАПа инициализирует скорость перед каждой пересылкой, так что Ваш путь с ним бы был просто потерянным временем на попытку сходить в обход простого пути.
vladimir_orl
Feb 13 2013, 09:19
Спасибо большое. Тему можно считать закрытой.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.