реклама на сайте
подробности

 
 
> Как в Linux увеличить количество устройств /dev/mem
Oops
сообщение Dec 27 2010, 00:41
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 129
Регистрация: 28-08-08
Из: г.Омск
Пользователь №: 39 870



Здравствуйте!!!

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

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

Спасибо!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Dima_G
сообщение Dec 27 2010, 02:16
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



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


man mknod ?
Go to the top of the page
 
+Quote Post
PrSt
сообщение Dec 27 2010, 04:42
Сообщение #3


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



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

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

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

Спасибо!!!

по моему это в лоб не рещается
причина простая, кернел при распаковке, детектит последние адреса, и распаковывается в конец памяти, таким образом он уже по умолчанию работает с всей памятью.
возможно существуют на кернел.орге патчи для такого.
но сомниваюсь в этом


--------------------
Go to the top of the page
 
+Quote Post
faa
сообщение Dec 27 2010, 07:32
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394



Цитата(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);
/* и т.д. */



Сообщение отредактировал faa - Dec 27 2010, 08:23
Go to the top of the page
 
+Quote Post
Oops
сообщение Jan 6 2011, 03:57
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 129
Регистрация: 28-08-08
Из: г.Омск
Пользователь №: 39 870



Цитата(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*
и используя его тоже организовать работу с этим Девайсом.

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

Спасибо!!!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 10:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016