Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как в Linux увеличить количество устройств /dev/mem
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
Oops
Здравствуйте!!!

Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам.
Используется Операционная Система Linux 2.6

Подскажите как это сделать?

Спасибо!!!
Dima_G
Цитата(Oops @ Dec 27 2010, 09:41) *
Подскажите как это сделать?


man mknod ?
PrSt
Цитата(Oops @ Dec 27 2010, 05:41) *
Здравствуйте!!!

Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам.
Используется Операционная Система Linux 2.6

Подскажите как это сделать?

Спасибо!!!

по моему это в лоб не рещается
причина простая, кернел при распаковке, детектит последние адреса, и распаковывается в конец памяти, таким образом он уже по умолчанию работает с всей памятью.
возможно существуют на кернел.орге патчи для такого.
но сомниваюсь в этом
faa
Цитата(Oops @ Dec 27 2010, 06:41) *
Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам.
Используется Операционная Система Linux 2.6

Стесняюсь спросить, а зачем? wink.gif
Одной программе достаточно одного такого девайса.
А у других программ будет у каждой свой экземпляр.
Посмотрите исходник devmem.c - все сразу станет ясно.

Или так
Код
if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) FATAL;
...
map_bram = mmap(NULL, MAP_RAM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, RAM_ADDR);
map_regs = mmap(NULL, MAP_REG_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, REG_ADDR);
/* и т.д. */

Oops
Цитата(faa @ Dec 27 2010, 13:32) *
Стесняюсь спросить, а зачем? wink.gif
Одной программе достаточно одного такого девайса.
А у других программ будет у каждой свой экземпляр.
Посмотрите исходник devmem.c - все сразу станет ясно.

Или так
Код
if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) FATAL;
...
map_bram = mmap(NULL, MAP_RAM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, RAM_ADDR);
map_regs = mmap(NULL, MAP_REG_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, REG_ADDR);
/* и т.д. */


В общем чтобы получить доступ к физическим адресам Девайса и работать с ним, я использовал устрйство /dev/mem.
Затем появился еще один нестандартный Девайс*, думал может можно будет создать еще одно устройство /dev/mem*
и используя его тоже организовать работу с этим Девайсом.

(опыта в разработке драйверов пока нету и времени мало чтобы освоить, проблема собственно в получении доступа к физическим адресам устройства )

Спасибо!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.