Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с внешней платой. (IRQ, ввод вывод данных с, IRQ, ввод вывод данных с определенных ад 
:(
    Опции темы
TIMA101
Дата 17.4.2006, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.4.2006

Репутация: нет
Всего: нет



У меня такая проблема. Иметься у нас плата АЦП фирмы Octagon модель 5710. Она вставляется в порт ISA. Путем установки перемычек можно установить базовый адрес платы (100H, 110H, …170H). Управление платой происходит путем записывания определенных битов (байтов) в адреса платы. Например, запуск преобразования платы происходит путем записи числа 255H на адрес BASE + 0, где я понял BASE – это базовый адрес. Считывание информации также происходит с определенных адресов. В Turbo – C используют операторы outportb и inportb(например outportb(0×21, а),  inportb(BASE_5710 +2). Подскажите какие аналогичные операторы можно использовать в VC!!! Это первый вопрос. Еще при считывании информации мне нужно использовать прерывания IRQ, я так понял для этого нужно использовать класс CIM_IRQ. Мне бы кто-нибудь прокомментировал бы его на примере. 
Честно говоря с понятием базового адреса я впервые столкнулся на этой плате, если у кого есть опыт работы с такой или аналогичной платы пишите и/или дайте ссылок. Это мой диплом, а осталось 1,5 месяца. Помогите бедному студенту 

Заранее спасибо!
 
PM MAIL   Вверх
chaos
Дата 17.4.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



читай DDK 
PM WWW   Вверх
Janus
Дата 17.4.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 26.9.2005

Репутация: нет
Всего: 1



Цитата(TIMA101 @  17.4.2006,  08:02 Найти цитируемый пост)
Это мой диплом, а осталось 1,5 месяца

Халява! У нас лабы такие.

Рыть надо в сторону всетаки не VC++, а Assembler. Например, ознакомься с топиком: http://forum.vingrad.ru/index.php?showtopic=58178. Возможны ассемблерные вставки в программу на C++ или отдельный модуль на асме. 
--------------------
Проект "Репликатор" 
PM MAIL   Вверх
adonin
Дата 17.4.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 16.12.2005
Где: Новочеркасск Рост овская обл.

Репутация: 2
Всего: 5



Цитата(Janus @  17.4.2006,  11:03 Найти цитируемый пост)
Рыть надо в сторону всетаки не VC++, а Assembler

Не к ассемблеру, а к драйверу нулевого кольца. 

sgi1981 дал хорошую ссылку. Считаю необходимым повторить:
I/O драйвер 
--------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР)
PM MAIL   Вверх
Janus
Дата 17.4.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 26.9.2005

Репутация: нет
Всего: 1



Цитата(adonin @  17.4.2006,  16:52 Найти цитируемый пост)
Не к ассемблеру, а к драйверу нулевого кольца. 

Да, и это тоже. В принципе, говорят, на С тоже можно работать с портами, но сам не знаю - не пробовал. 
--------------------
Проект "Репликатор" 
PM MAIL   Вверх
TIMA101
Дата 18.4.2006, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.4.2006

Репутация: нет
Всего: нет



Разве нету каковонибудь оператора в С++ который мог бы записывать в определенный адресс определеннлое значение, без асемблера? С портом незачем работать это точно. На турбо си вся программа состоит из двух операторов outportb(0×21, а),  inportb(BASE_5710 +2)! Которые записывают и считывают данные с платы. Там есть байт готовности. Когда он равен 1 считываю данные, он снова становиться равен нулю, я опять жду когда он будет равен еденицы... Все считанные данны я записываю в файл... На Турбо СИ все так просто!
И еще я не знаю, что такое драйвер нулевого кольца... Может уж я думаю не под винду, а под ДОС писать...

Спасибо за проявленную активность smile

Добавлено @ 06:26 
Вообще даже IRQ запросы не надо использовать. В ссылке которую вы дали я еще глубоко не разбирался, но при беглом осмотре там тоже используються эти два простых оператора: outportb(0x378, 0xFF);
value = inportb(0x378); 
Куда делись такие хорошие операторы в VC!!!

Добавлено @ 06:29 
И кстати  я не знаю, что такое DDK!!! Я далеко не гуру в С++...

Добавлено @ 06:34 
Еще что такое DDK... Я далеко не гуру в С++... 
PM MAIL   Вверх
chaos
Дата 18.4.2006, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



смотри в мсдн раздел 
Device Input and Output Control (IOCTL)

TIMA101, DDK 
device development kit

 

Это сообщение отредактировал(а) chaos - 18.4.2006, 07:05
PM WWW   Вверх
adonin
Дата 18.4.2006, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 16.12.2005
Где: Новочеркасск Рост овская обл.

Репутация: 2
Всего: 5



Цитата(chaos @  18.4.2006,  07:01 Найти цитируемый пост)
DDK 
device development kit

вообще то Driver Development Kit.
Цитата(TIMA101 @  18.4.2006,  06:20 Найти цитируемый пост)
На турбо си вся программа состоит из двух операторов outportb(0×21, а),  inportb(BASE_5710 +2)! 

Эти операторы напрямую записывают ваши данные в порты платы. Адрес порта вы передаёте в параметре. Они выполняют ассемблерную команду out NPort, Date
Ещё раз говорю: одна из особенностей защищённого режима работы процессора состоит в том, что существуют "Привилегированные" команды, которые может выполнить только привилегированный код (Ядро, драйверы устройств). К этим командам относится и команда out При исполнении кода ядра и драйверов процессор переводится в привилегированное состояние (нулевое кольцо привилегий). Прикладные программы исполняются в 3-м кольце привилегий, поэтому команда out им недоступна. Для работы с устройством в Win NT нужно:
1) если есть драйвер устройства, испрользуйте его. Вам придётся изучить правила взаимодействия с драйвером.
2) если драйвера нет, пишем драйвер, который будет писать в порты устройства переданные ему из приложения данные. Вам придётся изучить технологию написания драйвера (благо, ничего особо сложного в этом нет).
Насчёт команд IOCTL - эти команды передаются ДРАЙВЕРУ устройства. А тот уже записью в порты изменяет состояние устройства.

