Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Доступ к памяти в Linux
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
vladimir_orl
Здравствуйте. Вопрос наверное поднимался уже.
Подскажите, как в Linux (на ARM926, наверное monta vista) получить прямой доступ к регистрам и памяти.
Через /proc/iomem всё видно, а при прямом обращении через указатели или memcpy() запрещает доступ.


Желательно на чистом Си, без использования специальных библиотек и с минимумом системных вызовов.
Кто-нибудь сталкивался?

SAURIS GmbH
без помощи со стороны ядра (драйвера ядра, например /dev/mem) - никак. Юзерский процесс не должен иметь доступа куда попало по его желанию. А с помощью ядра - легко. Как пример, работа с видеобуферами в режиме mmap в v4l2, или тот же /dev/mem
vladimir_orl
Спасибо большое.
Мне надо переконфигурировать устройство, отображаемое в память (изменить настройки регистров хардварного I2C). Драйвера как такогого у него я не нашёл,
вот хотел напрямую обратиться.

Регистры настроек, как я понял, отображаются напрямую в память.

Слышал, есть ещё mmap_device_io(), но что-то компилер на нём ошибку выдаёт.
Думаю, может, библиотеки надо дополнительно установить.
SAURIS GmbH
Цитата(vladimir_orl @ Feb 13 2013, 12:11) *
(изменить настройки регистров хардварного I2C). Драйвера как такогого у него я не нашёл, вот хотел напрямую обратиться.

Обязан быть. в drivers/i2c/busses - корректно патчить там, а не из юзер-спейса лезть в регистры. Тем более, что он имеет полное право все Ваши юзерские настройки переписать с нуля на свои в любой удобный ему момент
vladimir_orl
Но это тогда менять настройки для всех и постоянно, а здесь подправил частоту в процессе, поработал, поставил обратно.
Да и такого навроде i2cbus->set_freq(int freq) я не нашёл.

Ну и может мне на будущее прямой доступ пригодится, если свой драйвер написать надо будет.
SAURIS GmbH
Цитата(vladimir_orl @ Feb 13 2013, 12:28) *
Да и такого навроде i2cbus->set_freq(int freq) я не нашёл.


ну вот тут конкретно я не скажу, я же не знаю, какой именно у Вас там драйвер. К примеру, скорость шины для драйверов для OMAP передается при регистрации драйвера шины в системе. Ну в общем нет ничего сложного сделать эту фичу - зато будет корректно. К примеру, тот же драйвер шины ОМАПа инициализирует скорость перед каждой пересылкой, так что Ваш путь с ним бы был просто потерянным временем на попытку сходить в обход простого пути.
vladimir_orl
Спасибо большое. Тему можно считать закрытой.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.