Исследование микроволнового излучения Солнца на ССРТ с помощью акустооптического приемника тема диссертации и автореферата по ВАК РФ 01.03.03, кандидат физико-математических наук Лесовой, Сергей Владимирович

  • Лесовой, Сергей Владимирович
  • кандидат физико-математических науккандидат физико-математических наук
  • 1998, Иркутск
  • Специальность ВАК РФ01.03.03
  • Количество страниц 111
Лесовой, Сергей Владимирович. Исследование микроволнового излучения Солнца на ССРТ с помощью акустооптического приемника: дис. кандидат физико-математических наук: 01.03.03 - Физика Солнца. Иркутск. 1998. 111 с.

Оглавление диссертации кандидат физико-математических наук Лесовой, Сергей Владимирович

СОДЕРЖАНИЕ

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

ГЛАВА 1. ССРТ КАК ФИЛЬТР ПРОСТРАНСТВЕННЫХ ЧАСТОТ

1.1 Целесообразность рассмотрения ССРТ как фильтра пространственных частот

1.2 Отличия спектральной чувствительности ССРТ и систем апертурного синтеза

1.3 Элемент с/к-плоскости ССРТ

1.4 Влияние фазовых ошибок на элемент гж-плоскости ССРТ

1.5 Влияние ошибок в пространственном расположении антенн на элемент 1/к-шюскости ССРТ

1.6 Влияние затенения антенн на спектральную чувствительность ССРТ

1.7 Выводы

ГЛАВА 2. ССРТ КАК ИНСТРУМЕНТ С ЧАСТОТНЫМ СКАНИРОВАНИЕМ

2.1 Что необходимо знать о ДН на практике

2.2 Взаимное расположение интерференционных лепестков ССРТ и траектории Солнца

2.3 Формирование диаграммы направленности методом частотного сканирования

2.4 Качественная оценка параметров диаграммы направленности ССРТ

2.5 Выводы

ГЛАВА 3. АКУСТООПТИЧЕСКИЙ ПРИЕМНИК ССРТ

3.1 Структура АОП

3.2 Акустооптический анализатор спектра

3.3 Фотоприемное устройство акустооптического приемника

3.4 Система управления и сбора информации акустооптического приемника

3.5 Программное обеспечение

Выводы

ГЛАВА 4. МЕТОДЫ И АЛГОРИТМЫ РЕГИСТРАЦИИ И ОБРАБОТКИ ДАННЫХ АОП ССРТ

4.1 Новый метод регистрации корреляционного сигнала с сохранением аддитивных составляющих

4.2 Реализация метода регистрации корреляционного сигнала с переключением фазы на ССРТ с помощью АОП

4.3 Алгоритм построения двумерного изображения

4.4 Алгоритм калибровки двумерного изображения

4.5 Методика измерения фазового распределения по анализу изображений

4.6 Выводы

ГЛАВА 5. РЕЗУЛЬТАТЫ НАБЛЮДЕНИЙ БЫСТРОПРОТЕКАЮЩИХ ПРОЦЕССОВ

5.1 Результаты наблюдений спайков на других инструментах

5.2 Возможности АОП ССРТ по наблюдению спайков

5.3 Результаты наблюдений

5.4 Выводы

ГЛАВА 6. РЕЗУЛЬТАТЫ НАБЛЮДЕНИЙ В ДВУМЕРНОМ РЕЖИМЕ

6.1 Выбор наблюдаемых структур

6.2 Результаты наблюдений волокон в радиодиапазоне с 1970 по 1990 гг

6.3 Результаты наблюдений радиоволокон на ССРТ

6.4 Выводы

ЗАКЛЮЧЕНИЕ

ЛИТЕРАТУРА

ПРИЛОЖЕНИЕ 1. ДРАЙВЕР АОП ССРТ ДЛЯ WINDOWS NT 4.0

П1.1 Общие сведения о драйверах Windows NT

П1.2 Требования к драйверу АОП ССРТ, определяющие его структуру

П2.3 Реализация драйвера АОП ССРТ

ПРИЛОЖЕНИЕ 2. ФОРМАТЫ ФАЙЛА ИСХОДНЫХ ДАННЫХ АОП ССРТ

П2.1 Форматы данных до 1998 г

П2.2 Формат данных с 1998 г

Рекомендованный список диссертаций по специальности «Физика Солнца», 01.03.03 шифр ВАК

Введение диссертации (часть автореферата) на тему «Исследование микроволнового излучения Солнца на ССРТ с помощью акустооптического приемника»

Введение

Исследования атмосферы Солнца представляют интерес как с точки зрения физики плазмы - это уникальная природная лаборатория, так и с точки зрения прогноза геоэффективных событий - протонных вспышек и выбросов корональной массы. Радиоастрономические методы исследования солнечной атмосферы позволяют получать информацию о параметрах плазмы в короне и верхней хромосфере, о корональных магнитных полях активных областей и о вспышечных процессах. В последнее время интерес солнечных радиоастрономов привлекают быстрые процессы - всплески радиоизлучения с субсекундной длительностью (спайки) - и картографирование Солнца. Быстрые процессы связывают с первичным энерговыделением во время вспышек. Исследуя их, можно получить информацию об источнике вспышечной энергии. Исходя из этого, требовались модернизация приемного устройства ССРТ с целью регистрации быстропротекающих процессов и проведение серии наблюдений, позволяющей выполнить статистический анализ этих событий.

Двумерные изображения Солнца дают не только количественный прирост информации. Появляется возможность наблюдать в радиодиапазоне такие образования, как волокна, которые являются источником выбросов корональной массы. Интерес к картографированию со стороны эксперимента стимулируется вводом в работу радиогелиографа в Нобеяме и, как надеется автор, выходом на проектный режим ССРТ.

Основными целями работы являются:

Создание инструментально-методического обеспечения наблюдений на ССРТ с помощью акустооптического приемника.

Регулярные наблюдения быстрых процессов в конце 22 цикла солнечной активности.

Отработка методики и регулярное получение двумерных радиоизображений Солнца.

Анализ результатов наблюдений субсекундных всплесков радиоизлучения и радиоволокон.

Научная новизна работы.

Предложен и реализован метод регистрации двумерных изображений с сохранением информации о быстрых процессах.

Предложен и реализован метод определения фазовых характеристик антенно-фидерного тракта интерферометров по анализу двумерного изображения.

Впервые была проведена трехлетняя серия непрерывных ежедневных наблюдений быстрых процессов по всему диску Солнца с высоким пространственным разрешением.

Установлено, что источники микроволновых спайков в более чем 90 % случаев совпадают с источником континуума всплеска.

Сделан вывод о влиянии рассеяния в короне на наблюдаемый размер источников спайков в сантиметровом диапазоне.

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

Научное и практическое значение.

Разработанные методики и программное обеспечение используются в регулярных наблюдениях на ССРТ. Показано, что под управлением Windows NT можно создавать системы сбора информации в реальном времени. Проведены наблюдения Солнца в течение семи лет. Создан архив одномерных данных по быстрым процессам с 1992 по 1995 г. Создается архив двумерных данных с 1995 г. Архивы данных используются для интерпретации солнечных явлений.

На защиту выносятся:

• методики проведения двумерных наблюдений и построения двумерных изображений;

• программное обеспечение наблюдений и первичной обработки данных акустооптического приемника (АОП);

• методика определения фазовой характеристики антенно-фидерных трактов интерферометров по анализу двумерных изображений и результаты ее реализации;

• метод получения двумерных изображений одновременно с аддитивными составляющими для наблюдения быстрых процессов и его реализация;

• данные о размере и положении источников спайк-подобных событий, полученные с помощью АОП, позволяющие сделать вывод о влиянии рассеяния в короне на видимые размеры радиоисточников;

• анализ результатов наблюдений радиоволокон в двумерном режиме.

Апробация работы.

Результаты, изложенные в диссертации, докладывались на конференциях в Нижнем Новгороде "XXV Радиоастрономическая конференция" (1992), Санкт-Петербурге "XXVI Радиоастрономическая конференция" (1995), Workshop on "The occasion of the 350th anniversary of the Astronomical Institute" Utrecht (1993), Workshop on "Coronal magnetic energy releases" Kaputh (1994), Санкт-Петербурге "XXVII Радиоастрономическая конференция" (1997), на совещании по созданию нового солнечного радиотелескопа (США, 1995) и семинарах Радиоастрофизической обсерватории ИСЗФ СО РАН, Радио Обсерватории Нобеяма и Пекинской обсерватории. На метод регистрации корреляционного сигнала без потерь аддитивных получено авторское свидетельство. Практической апробацией результатов работы было их использование в течение семи лет в наблюдениях на ССРТ и обработке данных.

Публикации.

По теме диссертации опубликовано 18 печатных работ.

Похожие диссертационные работы по специальности «Физика Солнца», 01.03.03 шифр ВАК

Заключение диссертации по теме «Физика Солнца», Лесовой, Сергей Владимирович

6.4 Выводы

Приведенные выше результаты двумерных наблюдений слабоконтрастных образований, позволяют сделать следующие выводы. Угловые размеры радиоволокон превышают оптические и составляют десятки угловых секунд. Пространственная структура радиоволокон бывает двух типов: просто области

Рис. 6.12 Депрессивное радиоволокно 26 и 30 мая 1998 г. депрессии и области депрессии, ограниченные с обоих краев уярчениями. Яркостные температуры депрессий находятся в пределах6. 10 тыс. К, края с повышенной яркостью имеют яркостные температуры: 20.40 тыс. К, с точностью 2 тыс. К. Данные о пространственной структуре и положении радиоволокон на солнечном диске, а так же соответствие данным других диапазонов, приведены в таблице 6.1. В ней представлены даты наблюдений, яркостные температуры областей депрессии и ярких краев, признак наличия ярких краев, широты радиоволокон, соответствие данных ССРТ магнитограммам и На. Радиоволокна с яркими краями соответствуют, по пространственному положению, волокнам наблюдаемым в Нв. Их яркие края соответствуют, на магнитограммах, магнитным полям разной полярности, расположенных вдоль краев волокна. Т. е. депрессии в радиоволокнах с яркими краями являются хорошим индикатором положения линии раздела магнитных полей различной полярности. Для радиоволокон, представляющих собой просто области депрессии, наблюдается соответствие с волокнами в Ва, но не наблюдается соответствия с магнитограммами. Необходимо отметить, что радиоволокна с яркими краями, преимущественно, расположены на низких широтах, относительно радиоволокон без ярких краев. При выходе на лимб, радиоволокна без ярких краев выглядят как петлеобразные уярчения. В противоположность этому радиоволокна с яркими краями не проявляют такой структуры.

Заключение.

Использование акустооптического анализатора спектра, наряду с манипулированием сигналами синхронизации ССРТ, позволило создать макет приемника, обладающего достаточными быстродействием (56 мс) и гибкостью как для решения задач наблюдения быстропротекающих процессов на Солнце, так и для получения двумерных изображений. При работе приемника в полном режиме - регистрации аддитивных сигналов обоих плеч интерферометра и, одновременно, суммы обоих плеч, содержащей в себе корреляционную составляющую сигнала, информация о быстрых процессах сохраняется в чистом виде. Но недостаточна чувствительность по корреляционной составляющей. При работе в режиме переключения фазы, чувствительность по корреляционной составляющей выше, но одномерные сигналы (быстрые процессы) сохраняются в виде суммы сигналов от двух линеек. В настоящее время АОП работает в режиме переключения фазы по причине большого интереса к двумерным изображениям.

Разработаны методики проведения двумерных наблюдений и построения двумерных изображений. Эти методики позволяют регистрировать двумерный сигнал без потерь одномерных. Одномерные сигналы содержат информацию о быстрых процессах.

Разработано программное обеспечение наблюдений и первичной обработки данных акустооптического приемника.

Разработана методика определения фазовой характеристики антенно-фидерных трактов интерферометров по анализу двумерного изображения.

В период с февраля 1992 г. по февраль 1995 г. с помощью АОП ССРТ была проведена серия наблюдений, в которой зарегистрировано свыше 150 событий, из них 31 имели тонкую временную структуру. С июня 1993 г. на АОП велась регистрация сигналов с двух линеек одновременно. Результаты наблюдений отражены в ряде статей и докладов. Наиболее интересными из них являются относительно большие видимые размеры областей спайк-подобных событий и зависимость этого размера от положения на диске Солнца. Это можно объяснить влиянием рассеяния сантиметрового излучения в короне на видимые размеры источников

С ноября 1995 г. начаты регулярные наблюдения в полном режиме. На получаемых двумерных изображениях уверенно наблюдаются активные образования с потоком 0.1 сеп, а также спокойное Солнце. Отмечено хорошее совпадение двумерной картины на рабочей длине волны ССРТ с изображениями в других диапазонах - УФ, мягкий рентген, линия кальция.

В августе 1997 г. АОП был переведен в режим с переключением фазы. Это позволило повысить чувствительность для двумерных изображений. Одновременно с этим была решена задача по коррекции частотной характеристики. Отчасти этому помогло уменьшение числа составляющих (3 для полного режима и 2 для переключения фазы), отчасти изменение методики вычисления корректирующего вектора для разностного сигнала.

В процессе двумерных наблюдений получены характеристики радиоволокон, наблюдаемых на 5,7 ГГц. Отмечено различие высокоширотных и низкоширотных радиоволокон.

На протяжении всего времени работы автор чувствовал поддержку и доброжелательное отношение всех сотрудников обсерватории. Мне хотелось бы выразить особую благодарность В. В. Гречневу, В. Г. Занданову и Т. А. Трескову во многом, благодаря которым эта работа была сделана. Я испытываю признательность к А. Т. Алтынцеву за его поддержку этой работы. Должен отметить, что в части работы, связанной с измерением фазовых характеристик тракта ССРТ, автор многим обязан В. И. Васину. При разработке программного обеспечения были очень плодотворны дискуссии с В В. Башкирцевым.

Список литературы диссертационного исследования кандидат физико-математических наук Лесовой, Сергей Владимирович, 1998 год

Литература

1. Есепкина H. А., Корольков Д. В., Парийский Ю. Н., 1973, "Радиотелескопы и радиометры", М. "Наука"

2. Тресков Т.А. "Наблюдения Солнца на линейных интерферометрах с частотным сканированием" //Исследования по геомагнетизму, аэрономии и физике Солнца. М., "Наука", 1983, в. 64, с. 188-199.

3. Бронштейн И. Н., Семендяев К. А., "Справочник по математике", М., "Наука", 1981

4. Алтынцев А.Т., Есепкина H.A., Занданов В.Г., Качев Л.Е., Лесовой C.B., Мансырев М.И., Молодяков С.А., Платонов A.B., Саенко И.И., Смольков Г.Я., Сыч P.A., Тресков Т.А. Препринт ИСЗФ СО РАН 11-92. Иркутск, 1992.

5. Алтынцев А.Т., Есепкина H.A., Занданов В.Г., Качев Л.Е., Лесовой C.B., Платонов A.B., Смольков Г.Я., Сыч P.A., Тресков Т.А. В кн.: Межрегиональная конференция по радиоастрономическим исследованиям солнечной системы (сентябрь, Н.Новгород).Тезисы докладов. М., 1992, с. 22.

6. Алтынцев А. Т., Гречнев В. В., Коновалове. К., Лесовой С. В., Лисисянь Е. Г., Смольков Г. Я., Тресков Т. А., Розенраух Ю. М., Магун А. 1995, "XXVI Радиоастрономическая конференция", С.-П. 1995, стр. 176

7. Железняков В. В, "Радиоизлучение Солнца и планет ", М. "Наука", 1964

8. Кардаполова H. Н., Лесовой С. В., "XXVI Радиоастрономическая конференция", С.-П. 1995, стр. 183

9. Кулаков, С. В., "Оптическая обработка радиосигналов в реальном времени", М. "Радио и связь", 1989

10. Ландау Л. Д., Лифшиц Е. М., "Теория поля", М. "Наука", 1988,

11. Левин Б. Р., "Теоретические основы радиотехники", М. "Советское радио", 1969

12. Лесовой С. В., Лубышев Б. И., Тресков Т. А., 1995, "XXVI Радиоастрномическая конференция С.-П. 1995, стр. 385

13. Лесовой С. В., Тресков Т. А., 1997, "XXVII Радиоастрномическая конференция ", С.-П. 1997, т. 2, стр. 133

14. Лесовой C.B., Лубышев Б.И., Тресков Т.А. Радиофизика, Том XL № 8

15. Манделыятамм, Л. И., 1972 , "Лекции по теории относительности, квантовой механики и избранным вопросам оптики", М. "Наука"

16. Смольков Г. Я., Криссинель Б. Б., С. М. Кузнецова, Тресков Т. А., Лесовой С. В., Кардаполова H. Н., Просовецкий Д. В., Максимов В. П., Гречнев В. В., Уралов А. М. и др. 1997, "XXVII Радиоастрономическая конференция", С.-П. 1997, т. 2, стр. 45

17. Тресков Т. А., Агалаков Б. В., Кардаполова H. H., Криссинель Б. Б., Лесовой С. В., Лубышев Б. И., Просовецкий Д. В., и др. 1997, "XXVII Радиоастрномическая конференция", С.-П. 1997, т. 2, стр. 45

18. Рихтер Дж., "Windows® для профессионалов", "Microsoft® Press", 1995

19. Akhmedov, Sh. В., V. M. Bogod, G. В. Gelfreikh, and A. N. Korzhavin, 1982. The measurement of the magnetic fields in the solar atmosphere above sunspots using gyroresonance emission.

20. Altyntsev A.T., Grechnev V.V., Konovalov S.K., Lesovoi S.V., Lisysian E.G., Rosenraukh Y.M., Treskov T.A.W Препринт ИСЗФ CO PAH 1-95. Иркутск, 1995.

21.Altyntsev A.T., Grechnev V.V., Konovalov S.K., Lesovoi S.V., Lisysian E.G., Rosenraukh Y.M., Treskov T.A., Magun A.W The Astrophisical Journal, 1996, v.469, p. 976-980

