Oops 0 Posted December 27, 2010 · Report post Здравствуйте!!! Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам. Используется Операционная Система Linux 2.6 Подскажите как это сделать? Спасибо!!! Quote Ответить с цитированием Share this post Link to post Share on other sites
DimaG 0 Posted December 27, 2010 · Report post Подскажите как это сделать? man mknod ? Quote Ответить с цитированием Share this post Link to post Share on other sites
prst 0 Posted December 27, 2010 · Report post Здравствуйте!!! Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам. Используется Операционная Система Linux 2.6 Подскажите как это сделать? Спасибо!!! по моему это в лоб не рещается причина простая, кернел при распаковке, детектит последние адреса, и распаковывается в конец памяти, таким образом он уже по умолчанию работает с всей памятью. возможно существуют на кернел.орге патчи для такого. но сомниваюсь в этом Quote Ответить с цитированием Share this post Link to post Share on other sites
faa 0 Posted December 27, 2010 (edited) · Report post Возникла необходимость увеличить количество устройств /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); /* и т.д. */ Edited December 27, 2010 by faa Quote Ответить с цитированием Share this post Link to post Share on other sites
Oops 0 Posted January 6, 2011 · Report post Стесняюсь спросить, а зачем? ;) Одной программе достаточно одного такого девайса. А у других программ будет у каждой свой экземпляр. Посмотрите исходник 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* и используя его тоже организовать работу с этим Девайсом. (опыта в разработке драйверов пока нету и времени мало чтобы освоить, проблема собственно в получении доступа к физическим адресам устройства ) Спасибо!!! Quote Ответить с цитированием Share this post Link to post Share on other sites