З.Ы. Хорошее задание, на диплом - самое оно  smile   

Это сообщение отредактировал(а) adonin - 18.4.2006, 07:49
--------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР)
PM MAIL   Вверх
TIMA101
Дата 18.4.2006, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.4.2006

Репутация: нет
Всего: нет



Вот хоть какая то зацепка. Спасибо chaos! Щас буду разбираться! Но пока тема не закрыта!!!

Добавлено @ 08:00 
adonin!!! Ты меня не пугай!!!Насчет драйвера не уверен надо поискать. Вроде в тех описании насчет драйвера ничего не ту!!! Писать драйвер, меня от этого сразу в холод и жар бросает... Щас если драйвер не найду то придеться что другое делать...

Добавлено @ 08:03 
adonin!!! Точно писать драйверы не сложно? Можно за неделю, вторую научиться? Там они пишуться на чем На С++ или на асемблере. Если на асемблере то это труба, ни когода его не юзал... 
PM MAIL   Вверх
TIMA101
Дата 18.4.2006, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.4.2006

Репутация: нет
Всего: нет



Я встрял плакал мой красный диплом, хоть какой-нибудь получить smile !!! 
PM MAIL   Вверх
adonin
Дата 18.4.2006, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 16.12.2005
Где: Новочеркасск Рост овская обл.

Репутация: 2
Всего: 5



Цитата(TIMA101 @  18.4.2006,  07:54 Найти цитируемый пост)
Точно писать драйверы не сложно? Можно за неделю, вторую научиться? Там они пишуться на чем На С++ или на асемблере

Не сложно. Нужно только DDK где го раздобыть. Там много примеров и всё описано. Но если лень читать by English, могу выслать книжку на русском. Правда она криво распознана, и примеров в ней нет. Но базовые представления об архитектуре NT и структуре драйвера она даёт. Примеров полно в интернете. Сейчас поищу что нибудь.
Пишутся драйверы на С++. Если нужно, Вы всегда можете сделать ассемблерную вставку в С++ код. 
--------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР)
PM MAIL   Вверх
TIMA101
Дата 18.4.2006, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.4.2006

Репутация: нет
Всего: нет



Пожалуйсто делайте поправку что я не гуру в С++. Если что нибудь найдете шлите на ящик [email protected]

Спасибо вам за оказанное внимание smile

Добавлено @ 08:24 
Ксати adonin, мой номер аськи 234226513. Если что хотелось с вами держать связь... 
PM MAIL   Вверх
adonin
Дата 18.4.2006, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 16.12.2005
Где: Новочеркасск Рост овская обл.

Репутация: 2
Всего: 5



TIMA101,  выслал Вам книгу, и статейку одну. Там примеров несколько. Насчёт аськи: у меня её на шлюзе режут  smile. Сейчас админы придут, может откроют.

Добавлено @ 08:40 
Если что, пишите в PM или на e-mail. (Значки внизу поста) 
--------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР)
PM MAIL   Вверх
TIMA101
Дата 18.4.2006, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.4.2006

Репутация: нет
Всего: нет



А вот под ДОС писать не легче будет? 
PM MAIL   Вверх
adonin
Дата 18.4.2006, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 16.12.2005
Где: Новочеркасск Рост овская обл.

Репутация: 2
Всего: 5



Легче. Dos не переводит процессор в защищённый режим, значит нет понятия привилегированных команд. Поэтому то в Turbo C и прокатывает outportb и inportb. Просто Вы спросили, как это сделать на VC, я вам ответил  smile   

Это сообщение отредактировал(а) adonin - 18.4.2006, 09:52
--------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0900 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.