22. Altyntsev A.T., Kachev L.E., Lesovoi S.V., Mansyrev M.I., Molodyakov S.A., Platonov A.V., Saenko 1.1., Smolkov G.Ya., Sych R.A., Treskov T.A. Zandanov V.G., Nelly A.Yesepkina. Astron.Astrophys., 1994, v.287, p. 256-260.

23. Altyntsev A.T., Konovalov S.K., Krissinel B.B., Lesovoi S.V., Lisysian E.G., Rosenraukh Y.M., Treskov T.A., Magun A. Workshop on "Coronal magnetic energy releases". Caputh, Germany, May 16-20, 1994, 69.

24. Bastian T. S., 1994, ApJ426, 774

25. Benz A. O., 1986, Solar Phys. 104, 99

26. Benz A. O., Su H., Magun A., Stehling W., 1992, A&A 93, 539

27. BruggmanG., Benz A. O., Magun A., Stehling W., 1990, A&A 240, 506

28. Chiuderi Drago F., "Radio observations of prominances", IAU Colloq. No. 117, ed. E. Tandberg-Hanssen, 1989

29. Gary D.E., Hurford G.J., Flees D.J., 1991, ApJ 369, 255

30. Gelfreikh, G. B.,N. G. Peterova, and В. 1. Ryabov, 1987. Measurements of magnetic fields in the solar corona as based on the radio observations of the inversion of polarization of local sources at microwaves. Solar Physics, 108, 89-97.

31. Kai K., Nakajima H., 1986, Position Measurements of Rapidly Fluctuating Microwave Bursts. In: Dennis B.R., Kiplinger A.L., Orwig L.E. (eds.) Rapid Fluctuations in Solar Flares. NASA Conference Publication 2449, p. 147

32. Kattenberg A., Allaart M., 1983, ApJ 265, 535

33. Uralov A.M., Grechnev V.V., Lesovoi S.V., Sych R.A., Kardapolova N.N., Smolkov G.Ya., Treskov T.A. Solar Physics 178:119-124, 1998

34. "The Nobeyama Radioheliograph", Nobeyama radio observatory report № 357, 1994, p. 43

35. Altyntsev А. Т., Grechnev V. V., Hanaoka Y. On the microwave spike emission of the September 6, 1992 flare. Solar Physics, 1998, 178, 575-589

36. Altyntsev А. Т., Grechnev V. V., Nakajima H., Fujiki K., Nishio M., Prosovetsky D. V. The limb flare of November 2, 1992: physical conditions and scenario. National Astronomical Observatory. Solar and Plasma Astrophysics Preprint No. 98-6. 1998

37. Лесовой С. В., Васин В.И., Занданов В.Г. Определение фазовой характеристики антенно-фидерного тракта ССРТ. Препринт ИСЗФ СО РАН 5-98, Иркутск, 1998

38. Zandanov V.G., Lesovoi S.V. Filament radio emission observations at the SSRT. В кн.: Proceedings of the Nobeyama International Symposium on Solar Physics with Radio Observations. Kiyosato, Japan, October 27-30, 1998

39. Grechnev V. V., Altyntsev А. Т., Konovalov S. K, Lesovoi S. V. Joint proc-essing of radio data produced by the SSRT together with data of other spectral ranges. Eighth Annual Conference on AD ASS, Urbana, USA, November 1-4, 1998

Приложение 1. Драйвер АОП ССРТ для Windows NT 4.0

П1.1 Общие сведения о драйверах Windows NT

Сведения о драйверах для Windows NT 4.0 почерпнуты из "Microsoft® Windows NT® Version 4.0 Device Driver Kit", примеров, найденных в Internet, и личного опыта автора. Создание драйвера, полностью выдерживающего все системные соглашения и, при этом, решающего задачу, может оказаться нелегкой задачей. Особенно это касается драйверов сети и SCSI устройств. Последние обладают самой сложной структурой и рассматриваются отдельно. Автор сталкивался с коммерческими SCSI драйверами, отправляющими ОС в спячку на 20 минут. В состав АОП ССРТ, слава Богу, не входят SCSI устройства требующие написания драйвера. Поэтому мы их рассматривать не будем. Ограничимся kernel-mode драйверами.

Для программиста, владеющего объектно-ориентированным подходом (ООП), структура Windows NT драйвера покажется родной. Windows NT драйвер это, прежде всего, объект. Он обладает некоторыми предопределенными интерфейсами и компонентами, а так же возможностью их расширения. Написание драйвера, по сути дела, сводится к следующим операциям

• реализации обязательных методов

• расширению полей данных

• разработке новых методов и их реализаций.

Необходимо помнить, конечно, что это не объект в смысле С++. Фактически, "объективизация" сводится к следующему. При загрузке драйвера с ним связывается определенная структура. Поля этой структуры содержат информацию о драйвере и точки входа интерфейса (таблицу методов). Одна из этих точек входа заполняется менеджером ввода-вывода, через нее выполняется инициализация драйвера (вызов конструктора). Остальные заполняет функция инициализации. Т. о. отличие от С++ объекта заключается в том, что связывание методов с конкретным кодом происходит не на стадии компиляции, а во время выполнения. Добавим, что в отличие от объектов С++, ОС ничего не знает о дополнительных полях данных объекта, кроме, естественно, требуемого объема памяти.

Некоторое неудобство заключается в том, что разрабатывать объект приходится с помощью языка, не поддерживающего ООП - драйвер должен

быть написан на С. Однако это проходимо. Больше неудобств доставляет невозможность использования API. Правда это относится к программистам владеющим API. Если Вы разрабатываете проекты исключительно под MFC, то нет большой разницы, какое дополнительное множество функций необходимо изучить. В любом случае, все функции по управлению процессами, памятью, доступа к файлам и т. д. должны быть функциями ядра (kernel-mode support routines).

Рассмотрим Windows NT драйвер как объект. Тип (класс) объекта драйвер - DRIVER_OBJECT. Поля объекта DRIVER_OBJECT, как и большинства объектов используемых при написании драйверов, доступны разработчику частично. Все из видимых, полей, так или иначе, используются при инициализации драйвера.

struct DRIVER_OBJECT{

PDEVICE_OBJECT DeviceObject;

PUNICODE_STRING HardwareDatabase;

PFAST_10_DISPATCH FastloDispatch;

PDRIVERJNITIALIZE Driverlnit;

PDRIVER_STARTIO DriverStartlo;

PDRIVERJJIMLOAD DriverUnload;

PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION+1]; //недоступны

};

Поле Driverlnit заполняется менеджером ввода-вывода при загрузке драйвера. Это точка входа инициализации. Для того чтобы менеджер в/в смог заполнить ее, в тексте драйвера должна присутствовать функция

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN

PUNICODE_STRING RegistryPath).

Это начало работы Вашего драйвера. В теле этой функции производятся следующие операции

• инициализируются переменные конфигурации драйвера по информации в определенном разделе системного реестра (registry). Как правило: адреса в/в, номера прерываний и каналов прямого доступа.

• сообщается системе об используемых ресурсах. Эта информация появится в разделе Resources приложения Windows NT Diagnostics.

• инициализируются остальные точки входа (методы): DriverStartlo, DriverUnload, MajorFunction[...]

• создается объект DEVICE_OBJECT. Требуемая информация для создания DEVICE_OBJECT: размер определенной драйвером переменной DEVICE_EXTENSION, имя и тип устройства. Результат присваивается полю DRIVER_OBJECT DeviceObject.

• захватывается вектор прерываний

• транслируются адреса ввода/вывода. Если данные адреса находятся в пространстве ввода/вывода, их необходимо спроецировать на адресное пространство драйвера

• инициализируются поля переменной DEVICE_EXTENSION и распределяются необходимые объемы памяти.

Поле HardwareDatabase содержит маршрут переменных конфигурации в системном реестре.

Поле FastloDispatch должно содержать адрес структуры с точками входа быстрой обработки ввода/вывода. Эти методы используются только для драйверов файловой системы и сети.

Поле DriverUnload должно содержать адрес функции, выполняющейся при выгрузке драйвера.

Поле DriverStartlo должно содержать адрес функции, фактически начинающей последовательность операции в/в.

Поле MajorFunction - массив функций откликов на запросы, передаваемые в драйвер. Например, IRP_MJ_CREATE, IRP_MJ_READ, IRP_MJ_CLOSE и т. д. Драйвер должен иметь хотя бы одну проинициализированную точку входа в MajorFunction.

Поле DeviceObject - указатель на DEVICEOBJECT. Этот объект инициализируется во время создания устройства функцией IoCreateDevice. Поля DEVICE OBJECT доступны частично, как и поля DRIVEROBJECT. Наиболее часто используемыми из его полей являются Currentlrp и DeviceExtension.

Currentlrp указывает на текущий IRP (I/O request packet) во время операций в/в, иначе его значение 0. Использование Currentlrp иллюстрируется ниже, в разделе реализации драйвера. Скажем только, что это объединение, поля которого, содержат всю необходимую информацию для операций в/в. В качестве аргумента Currentlrp передается файловым операциям и MajorFunction[IRP_MJ_DEVICE_CONTROL] - диспетчеру DeviceloControl.

DeviceExtension - определяемая разработчиком драйвера структура, предназначенная для хранения специфической информации. С точки зрения ООП DeviceExtension позволяет добавлять новые поля к полям, наследуемым от DEVICE_OBJECT. В конечном счете, это позволяет создавать новый объект, производный от DRIVER OBJECT, отличающийся от последнего не только реализацией интерфейса, но и полями данных.

Если драйвер обрабатывает аппаратные прерывания, то должен быть проинициализирован DPC (deferrer procedure call) объект. DPC функция выполняется на самом низком аппаратном уровне. Ее назначение -отложенная обработка прерываний.

Автор не задается целью приводить здесь компиляцию DDK справочника. На мой взгляд, вышеизложенного, в совокупности с примером, приведенным в разделе П1.3, достаточно для общего представления о kernelmode драйверах и для начала разработки.

П1.2 Требования к драйверу АОП ССРТ, определяющие его структуру

Рассмотрим требования к драйверу АОП ССРТ, определяемые задачей сбора информации в реальном времени. Для сравнения будем использовать драйверы стандартных устройств - диска и мыши. Структура драйвера реального времени несколько отличается от структуры драйверов диска или мыши. Драйвер диска может быть полностью асинхронным. Запись очередной порции данных может происходить не сразу после окончания предыдущей операции, а с некоторой задержкой. При чтении, столь же не важно в какой именно момент времени считана очередная порция, информация на диске не пропадет оттого, что ее считают несколько позже. В случае данных реального времени и ограниченных аппаратных буферов данных, такой подход недопустим. Если в данный момент времени информацию не забрать с входного устройства, то она потеряется навсегда. Т. е. инициатором обмена данными является аппаратура, именно -вызываемое ей прерывание. Инициатором выступает такое устройство, как мышь. Однако, в случае с мышью, допустимы пропуски информации, пропажа нескольких пикселов ни к чему фатальному не приведет. Для драйвера АОП такая пропажа недопустима.

Т. о. мы можем сформулировать следующие требования:

• обмен данными драйвера с входным устройством должен быть синхронным. Моменты и интервалы времени обмена определяются входным устройством

• данные должны быть считаны с входного устройства, помещены в очередь и обработаны за время меньшее, чем интервал между поступлением очередных данных

• драйвер должен уведомлять клиента (приложение открывшее устройство) о готовности очередных данных.

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

неопределенное время, файловый Read блочного устройства с синхронным обменом. С той лишь разницей, что приложение должно быть оповещено о поступлении каждого блока.

Теперь мы можем определить структуру драйвера. Для поддержания реального времени драйвер должен обрабатывать прерывания. Считывание информации должно происходить сразу же после поступления прерывания, отложенная обработка чревата пропусками информации. Драйвер должен обладать механизмом уведомления клиента.

Организация данных драйвера отсюда очевидна. Так как приложение может не сразу забрать готовый пакет данных из драйвера, то драйвер должен обладать очередью. Далее, уведомить приложение в Windows NT 4.0 можно только через именованные, причем по определенному соглашению, объекты ядра служащие для синхронизации процессов. Значит, драйвер должен обладать таким объектом. Добавим сюда специфические описатели АОП ССРТ и получим определение DEVICEEXTENSION для данного драйвера.

typedef struct _ _CAMAC_EXTE N S10 N {

PDEVICEJDBJECT DeviceObject;

PKINTERRUPT plnterruptObject;

ULONG DeviceType;

BOOLEAN PortWasMapped;

PVOID PortBase;

ULONG PortCount;

ULONG PortMemoryType;

ULONG CrateBase;

ULONG IRQLine;

BOOLEAN nowAcquire;

PUCHAR readyReadQueueltem;

PUCHAR requestBuffer;

BOOLEAN readQueuelsNotEmpty;

PIRP currentlrp;

//Sync section

HANDLE hlsrEvent;

PKEVENT isrEvent;

KSPINJLOCK isrLock;

//ISR queue

ULONG isrReadBufferSize;

ULONG ¡srReadQueueltemAmount;

ULONG isrReadQueueltemSize;

PUCHAR isrReadBuffer;

BOOLEAN isrBufferlnNonpagedPool;

PMDL isrMDL;

//ISR critical section

ULONG

ULONG

BOOLEAN

ISR_PROLOG

ISR_RESETJRQ

ISR_READ

!SR_WRITE

ISR EPILOG

isrReadQueueHead;

isrReadQueueTail;

isrReadQueueOverflow;

isrProlog;

isrResetlRQ;

isrRead;

isrWrite;

isrEpilog;

//AOR SSRT specific BOOLEAN aorlnitialized;

CAMAC_AOR_SSRT_SPECIFIC aorlnfo; //IOCTL response table

CAMAC_IOCTL_RESPONSE ioctlResponseTable[CAMAC_IOCTL_ENTRIES]; } CAMAC_EXTENSION, *PCAMAC_EXTENSION;

bha

OnncaTejib AOIT CCPT CAMAC_AOR_SSRT_SPECIFIC HMeeT cjieAyiomHH typedef struct _CAMAC_AOR_SSRT_SPECIFIC{

BOOLEAN

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

CAMAC_READ_WRITE

ULONG

ULONG

ULONG

ULONG

BOOLEAN

BOOLEAN

BOOLEAN

started; resetlRQ;

dataBufferModuleEnable;

evenDataBufferModuleControl;

oddDataBufferModuleControl;

evenDataBufferModuleAccess;

oddDataBufferModuleAccess;

commutatorModule;

attenuatorModule;

adcModuleStart;

adcModuleEnable;

adcModuleStop;

programModuleStart;

programModuleStop;

loTimeModule;

hiTimeModule;

count;

firstCommutatorChannelCode;

currentCommutatorChannel;

maxCommutatorChannel;

timeModulelnverse;

stopRequest;

ADCIOinUse;

} CAMAC_AOR_SSRT_SPECIFIC, *PCAMAC_AOR_SSRT_SPECIFIC;

typedef struct _CAMAC_READ_WRITE { USHORT station; USHORT subaddress; USHORT function;

union{

ULONG word24; USHORT word; UCHAR byte;

struct bcdTime32{

USHORT loTime; USHORT hiTime;

};

};

} CAMAC_READ_WRITE, *PCAMAC_READ_WRITE;

Далее, определившись со структурой драйвера и данных, можно определить интерфейс драйвера. Так как обмен данными между приложением и драйвером отличается от обмена с файловым устройством, то автор решил не использовать файловые функции Read, Write для доступа к данным драйвера. Все управление реализуется через DeviceloControl.

//++ Standard driver routines

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, INP UNICODE_STRING RegistryPath);

NTSTATUS CAMACCreateDevice(IN PWSTR szPrototypeName, IN DEVICE_TYPE DeviceType.lN PDRIVER_OBJECT DriverObject, OUT PDEVICE_OBJECT *ppDevObj);

BOOLEAN CAMACIsr(IN PKINTERRUPT Interrupt,IN OUT PVOID Context); VOID CAMACDpc(IN PKDPC Dpc,IN PDEVICE_OBJECT pDeviceObject,

IN PIRP plrp.lN PVOID pContext); VOID CAMACIsrStub(IN OUT PVOID pContext);

NTSTATUS CAMACStartlo(IN PDEVICE_OBJECT pDO,IN PIRP plrp); BOOLEAN CAMACSynclo(IN OUT PVOID pContext); NTSTATUS CAMACCreate(IN PDEVICE_OBJECT pDO,IN PIRP plrp); NTSTATUS CAMACCIose(IN PDEVICE_OBJECT pDO,IN PIRP plrp); NTSTATUS CAMAC D ispatch( IN PDEVICE_OBJECT pDO,IN PIRP plrp); NTSTATUS CAMACRead(IN PDEVICE_OBJECT pDO.IN PIRP plrp), VOID CAMACUnload(IN PDRIVER_OBJECT DriverObject);

VOID CAMACTimer(IN PDEVICE_OBJECT DeviceObject,IN PVOID context);

II-- Standard driver routines

//++ Low level hardware access routines

NTSTATUS CAMACIoctlReadPort(IN PCAMAC_EXTENSION pLDI,

IN PIRP plrp,

IN P10_ST AC K_LO C AT IO N IrpStack, IN ULONG loctlCode); NTSTATUS C AMAC loctl WritePort( IN PCAMAC_EXTENSION pLDI,

IN PIRP plrp,

IN PIO_STACK_LOCATION IrpStack, IN ULONG loctlCode); II- Low level hardware access routines

//++ CAMAC specific

VOID NAF(IN PCAMAC_EXTENS10N pExt,

IN OUT PCAMAC_READ_WRITE pNAFdata); VOID readNAFbyte(IN PCAMAC_EXTENSION pExt, IN OUT PCAMAC_READ_WRITE pNAFdata); VOID readNAFword(IN PCAMAC_EXTENSION pExt, IN OUT PCAMAC_READ_WRITE pNAFdata); VOID read N AFword24( IN PCAMAC_EXTENSION pExt,

IN OUT PCAMAC_READ_WRITE pNAFdata); VOID writeNAFbyte(IN PCAMAC_EXTENSION pExt, IN OUT PCAMAC_READ_WRITE pNAFdata); VOID writeNAFword(IN PCAMAC_EXTENSION pExt, IN OUT PCAMAC_READ_WRITE pNAFdata); VOID write N AFword24( IN PCAMAC_EXTENSION pExt,

IN OUT PCAMAC_READ_WRITE pNAFdata); //-- CAMAC specific

//++ ISR critical section routines BOOLEAN CAMACNotify(IN OUT PVOID pContext); BOOLEAN isrReadQueuelsNotEmpty(IN PVOID pContext); BOOLEAN isrReadQueuelsOverflow(IN PVOID pContext); PUCHAR getFrom ReadTai I (IN PVOID pContext); PUCHAR putToReadHead(IN PVOID pContext); BOOLEAN queueltemToRequestBuffer(IN PVOID pContext); II- ISR critical section routines

//++ AOR specific

VOID nextCommutatorChannel(IN PCAMAC_EXTENSION pExt);

VOID toggleDataBufferForWrite(IN PCAMAC_EXTENSION pExt);

VOID toggleDataBufferForRead(IN PCAMAC_EXTENSION pExt);

VOID setAttenuator(IN PCAMAC_EXTENSION pExt);

VOID aorlsrProlog(IN PVOID pContext);

VOID aorlsrResetlrq(IN PVOID pContext);

VOID aorlsrRead(IN PVOID pContext);

VOID aorlsrEpilog(IN PVOID pContext);

//-- AOR specific

//++ Auxiliary routines

VOID initloctlResponseTable(IN PCAMAC_EXTENSION pExt); NTSTATUS isValidCAMAC_Rwlnfo(IN PIRP plrp, OUT PCAMAC_READ_WRITE* ppRwInfo); //-- Auxiliary routines

//++ CAMAC IOCTL responses

BOOLEAN CAMACIoctlStub(IN PDEVICE_OBJECT pDO); BOOLEAN CAMACIoctlReadNAFbyte(IN PDEVICE_OBJECT pDO); BOOLEAN CAMACloctlReadNAFword(IN PDEVICE_OBJECT pDO); BOOLEAN CAMAC loctl Read NAFword24( IN PDEVICE_OBJECT pDO);

BOOLEAN CAMAC loctl WriteN AFbyte( IN PDEVICE_OBJECT pDO); BOOLEAN CAMAC loctl WriteNAFword( IN PDEVICE_OBJECT pDO); BOOLEAN CAMAC loctl WriteN AFword24( IN PDEVICE_OBJECT pDO); BOOLEAN CAMAC I octl Reset( IN PDEVICE_OBJECT pDO); BOOLEAN CAMACIoctlEriablelnterrupt(IN PDEVICE_OBJECT pDO); BOOLEAN CAMACIoctlDisablelnterrupt(IN PDEVICE_OBJECT pDO); BOOLEAN CAMACIoctlSetAorlnfo(IN PDEVICE_OBJECT pDO); BOOLEAN CAMACIoctlSetAttenuator(IN PDEVICE_OBJECT pDO); BOOLEAN CAMACloctlStartAor(IN PDEVICE_OBJECT pDO); BOOLEAN CAMAC loctlStopAor( IN PDEVICE_OBJECT pDO); BOOLEAN CAMACIoctlGetFromQueue(IN PDEVICE_OBJECT pDO); BOOLEAN CAMACIoctlSetBuffer(IN PDEVICE_OBJECT pDO); BOOLEAN CAMAC I octlResetB uffer( IN PDEVICE_OBJECT pDO); BOOLEAN CAMACIoctlSetPCUCode(IN PDEVICE_OBJECT pDO); BOOLEAN CAMACSyncGetFromQueue(IN OUT PVOID pContext); //-- CAMAC IOCTL responses

Отклики на обращение к драйверу через DeviceloControl, фактически, представляют собой интерфейс драйвера с приложением. Так как функции откликов однотипны, то их можно собрать в таблицу. Это позволяет избежать рутинной операции дешифрации управляющих кодов. Для этой цели объявлена переменная CAMAC_IOCTL_RESPONSE ioctlResponseTable, используемая в CAMACDispatch.

П2.3 Реализация драйвера АОП ССРТ

Реализация объекта драйвер АОП ССРТ, представляет собой законченную версию драйвера использующуюся в наблюдениях с 1998 г. Данная реализация поддерживает два вида АЦП, 8 и 10 бит, и два вида АОС, с полосой частот 28 МГц и 120 МГц. Взаимосвязь драйвера и приложения предполагается следующей.

Приложение должно открыть драйвер стандартным способом открытия устройства, как показано ниже HANDLE m_hHardware = CreateFile(7/./CAMACDev",

GENERIC_READ | GENERIC_WRITE,

FILE_SHARE_READ | FILE_SHARE_WRITE,

NULL,

OPEN_EXISTING,

FI LE_ATTR IВ UTE_ARC HI VE, | FIL E_F LAG_0 VE RL АР P E D, NULL);

if (m_hHardware == INVALID_HANDLE_VALUE){ AfxMessageBox("Can't open CAMACDev");

}

После успешного открытия, приложение должно попытаться открыть именованный объект ядра event для синхронизации с аппаратными прерываниями

m_hardwareThreadlnfo.hNotifyEvent = OpenEvent( SYNCHRONIZE, FALSE,

"CAMAC_lsrNotifi cation"); if (!m_hardwareThreadlnfo.hNotifyEvent) AfxMessageBox("lsn't notify event");

Ввод данных осуществляется следующим образом:

• драйверу, с помощью DeviceloControl передается структура CAMAC_AOR_SSRT_SPECIFIC, содержащая конфигурацию приемника и описатель пакета данных. Управляющий код -IО CTL_C AM АС_АО R_S ET_I N F О.

• затем драйверу передается управляющий код IOCTL_CAMAC_AOR_START.

• инициализируется поток (thread) синхронизации, отслеживающий изменения состояния hNotifyEvent. Переход hNotifyEvent во взведенное состояние свидетельствует о поступлении очередного пакета данных в очередь драйвера.

• готовый пакет данных вводится из драйвера процедурой потока синхронизации с помощью управляющего кода IО CTL_CAMAC_G ET_FROM_Q U Е U Е

• по завершению накопления очередных данных, процедура потока синхронизации, передает сообщение объекту в родительском процессе.

Приложение 2. Форматы файла исходных данных АОП ССРТ

П2.1 Форматы данных до 1998 г.

На формат данных, используемых с 1992 г., накладывались требования по объему и возможности восстановления временной последовательности при разрушении файла. Последнее связано с особенностями файловой системой DOS (FAT).

SPECTRUM_PER_CLUSTER = 8

struct date{

WORD year;

BYTE month;

BYTE day;

}

struct channelCorrection{

WORD alignerl [CHANNEL_PER_SPECTRUM]; WORD aligner2[CHANNEL_PER_SPECTRUM];

}

struct SSRTtime{

DWORD ms : 4; //milliseconds

DWORD hs :4; //ten milliseconds

DWORD ds • 4; //hundred milliseconds

DWORD s : 4; //seconds

DWORD ts: 3; //ten seconds

DWORD m ■' 4; //minutes

DWORD tm :3; //ten minutes

DWORD h : 4; //hours

DWORD th: 2; //ten hours

}

struct AORstate{

WORD integration^; //in 56 ms ticks

WORD attenuationAOR:3; //dB = pow(2. -atteuationAOR)

WORD reserved:8; }

struct AORspectrum{

AORstate totalState;

WORD totalLeft[CHANNEL_PER_SPECTRUM];

WORD totalRight[CHANNEL_PER_SPECTRUM];

AORstate ewState;

WORD ewLeft[CHANNEL_PER_SPECTRUM];

WORD ewRight[CHANNEL_PER_SPECTRUM];

AORstate nsState;

WORD nsLeft[CHANNEL_PER_SPECTRUM];

WORD nsRight[CHANNEL_PER_SPECTRUM];

struct AORspectrumPCP{ AORstate CPState;

WORD CPLeft[CHANNEL_PER_SPECTRUM]; WORD CPRight[CHANNEL_PER_SPECTRUM]; AORstate PState;

WORD PLeft[CHANNEL_PER_SPECTRUM]; WORD PRight[CHANNEL_PER_SPECTRUM];

}

struct AORcluster{ SSRTtime time;

AORspectrum spectrum[SPECTRUM_PER_CLUSTER]; }

struct AORclusterPCP{ SSRTtime time;

AORspectrumPCP spectrum[SPECTRUM_PER_CLUSTER]; }

Файлы данных, содержащие отсчеты аддитивно-корреляционного режима и режима модуляции фазы, представляют собой, соответственно:

date date

channelCorrection channelCorrection

AORcluster AORclusterPCP

AORcluster AORclusterPCP.

П2.2 Формат данных с 1998 г.

Опыт работы с исходными данными привел к выработке следующего формата.

I ф>К1>рЫ ШШ1М\. lfCIUl.ll.i\CMMC И К.1ЖДО\1 OIC4CIV

struct totalTimeDescriptor{ //Windows NT SYSTEMTIME

WORD year; WORD month; WORD dayOfWeek; WORD day; WORD hour; WORD minute; WORD second; WORD milliseconds;

};

struct timeFilterDescriptor{

WORD discrete; //milliseconds

WORD convolutionWindow; //samples

WORD convolutionFunction; //ID

struct antennaStateDescriptor{

WORD base; //

>;

struct attenuationStateDescriptor{

double aorAttenuation; //dB

double commonAttenuation; //dB

struct receiverStateDescriptor{

double time; //sec current day GMT

totalTimeDescriptor totalTime; attenuationStateDescriptorattenuation; timeFilterDescriptor filter; antennaStateDescriptor antennas;

struct spectrumSample_AOR_PCP{

BYTE signature^]; //"AOR_PCP_"

receiverStateDescriptor state; WORD rightP[CHANNEL_PER_SPECTRUM]; WORD rightCP[CHANNEL_PER_SPECTRUM]; WORD leftP[CHANNEL_PER_SPECTRUM]; WORD rightCP[CHANNEL_PER_SPECTRUM];

Структуры данных используемые в заголовке файла struct magnitudePhaseDistributionArray{

_complex[128]; //double re, double im;

};

struct ephemeridesDescriptor{

double culmination; //sec

double declination; //rad

double radius; //rad

double P; //rad

double B; //rad

double L; //rad

double dDdt; //rad/sec

double d2Ddt2; //rad/secA2

double dHdt; //rad/sec

double d2Hdt2; //rad/secA2

>;

struct ephemeridesCluster{

ephemeridesDescriptor previosDay; ephemeridesDescriptor currentDay; ephemeridesDescriptor nextDay;

};

Структура заголовка struct rawDataFileHeader{ BYTE signature[8]; WORD channelPerSpectrum; WORD bitPerSample; totalTimeDescriptor startTime; //GMT totalTimeDescriptor finishTime; //GMT ephemeridesCluster ephemerides; magnitudePhaseDistributionArray magnitudePhaseDistribution; BYTE comment[1024]; BYTE reserved[1024];

};

Таким образом, файл исходных данных представляет собой заголовок, за которым располагается последовательность отсчетов Raw data file

rawDataFileHeader spectrumSample_AOR_PCP

spectrumSample_AOR_PCP.

Ниже приведен псевдокод примера доступа к данным при использовании традиционного доступа к файлу и при проецировании файла на адресное пространство процесса.

i spectrum, j channel access example: File access

seek(hFile,sizeof(rawDataFileHeader) + i*sizeof(spectrumSample_AOR_PCP)); read(spectrumBuffer,sizeof(spectrumSample_AOR_PCP)); WORD rightPhaseSample = spectrumBuffer.rightP[j];

Memory access

spectrumSample_AOR_PCP* pSpectrum = pViewMapOfFile + sizeof(rawDataFileHeader);

WORD rightPhaseSample = pSpectrum[i].rightP[j];

Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.