![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
TIMA101 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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 месяца. Помогите бедному студенту Заранее спасибо! |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
читай DDK
|
|||
|
||||
Janus |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 26.9.2005 Репутация: нет Всего: 1 |
Халява! У нас лабы такие. Рыть надо в сторону всетаки не VC++, а Assembler. Например, ознакомься с топиком: http://forum.vingrad.ru/index.php?showtopic=58178. Возможны ассемблерные вставки в программу на C++ или отдельный модуль на асме. --------------------
Проект "Репликатор" |
|||
|
||||
adonin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 16.12.2005 Где: Новочеркасск Рост овская обл. Репутация: 2 Всего: 5 |
Не к ассемблеру, а к драйверу нулевого кольца. sgi1981 дал хорошую ссылку. Считаю необходимым повторить: I/O драйвер --------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР) |
|||
|
||||
Janus |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 26.9.2005 Репутация: нет Всего: 1 |
Да, и это тоже. В принципе, говорят, на С тоже можно работать с портами, но сам не знаю - не пробовал. --------------------
Проект "Репликатор" |
|||
|
||||
TIMA101 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
Разве нету каковонибудь оператора в С++ который мог бы записывать в определенный адресс определеннлое значение, без асемблера? С портом незачем работать это точно. На турбо си вся программа состоит из двух операторов outportb(0×21, а), inportb(BASE_5710 +2)! Которые записывают и считывают данные с платы. Там есть байт готовности. Когда он равен 1 считываю данные, он снова становиться равен нулю, я опять жду когда он будет равен еденицы... Все считанные данны я записываю в файл... На Турбо СИ все так просто!
И еще я не знаю, что такое драйвер нулевого кольца... Может уж я думаю не под винду, а под ДОС писать... Спасибо за проявленную активность ![]() Добавлено @ 06:26 Вообще даже IRQ запросы не надо использовать. В ссылке которую вы дали я еще глубоко не разбирался, но при беглом осмотре там тоже используються эти два простых оператора: outportb(0x378, 0xFF); value = inportb(0x378); Куда делись такие хорошие операторы в VC!!! Добавлено @ 06:29 И кстати я не знаю, что такое DDK!!! Я далеко не гуру в С++... Добавлено @ 06:34 Еще что такое DDK... Я далеко не гуру в С++... |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
смотри в мсдн раздел
Device Input and Output Control (IOCTL) TIMA101, DDK device development kit Это сообщение отредактировал(а) chaos - 18.4.2006, 07:05 |
|||
|
||||
adonin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 16.12.2005 Где: Новочеркасск Рост овская обл. Репутация: 2 Всего: 5 |
вообще то Driver Development Kit.
Эти операторы напрямую записывают ваши данные в порты платы. Адрес порта вы передаёте в параметре. Они выполняют ассемблерную команду out NPort, Date Ещё раз говорю: одна из особенностей защищённого режима работы процессора состоит в том, что существуют "Привилегированные" команды, которые может выполнить только привилегированный код (Ядро, драйверы устройств). К этим командам относится и команда out При исполнении кода ядра и драйверов процессор переводится в привилегированное состояние (нулевое кольцо привилегий). Прикладные программы исполняются в 3-м кольце привилегий, поэтому команда out им недоступна. Для работы с устройством в Win NT нужно: 1) если есть драйвер устройства, испрользуйте его. Вам придётся изучить правила взаимодействия с драйвером. 2) если драйвера нет, пишем драйвер, который будет писать в порты устройства переданные ему из приложения данные. Вам придётся изучить технологию написания драйвера (благо, ничего особо сложного в этом нет). Насчёт команд IOCTL - эти команды передаются ДРАЙВЕРУ устройства. А тот уже записью в порты изменяет состояние устройства. З.Ы. Хорошее задание, на диплом - самое оно ![]() Это сообщение отредактировал(а) adonin - 18.4.2006, 07:49 --------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР) |
|||
|
||||
TIMA101 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
Вот хоть какая то зацепка. Спасибо chaos! Щас буду разбираться! Но пока тема не закрыта!!!
Добавлено @ 08:00 adonin!!! Ты меня не пугай!!!Насчет драйвера не уверен надо поискать. Вроде в тех описании насчет драйвера ничего не ту!!! Писать драйвер, меня от этого сразу в холод и жар бросает... Щас если драйвер не найду то придеться что другое делать... Добавлено @ 08:03 adonin!!! Точно писать драйверы не сложно? Можно за неделю, вторую научиться? Там они пишуться на чем На С++ или на асемблере. Если на асемблере то это труба, ни когода его не юзал... |
|||
|
||||
TIMA101 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
Я встрял плакал мой красный диплом, хоть какой-нибудь получить
![]() |
|||
|
||||
adonin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 16.12.2005 Где: Новочеркасск Рост овская обл. Репутация: 2 Всего: 5 |
Не сложно. Нужно только DDK где го раздобыть. Там много примеров и всё описано. Но если лень читать by English, могу выслать книжку на русском. Правда она криво распознана, и примеров в ней нет. Но базовые представления об архитектуре NT и структуре драйвера она даёт. Примеров полно в интернете. Сейчас поищу что нибудь. Пишутся драйверы на С++. Если нужно, Вы всегда можете сделать ассемблерную вставку в С++ код. --------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР) |
|||
|
||||
TIMA101 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
Пожалуйсто делайте поправку что я не гуру в С++. Если что нибудь найдете шлите на ящик [email protected].
Спасибо вам за оказанное внимание ![]() Добавлено @ 08:24 Ксати adonin, мой номер аськи 234226513. Если что хотелось с вами держать связь... |
|||
|
||||
adonin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 16.12.2005 Где: Новочеркасск Рост овская обл. Репутация: 2 Всего: 5 |
TIMA101, выслал Вам книгу, и статейку одну. Там примеров несколько. Насчёт аськи: у меня её на шлюзе режут
![]() Добавлено @ 08:40 Если что, пишите в PM или на e-mail. (Значки внизу поста) --------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР) |
|||
|
||||
TIMA101 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
А вот под ДОС писать не легче будет?
|
|||
|
||||
adonin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 16.12.2005 Где: Новочеркасск Рост овская обл. Репутация: 2 Всего: 5 |
Легче. Dos не переводит процессор в защищённый режим, значит нет понятия привилегированных команд. Поэтому то в Turbo C и прокатывает outportb и inportb. Просто Вы спросили, как это сделать на VC, я вам ответил
![]() Это сообщение отредактировал(а) adonin - 18.4.2006, 09:52 --------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |