Re[3]: Взаимодействие приложений в DOS
От: kvasya  
Дата: 16.09.09 05:47
Оценка: +3
Здравствуйте, Kernel0, Вы писали:


K>Я думал, это достаточно общий вопрос. Не знаю, что еще добавить, чтобы еще более полно раскрыть ситуацию.


Вектора прерываний перехватываются?
Если с железом работает, вполне может по прерыванию выполняться
Re: Взаимодействие приложений в DOS
От: ilnar Россия  
Дата: 15.09.09 20:25
Оценка: +1 :)
Здравствуйте, Аноним, Вы писали:

А>Добрый вечер.


А>Я начинающий программист, и у меня возникла проблема. Это проблема настолько общего характера, что это меня тревожит. Возможно, я выбрал неудачную тему для своего вопроса, поэтому заранее прошу прощения у модератора, если это так.


А>Итак, есть некий комплекс ПО (несколько программ и драйверов), которые работают на контроллерах под управлением (если я правильно понимаю) ОС DOS. Мне поручено разобраться в одной из этих программ, но вот затык: одна из самых важных функций в коде программы не вызывается. Вообще! Тем не менее, известно абсолютно точно, что она выполняется. И вот вопрос: каким образом? Есть предположение, что функция вызывается из другой программы, точнее из драйвера, т.к. эта программа работает в содружестве с драйвером — так ли это? Если да, то что это за механизм и где про него прочитать? Если нет, то как еще это объяснить?



Оффтоп: угораздило же тебя, в век космических полетов на марс, и других великих откровений типа windows 7, начинать карьеру с DOS.
Re: Оффтопик, но
От: bazis1 Канада  
Дата: 16.09.09 08:15
Оценка: -1
Чем быстрее и дружнее народ будет валить из подобных контор, тем быстрее народ осознает, кто контроллеры бывают с JTAG-ом, отладочные комплексы для них существуют не только на бумаге, а ДОС умер давным-давно.
Мой совет, не надо портить себе жизнь — валите из этой конторы. Всё равно, софт с таким подходом будет наиглючнейший, а крайним выйдете Вы.
Взаимодействие приложений в DOS
От: Аноним  
Дата: 15.09.09 19:05
Оценка:
Добрый вечер.

Я начинающий программист, и у меня возникла проблема. Это проблема настолько общего характера, что это меня тревожит. Возможно, я выбрал неудачную тему для своего вопроса, поэтому заранее прошу прощения у модератора, если это так.

Итак, есть некий комплекс ПО (несколько программ и драйверов), которые работают на контроллерах под управлением (если я правильно понимаю) ОС DOS. Мне поручено разобраться в одной из этих программ, но вот затык: одна из самых важных функций в коде программы не вызывается. Вообще! Тем не менее, известно абсолютно точно, что она выполняется. И вот вопрос: каким образом? Есть предположение, что функция вызывается из другой программы, точнее из драйвера, т.к. эта программа работает в содружестве с драйвером — так ли это? Если да, то что это за механизм и где про него прочитать? Если нет, то как еще это объяснить?

16.09.09 11:49: Перенесено модератором из 'C/C++' — Кодт
Re: Взаимодействие приложений в DOS
От: Nik_1 Россия  
Дата: 15.09.09 20:44
Оценка:
а если брекпоинт поставить попадает туда?
Re: Взаимодействие приложений в DOS
От: Pavel Dvorkin Россия  
Дата: 16.09.09 04:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый вечер.


А>Я начинающий программист, и у меня возникла проблема. Это проблема настолько общего характера, что это меня тревожит. Возможно, я выбрал неудачную тему для своего вопроса, поэтому заранее прошу прощения у модератора, если это так.


А>Итак, есть некий комплекс ПО (несколько программ и драйверов), которые работают на контроллерах под управлением (если я правильно понимаю) ОС DOS.


Что-то мне подозрительна MS-DOS на контроллерах. Можно подробнее про эти контроллеры ? Процессор там какой ?

>Мне поручено разобраться в одной из этих программ, но вот затык: одна из самых важных функций в коде программы не вызывается. Вообще! Тем не менее, известно абсолютно точно, что она выполняется. И вот вопрос: каким образом? Есть предположение, что функция вызывается из другой программы


Что еще за другая программа в DOS ? MS-DOS — однопрограммная ОС.


>точнее из драйвера, т.к. эта программа работает в содружестве с драйвером — так ли это?


Теоретически в MS-DOS возможно все без исключения, но чтобы драйвер вызывал программу — вряд ли. Как он без программы-то работать будет ?


>Если да, то что это за механизм и где про него прочитать? Если нет, то как еще это объяснить?


Давай побольше подробностей, пока что сказать что-то трудно.
With best regards
Pavel Dvorkin
Re[2]: Взаимодействие приложений в DOS
От: Kernel0  
Дата: 16.09.09 05:12
Оценка:
Здравствуйте, Nik_1, Вы писали:

N_>а если брекпоинт поставить попадает туда?


Нет, не попадает, но это ничего не значит: прога запускалась на ПК и только она (полагаю, тот драйвер запускать под Виндой бессмысленно). А на контроллере Борланд С не поставишь для дебаггинга =(.
Re[2]: Взаимодействие приложений в DOS
От: Kernel0  
Дата: 16.09.09 05:32
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Что-то мне подозрительна MS-DOS на контроллерах. Можно подробнее про эти контроллеры ? Процессор там какой ?


Там точно MS-DOS. А вот этот процессор: http://ru.wikipedia.org/wiki/Am5x86#Am5x86

PD>Что еще за другая программа в DOS ? MS-DOS — однопрограммная ОС.


Я тоже сначала удивился =). Но, по-видимому, все программы кроме главной являются резидентными. Иначе как это еще объяснить?

>>Если да, то что это за механизм и где про него прочитать? Если нет, то как еще это объяснить?

PD>Давай побольше подробностей, пока что сказать что-то трудно.

Я думал, это достаточно общий вопрос. Не знаю, что еще добавить, чтобы еще более полно раскрыть ситуацию.
Re[3]: Взаимодействие приложений в DOS
От: MasterZiv СССР  
Дата: 16.09.09 05:49
Оценка:
Kernel0 wrote:

> PD>Что еще за другая программа в DOS ? MS-DOS — однопрограммная ОС.

>
> Я тоже сначала удивился =). Но, по-видимому, все программы кроме главной
> являются резидентными. Иначе как это еще объяснить?

Запросто в досе может быть несколько программ. Одна программа, не
выгружаясь, или выгружаясь частично (это правда будет её собственные
проблемы), может запустить другую. Это входит в функции операционной
системы DOS. Ну и ещё есть TSR-программы, работающие "в фоне".
Ну, и драйвера, конечно, хотя это уже не совсем программы.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Взаимодействие приложений в DOS
От: Pavel Dvorkin Россия  
Дата: 16.09.09 06:25
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Запросто в досе может быть несколько программ. Одна программа, не

MZ>выгружаясь, или выгружаясь частично (это правда будет её собственные
MZ>проблемы), может запустить другую.

Может, конечно, но чтобы эта запущенная программа вдруг начала вызывать функции из своего родителя — вряд ли. Хотя чего не бывает...

> Это входит в функции операционной системы DOS. Ну и ещё есть TSR-программы, работающие "в фоне".


TSR обычно с программой, работающей сейчас, не взаимодействуют. Наоборот — возможно.
With best regards
Pavel Dvorkin
Re[3]: Взаимодействие приложений в DOS
От: Pavel Dvorkin Россия  
Дата: 16.09.09 06:27
Оценка:
Здравствуйте, Kernel0, Вы писали:

K>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Что-то мне подозрительна MS-DOS на контроллерах. Можно подробнее про эти контроллеры ? Процессор там какой ?


K>Там точно MS-DOS. А вот этот процессор: http://ru.wikipedia.org/wiki/Am5x86#Am5x86


Ладно. Тогда вопрос такой — какой компилятор ?
With best regards
Pavel Dvorkin
Re: Взаимодействие приложений в DOS
От: quodum  
Дата: 16.09.09 06:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Итак, есть некий комплекс ПО (несколько программ и драйверов), которые работают на контроллерах под управлением (если я правильно понимаю) ОС DOS. Мне поручено разобраться в одной из этих программ, но вот затык: одна из самых важных функций в коде программы не вызывается. Вообще! Тем не менее, известно абсолютно точно, что она выполняется. И вот вопрос: каким образом? Есть предположение, что функция вызывается из другой программы, точнее из драйвера, т.к. эта программа работает в содружестве с драйвером — так ли это? Если да, то что это за механизм и где про него прочитать? Если нет, то как еще это объяснить?


Для начала я бы предложил прогнать полнотекстовый поиск по всем файлам проекта на имя этой функции (если это ещё не проделано). Есть неплохой шанс, что эта функция регистрируется в качестве callback'а в драйвере -- или даже в самой программе -- путём передачи указателя на неё куда-то, откуда она затем вызывается по указателю.

Если это не так, то надо искать различные трюки, с помощью которых адрес функции может стать известен вовне. Например, она может быть первой функцией сегмента. Или даже map-файл программы может парситься на предмет извлечения адреса функции, и потом этот адрес зашивается в драйвер. Но это маловероятно, потому как негибко (отлаживать/поддерживать неудобно). Технически для драйвера или TSR нет никакой проблемы вызвать что угодно где угодно -- адресное пространство под ДОС одно на всех. Тут я бы предложил начинать копать от установления связи программы с драйвером (она же наверно делает какую-то инициализацию в начале работы).
Re[3]: Взаимодействие приложений в DOS
От: Sergey Россия  
Дата: 16.09.09 06:48
Оценка:
Здравствуйте, Kernel0, Вы писали:

N_>>а если брекпоинт поставить попадает туда?


K>Нет, не попадает, но это ничего не значит: прога запускалась на ПК и только она (полагаю, тот драйвер запускать под Виндой бессмысленно). А на контроллере Борланд С не поставишь для дебаггинга =(.


Тебе отладчик надо не от Борланд С, а soft ice досовский — кажется последняя версия была 2.81. Он через com-порт работать умеет. Правда глюкало жуткое. Что же касается вопроса, то та функция наверняка вызывается как обработчик прерывания.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: Взаимодействие приложений в DOS
От: MaxGl Украина  
Дата: 16.09.09 08:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>...одна из самых важных функций в коде программы не вызывается. Вообще! Тем не менее, известно абсолютно точно, что она выполняется.

1. Эта функция — обработчик прерывания.
2. Функция может вызываться через переменную-указатель-на-функцию.

Поищи по исходникам все места, где фигурирует имя этой функции — ситуация должна проясниться.
Re[2]: Оффтопик, но
От: quodum  
Дата: 16.09.09 13:53
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Чем быстрее и дружнее народ будет валить из подобных контор, тем быстрее народ осознает, кто контроллеры бывают с JTAG-ом, отладочные комплексы для них существуют не только на бумаге, а ДОС умер давным-давно.

B>Мой совет, не надо портить себе жизнь — валите из этой конторы. Всё равно, софт с таким подходом будет наиглючнейший, а крайним выйдете Вы.

Вы неправы. Есть довольно узкая, но отнюдь не микроскопическая ниша "промышленных PC", которые строятся на контроллерных вариантах x86 (начиная с 80186, хотя nowadays всё же в основном пентиумы) и комплектуются ДОСом на флэш-диске. Погуглите Octagon Systems для примера.
Re: Взаимодействие приложений в DOS
От: Kernel0  
Дата: 16.09.09 19:19
Оценка:
Всем спасибо за ответы. Все гораздо проще: функция все же вызывается из этой программы, но настолько залихватским образом, что я чуть не сломал себе мозг. В общем, обожаю ООП. Сорри тем, у кого отнял время, это, как говорится, меа кульпа.
Re[3]: Оффтопик, но
От: bazis1 Канада  
Дата: 16.09.09 19:44
Оценка:
Здравствуйте, quodum, Вы писали:

Q>Вы неправы. Есть довольно узкая, но отнюдь не микроскопическая ниша "промышленных PC", которые строятся на контроллерных вариантах x86 (начиная с 80186, хотя nowadays всё же в основном пентиумы) и комплектуются ДОСом на флэш-диске. Погуглите Octagon Systems для примера.


Это единственный тип контроллеров, решающих свой круг задач? Абсолютно нет альтернатив? Есть рынок, но на нем нет развития за последние 20 лет? ИМХО, дело в инерционности конторы, не желающей разово вложиться в переход на новое железо с куда более коротким циклом разработки.
Re[4]: Оффтопик, но
От: Аноним  
Дата: 16.09.09 20:58
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Это единственный тип контроллеров, решающих свой круг задач? Абсолютно нет альтернатив? Есть рынок, но на нем нет развития за последние 20 лет? ИМХО, дело в инерционности конторы, не желающей разово вложиться в переход на новое железо с куда более коротким циклом разработки.


Переход на новое железо давно сделан. Но надо поддерживать и старое...
Re[4]: Оффтопик, но
От: MaxGl Украина  
Дата: 16.09.09 21:19
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Это единственный тип контроллеров, решающих свой круг задач? Абсолютно нет альтернатив? Есть рынок, но на нем нет развития за последние 20 лет? ИМХО, дело в инерционности конторы, не желающей разово вложиться в переход на новое железо с куда более коротким циклом разработки.

Есть.
Только переход на новое железо тянет за собой большие проблемы. Это промышленные контроллеры, а не consumer-electronics (и тем более не софт для РС).
Чтобы перейти на новое железо, надо перерисовать все схемы, переразвести платы, переписать все драйверы, а потом пройти кучу сертификаций на электромагнитную совместимость, вибростойкость, надежность и т.д.
Все это стоит дофига денег. Гораздо проще сидеть на старом железе.
А вот привязка к ОС не совсем понятна... Но если посмотреть на производимые РС104 модули, то почти все они окажутся на х86. А драйверы уже давно под DOS написаны.
Bloody legacy
Re[2]: Взаимодействие приложений в DOS
От: Privalov  
Дата: 17.09.09 09:00
Оценка:
Здравствуйте, Kernel0, Вы писали:

K>Всем спасибо за ответы. Все гораздо проще: функция все же вызывается из этой программы, но настолько залихватским образом, что я чуть не сломал себе мозг. В общем, обожаю ООП. Сорри тем, у кого отнял время, это, как говорится, меа кульпа.


Можешь озвучить подробности? Мало ли, кому-то покажется интересным, а у других, кроме того, выжмет скупую мужскую слезу.
Re[4]: Оффтопик, но
От: Dzirt2005  
Дата: 17.09.09 10:18
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Здравствуйте, quodum, Вы писали:


Q>>Вы неправы. Есть довольно узкая, но отнюдь не микроскопическая ниша "промышленных PC", которые строятся на контроллерных вариантах x86 (начиная с 80186, хотя nowadays всё же в основном пентиумы) и комплектуются ДОСом на флэш-диске. Погуглите Octagon Systems для примера.


B>Это единственный тип контроллеров, решающих свой круг задач? Абсолютно нет альтернатив? Есть рынок, но на нем нет развития за последние 20 лет? ИМХО, дело в инерционности конторы, не желающей разово вложиться в переход на новое железо с куда более коротким циклом разработки.


Могу сказать с чем столкнулся лично — скорость запуска после подачи питания. Для нас это было критично, а микроконтроллер с DOS стартовал менее чем за 2 секунды (это вместе с BIOS, загрузкой DOS и программой управления устройством). Linux мне не удалось заставить стартовать менее чем за 18 секунд. Это без программы.
Re[5]: Оффтопик, но
От: ДимДимыч Украина http://klug.org.ua
Дата: 17.09.09 10:34
Оценка:
Здравствуйте, Dzirt2005, Вы писали:

D>Linux мне не удалось заставить стартовать менее чем за 18 секунд. Это без программы.


CONFIG_PRINTK пробовали отключать?
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[6]: Оффтопик, но
От: Dzirt2005  
Дата: 17.09.09 16:16
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

ДД>Здравствуйте, Dzirt2005, Вы писали:


D>>Linux мне не удалось заставить стартовать менее чем за 18 секунд. Это без программы.


ДД>CONFIG_PRINTK пробовали отключать?


Нет, но попробую. Хотя все равно я сомневаюсь, что он стартует как DOS, за ~1.5 сек...
Re[7]: Оффтопик, но
От: ДимДимыч Украина http://klug.org.ua
Дата: 17.09.09 17:04
Оценка:
Здравствуйте, Dzirt2005, Вы писали:

ДД>>CONFIG_PRINTK пробовали отключать?


D>Нет, но попробую. Хотя все равно я сомневаюсь, что он стартует как DOS, за ~1.5 сек...


За 1.5 сек на PC вряд ли. Но мне удавалось сократить время загрузки с момента включения до старта приложения до 5 сек, на материнке VIA Epia и каким-то Cyrix 1 Ггц. Около половины времени при этом занимала POST BIOS'а.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[8]: Оффтопик, но
От: Dzirt2005  
Дата: 17.09.09 17:47
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

ДД>Здравствуйте, Dzirt2005, Вы писали:


ДД>>>CONFIG_PRINTK пробовали отключать?


D>>Нет, но попробую. Хотя все равно я сомневаюсь, что он стартует как DOS, за ~1.5 сек...


ДД>За 1.5 сек на PC вряд ли. Но мне удавалось сократить время загрузки с момента включения до старта приложения до 5 сек, на материнке VIA Epia и каким-то Cyrix 1 Ггц. Около половины времени при этом занимала POST BIOS'а.


У меня CPC303 на AMD Geode на 133/233/300 МГц. BIOS какой-то специальный, производитель гарантирует 400 мс от снятия сброса до начала загрузки системы.

Вобщем, я попробую. К сожалению прямо сейчас у меня нет доступа к этому контроллеру, а информацию я себе оставил. Спасибо
Re[8]: Оффтопик, но
От: MaxGl Украина  
Дата: 17.09.09 20:29
Оценка:
Здравствуйте, ДимДимыч, Вы писали:
ДД>За 1.5 сек на PC вряд ли. Но мне удавалось сократить время загрузки с момента включения до старта приложения до 5 сек, на материнке VIA Epia и каким-то Cyrix 1 Ггц. Около половины времени при этом занимала POST BIOS'а.
Удавалось-то удвавалось, но ты вспомни, сколько ты времени убил, чтобы этого добиться?
Неавно натыкался на информацию, что кто-то добился времени загрузки (до первой картинки приложения на встроенной системе) равного 2 секундам.
Ну и еще рекомендую в этом направлении поинтересоваться Moblin(просто ради интереса) в частности, а также творчеcтвом товарища Arjan van de Ven (начать можно здесь)
Re[9]: Оффтопик, но
От: Voinov Россия http://www.svoinov.ru
Дата: 23.09.09 19:46
Оценка:
Здравствуйте, MaxGl, Вы писали:

MG>Здравствуйте, ДимДимыч, Вы писали:

ДД>>За 1.5 сек на PC вряд ли. Но мне удавалось сократить время загрузки с момента включения до старта приложения до 5 сек, на материнке VIA Epia и каким-то Cyrix 1 Ггц. Около половины времени при этом занимала POST BIOS'а.
MG>Удавалось-то удвавалось, но ты вспомни, сколько ты времени убил, чтобы этого добиться?
MG>Неавно натыкался на информацию, что кто-то добился времени загрузки (до первой картинки приложения на встроенной системе) равного 2 секундам.
MG>Ну и еще рекомендую в этом направлении поинтересоваться Moblin(просто ради интереса) в частности, а также творчеcтвом товарища Arjan van de Ven (начать можно здесь)

Не так сложно написать свой BIOS, учитывая то, что современные программаторы микросхем Flash-памяти стоят весьма адекватных денег. Единственная проблема — инициализировать системную память. Тут нужно программировать конкретный чипсет (хотя современные в этом плане довольно стандартизированы) — регистры MTTR для отображения физических модулей памяти на физическое адресное пространство ЦП. Можно также использовать кэш ЦП как оперативную память. Есть книжка "BIOS. Дизассемблирование. Модификация. Программирование.". На платформенном симуляторе типа Bochs или Qemu можно поиграться.
Re: Взаимодействие приложений в DOS
От: Voinov Россия http://www.svoinov.ru
Дата: 23.09.09 19:48
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый вечер.


А>Я начинающий программист, и у меня возникла проблема. Это проблема настолько общего характера, что это меня тревожит. Возможно, я выбрал неудачную тему для своего вопроса, поэтому заранее прошу прощения у модератора, если это так.


А>Итак, есть некий комплекс ПО (несколько программ и драйверов), которые работают на контроллерах под управлением (если я правильно понимаю) ОС DOS. Мне поручено разобраться в одной из этих программ, но вот затык: одна из самых важных функций в коде программы не вызывается. Вообще! Тем не менее, известно абсолютно точно, что она выполняется. И вот вопрос: каким образом? Есть предположение, что функция вызывается из другой программы, точнее из драйвера, т.к. эта программа работает в содружестве с драйвером — так ли это? Если да, то что это за механизм и где про него прочитать? Если нет, то как еще это объяснить?


Если процессор класса i486 и выше, то можно просто поставить аппаратную точку останова на нужном адресе и потом уже смотреть, кто вызвал эту процедуру.
Re[9]: Оффтопик, но
От: ДимДимыч Украина http://klug.org.ua
Дата: 24.09.09 14:55
Оценка:
Здравствуйте, MaxGl, Вы писали:

MG>Удавалось-то удвавалось, но ты вспомни, сколько ты времени убил, чтобы этого добиться?


Там параллельно и другие задачи решались, так что сколько именно на это — трудно сказать. Да и со многим с нуля приходилось разбираться, а при отсутствии инета под рукой практически единственный разумный путь — экспериментальный
Но даже отключение только printk() дает заметный выигрыш в скорости загрузки, как по основной причине — не тратится время на вывод сообщений, так и по второстепенной — уменьшается размер ядра и загрузчик его быстрее загружает с носителя.

MG>Неавно натыкался на информацию, что кто-то добился времени загрузки (до первой картинки приложения на встроенной системе) равного 2 секундам.


От требований к системе зависит. Если избавиться от стандартного BIOS'а и разместить ядро прямо в ПЗУ, то вполне нормально.

MG>Ну и еще рекомендую в этом направлении поинтересоваться Moblin(просто ради интереса) в частности, а также творчеcтвом товарища Arjan van de Ven (начать можно здесь)


Coreboot еще можно приспособить.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[3]: Взаимодействие приложений в DOS
От: wallaby  
Дата: 24.09.09 15:47
Оценка:
Здравствуйте, Privalov, Вы писали:

K>>Всем спасибо за ответы. Все гораздо проще: функция все же вызывается из этой программы, но настолько залихватским образом, что я чуть не сломал себе мозг. В общем, обожаю ООП. Сорри тем, у кого отнял время, это, как говорится, меа кульпа.


P>Можешь озвучить подробности? Мало ли, кому-то покажется интересным, а у других, кроме того, выжмет скупую мужскую слезу.


Наверное открыл для себя таблицы виртуальных (или того хуже динамических) методов, но молчит.
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
Re: Взаимодействие приложений в DOS
От: eagersh  
Дата: 27.09.09 18:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый вечер.


А>Я начинающий программист, и у меня возникла проблема. Это проблема настолько общего характера, что это меня тревожит. Возможно, я выбрал неудачную тему для своего вопроса, поэтому заранее прошу прощения у модератора, если это так.


А>Итак, есть некий комплекс ПО (несколько программ и драйверов), которые работают на контроллерах под управлением (если я правильно понимаю) ОС DOS. Мне поручено разобраться в одной из этих программ, но вот затык: одна из самых важных функций в коде программы не вызывается. Вообще! Тем не менее, известно абсолютно точно, что она выполняется. И вот вопрос: каким образом? Есть предположение, что функция вызывается из другой программы, точнее из драйвера, т.к. эта программа работает в содружестве с драйвером — так ли это? Если да, то что это за механизм и где про него прочитать? Если нет, то как еще это объяснить?


Если у вас MS-DOS то проблем вызова программы из драйвера нету. Это 16 битная real-mode где все работает в одном адресном пространстве. Я не знаю какая у вас архитектура software, так как вы не дали практически никаких деталей, но если у вас есть сомнения как работает драйвер то могу дать несколько советов. Может они вам помогут. Пару лет назад меня попросили написать программу по тестированию прерываний I/O модуля. Написать все надо было под MS-DOS. Меня это конечно очень удивило. С MS-DOS я не занимался уже лет 15 тоесть интрументов для написание програм конечно не было.И все надо было сделать за один-два дня. Я нашел и загрузил Turbo C одной из ранних версий которое работает под MS-DOS. С программы которую можно создать на Turbo C можно программировать напрямую железо, включая PIC/APIC . Также можно было создать call back функцию с прерывания. То есть использую Turbo C я смог проверить железо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.