Oops 0 27 декабря, 2010 Опубликовано 27 декабря, 2010 · Жалоба Здравствуйте!!! Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам. Используется Операционная Система Linux 2.6 Подскажите как это сделать? Спасибо!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DimaG 0 27 декабря, 2010 Опубликовано 27 декабря, 2010 · Жалоба Подскажите как это сделать? man mknod ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 27 декабря, 2010 Опубликовано 27 декабря, 2010 · Жалоба Здравствуйте!!! Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам. Используется Операционная Система Linux 2.6 Подскажите как это сделать? Спасибо!!! по моему это в лоб не рещается причина простая, кернел при распаковке, детектит последние адреса, и распаковывается в конец памяти, таким образом он уже по умолчанию работает с всей памятью. возможно существуют на кернел.орге патчи для такого. но сомниваюсь в этом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 27 декабря, 2010 Опубликовано 27 декабря, 2010 (изменено) · Жалоба Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам. Используется Операционная Система Linux 2.6 Стесняюсь спросить, а зачем? ;) Одной программе достаточно одного такого девайса. А у других программ будет у каждой свой экземпляр. Посмотрите исходник 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); /* и т.д. */ Изменено 27 декабря, 2010 пользователем faa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oops 0 6 января, 2011 Опубликовано 6 января, 2011 · Жалоба Стесняюсь спросить, а зачем? ;) Одной программе достаточно одного такого девайса. А у других программ будет у каждой свой экземпляр. Посмотрите исходник 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* и используя его тоже организовать работу с этим Девайсом. (опыта в разработке драйверов пока нету и времени мало чтобы освоить, проблема собственно в получении доступа к физическим адресам устройства ) Спасибо!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться