Мне необходимо из моей программы на С++ обратится к ячейки памяти с фиксированным адресом для чтения/записи если кто может подсказать как это сделать под Linux или где прочитать буду бесконечно признателен.
P.S. Если мой вопрос показался вам лаймерским просьба не пинать меня ногами сильно. Я только недавно начал пытаться программировать под Linux.
Скорее всего, Colobok путает понятия физическая и виртуальная память - а именно для него это одно и то же. В любом случае, уточни, для что ты пытаешься сделать своей программой и тогда можно будет рассмотреть возможные решения проблемы (если она еще останется)
Программа пишется для взаимодействия с платой (плата не стандартная и драйверов к ней нет), плата пишет и читает данные в эту ячейку и таким образом осуществляется взаимодействие с программным обеспечение. Как я понимаю (поправьте меня пожалуйста если я не прав) что бы реализовать работу с платой в Linux надо написать драйвер/модуль который необходимо встроить в ядро ОС?
в любой современной ОС для непосредственного доступа к железу необходимо аботать в 0-ом кольце - а это драйвер обычно, ну уже потом можно взаимодействовать с этим драйвером через некоторый интерфейс из 3-его кольца, т.е. пользовательского режима... далее написание драйвера обычно зависит от того куда и как эта плата цепляется (имеется в виду через какой интерфейс PC) ... в принципе в сети, пожалуй, можно найти достаточно инфы... попробуй в поисковике - Linux Device Drivers , Alessandro Rubini правда на англ. яз. - мот поможет хотя бы получить представление о написании драйверов
Лдно замечание: если плата пишет в фиксированую ячейку памяти, то предстоит нехилая работенка: как минимум, нужно запретить ядру размещать программы в этом участке памяти. Или это не ячейка памяти а порт ввода/вывода?
Опыт растет прямо пропорционально выведенному из строя оборудованию
скорее должен быть порт ввода-вывода, либо плата должна поддерживать некоторый интерфейс инициализации - когда ей будут сообщены адреса по которым она сможет работать ... далее мне кажется сомнительно что плата сама по себе может писать в оперативную память компа - чтоли некоторая DMA из платы в память - в любом случае для этого тем более необходим интерфейс инициализации
т.е.
либо - порты ввода -вывода (логично )
либо - наличие некоторого интерфейса апаратной инициализации для платы когда ей можно назначить некоторые адреса (например ядром )
А если порты - то всё просто (если нужно только по-быстрому протестить некритичную к скорости обмена данными железку):
man: ioperm(2)
inb, outb (функции не документированы, поскольку зловредны)
"Но в декабре я по ошибке позвонил вместо
модема на винчестер." (Linus Torvalds, "Just for fun")