Без операционной системы...

 
1 2 3 4

Ch

втянувшийся
ПРОШУ НЕ РАЗРЫВАТЬ НА КУСКИ И НЕ ТОПТАТЬ!

Уважаемые форумисты!

С удовольствием слежу за "Языческими разборками" и понимаю, что здесь собрались люди высокой квалификации и широкой эрудиции. Сам я этим похвастаться не могу, поэтому обращаюсь за помощью и консультацией.
Сейчас мне предстоит запустить новую партию ДПЛА ГрАНТ. В этой партии я хочу пойти на рискованный шаг, который, я надеюсь, принесёт дивиденды в будущем. Я хочу заменить бортовую ЭВМ собственной нашей разработки, собранную на 51 микропроцессорах (микроЭВМ?), на ЭВМ в стандарте РС/104.
Причины, которые подтолкнули меня к такому решению:
1)высокая надёжность плат РС/104 выпускаемых поточно на отлаженном производстве
2)возможность писать бортовые программы в хорошо освоенной среде Дельфи (или СИ++ для тех, кому это нравится). Это особенно важно, так радикально облегчает модернизацию функциональности ДПЛА и всего комплекса.
В связи с этим у меня возникает вопрос. А зачем иметь на бортовой ЭВМ операционную систему? Ведь все эти Виндоусы занимают очень много дорогой памяти на флэш-диске. Не знаю, что такое ЛИНУКС, но подозреваю, что он тоже не 1К.
Можно ли написать на Дельфи программу, которая могла бы сразу загружаться в память бортовой ЭВМ и там спокойно исполняться? Так мне было бы проще.
Подскажите, пожалуйста!
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Увы, это надо знать конкретные спецификации конкретного изделия (я 51-ю то знаю довольно поверхностно, хотя и проектировал на ней развлекухи ради робота). Можно всё - вопрос, какими затратами. А операционку вводят, естественно, для упрощения прикладного программирования.
 

Ch

втянувшийся
Вы меня не поняли.
От 51 -й мы как раз уходим на архитектуру ИБМ ПК, которую здесь все очень хорошо знают, как я понял.
А на 51-х и так без всякой операционкти работали и очень хорошо было!
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Ну, я просто не знаю, что за зверь PC/104 ;)
 

Ch

втянувшийся
2 =KRoN=

РС/104 - это один из стандартов (второй - microPC), который определяет использование ЭВМ с архитектурой персональных компьютеров в промышленных и других тяжёлых условиях. За основу стандарта взяты две вещи:
1)размер платы или "форм-фактор" 90мм х96 мм (на самом деле сколько-то в дюймах)
2)системная шина ИБМовских персональных компьютеров ISA, но загнанная в специальный разъём, который позволяет укладывать платы формата РС/104 друг на друга, как этажерку, и строить, таким образом, такую ЭВМ, какую надо.
Основным пафосом этого дела является возможность писать программы для боевых ЭВМ на обычных персональных ЭВМ, а потом переносить их без дополнительной отладки.
Такие промышленные ЭВМ строят обычно на 386 процессорах, хотя есть и 486, а сейчас уже и Пентюхи. Но для управления ДПЛА за глаза хватит, наверное, 386.
Хочу применить на ДПЛА. Вопрос, как переносить программу? Можно ли без ОС?

Особенности стандарта РС/104. Написано по-русски. Коротко и ясно
Каталог процессорных плат одной из фирм. Это для примера. Там можно посмотреть образцы.
 
+
-
edit
 

GrayCat

координатор

Грубо говоря, изначально ОСы - одно из средств "разделения труда". Чтобы каждому программисту не приходилось заново писать подпрограмму вывода символа на экран с ожиданием ретрейса ;) , или там пересылки файла по сети. Одни программеры писали ОС и доку по ней, другие - прикладухи.

Еще одна роль ОС - "развязка" от аппаратуры. Сначала, когда каждая ЭВМ была уникальна, об этом как-то не задумывались. Каждая прикладуха сама лазила по нужным ячейкам памяти и портам В/В. Потом ЭВМ начали "апгрейдить", и требовалось обесечить работу имеющихся программ на новом железе. Потом машины стали выпускать серийно, и пошло-поехало...
Когда появились многозадачные и многопользовательские ОСы, на них была возложена и обязанность "разумного" распределения ресурсов и обеспечение взаимодействия программ.

Вот и смотрите теперь, Николай Валерьевич...

"Простейшие" устройства на однокристалках как правило делают без ОС: они ведь обычно "рулят" строго заданным набором устройств, количество задач тоже ограничено, как и ресурсы. Хотя вот в последнее время, с переходом микроконтроллеров (МК) на Ц, уже появились "зачатки" ОС - библиотеки процедур, реализующих команды языка.

В более сложных системах ОС приходится ставить. И тут встает проблема выбора.

Если Вы собираетесь писать на Дельфи, это же ведь прийдется Виндофс ставить на борт. Ни один здравомыслящий человек получившуюся КАКУ не купит (см. трагическо-юмористический рассказик про виндофс на F-16).

Что есть. Есть общеизвестный Линукс. Под него есть почти все ;) Но жирноват маленько пингвинчик.

Есть близкий родственник Линукса - QNX. Смотреть тут: QNX Realtime Operating System (RTOS) software, middleware, development tools   and services for superior embedded design
Это такой мини-Юникс, специально заточенный под Realtime Embeddeed systems - то что доктор прописал. Ядро минимальных размеров. В зависимости от потребностей, в комплект включаются только нужные модули - начиная от "голого" ядра, заканчивая X-window с инет-браузером. Имеются всяческие средства разработки.

Кстати, на том же сайте можно скачать образ дискетки с "готовым" QNX. Представьте: на ОДНОЙ 1,44 дискете у вас целый UNIX, с диалапом, X-window и браузером!
Ну, и для особых извращенцев - IBM OS/2. Когда-то ее даже в банкоматы ставили, а в Королеве, по-моему, тренажеры для космонавтов. Сам вот сейчас под ней и сижу.

Выбор за вами!
Gray ©at <i>[Семейство кошачих]</i>  
+
-
edit
 

avmich

координатор

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

Теперь моё мнение, в противовес фанатам QNX :) . Delphi считается средством для написания программ со значительной долей пользовательского интерфейса. Ваша задача, встоенное программное обеспечение специализированного прибора, часто решается на С - даже, бывает, неполном - или на С++, когда ресурсов побольше; бывает, на Форте - КРоН?.. - или на ассемблере, но это всё меньше - какие-то части, конечно, бывает, нужно по соображениям эффективности на ассемблере писать, но общее мнение - конечно, с моей точки зрения :) - чем больше С в компоте из С и ассемблера, тем обычно проще.

Хотя можно писать на чём угодно :) . Вы сами посмотрите на задачу, на имеющийся опыт, заделы, доступные ресурсы, привычки-предпочтения - и решайте. Я бы при прочих равных обычно рекомендовал С или С++, с ассемблерными вставками. Но задачи - и программисты - все разные...

И пара слов о Линуксе, напоследок :) . Считается более - заметно более - стандартным и распространённым, чем QNX (это значит, больше книжек, больше ресурсов на Интернете, больше знающих людей вокруг - что важно при переходе на новую систему). Он вполне конфигурируем - можно из ядра очень много выкинуть, хотя, возможно, минимальный размер получится и больше, чем у QNX - это бы надо посмотреть :) . Многие прочие параметры у них равны; QNX несколько более специализирована под задачки "реального времени", Линукс несколько более (вполне) универсален. Линукс бесплатен и доступен в исходных текстах :) у QNX есть поддержка... хотя, конечно, с моей пристрастной точки зрения, отдел технической поддержки редко бывает лучшим в компании, куда реже, чем маркетинговый...

Спрашивайте!
 
+
-
edit
 

avmich

координатор

Ещё немного :) средства разработки на Линуксе, конечно, тоже на уровне, и вполне неплохом. То, что Вы пишете, что Паскаль понимаете, что удобно на нём мысли выражать - так минимальный С всё же довольно похож на минимальный Паскаль - другое дело, конечно, когда сравнивается их использование на "высокопрофессиональном" (скажем, по эффуктивности) уровне. По крайней мере, мне при переходе особых сложностей не встретилось. А то, что у Вас возможности машину под Вас, или под Паскаль, сделать - такое тоже ведь делали и для Фортрана, и Ады, и Лиспа... Последний вообще считают - может, и не все - языком более высокого уровня, чем многие объектно-ориентированные, есть пример очень эффективного проекта, сделанного на Лиспе (и проданного Яху за, кажется, 50 MUSD...) . Не зря в некоторых институтах программировать начинают учить с Лиспа - не Паскаля. В этом плане - очень важно, что именно Вам удобно. Допускаю, что как раз лучшее решение - спецмашина под Дельфи.
 
+
-
edit
 

avmich

координатор

Не удержусь, ещё немного флейма :) - "Не бывает языков высокого уровня, бывает лень писать на ассемблере..."
 
RU Victor Blinov #22.09.2001 05:25
+
-
edit
 

Victor Blinov

опытный

Ch>А зачем иметь на бортовой ЭВМ операционную систему?
Исключительно для того, чтобы не изобретать велосипед :)
Используйте ту операционку, которая обеспечивает Вам всё, что Вам необходимо, и при этом (по возможности) ничего больше не содержит. Т.е. в идеале - некая самописаная "затычка", делающая только то, что Вам нужно от операционки. Но в идеале только с точки зрения потребления ресурсов.

Ch>Ведь все эти Виндоусы занимают очень много дорогой памяти на флэш-диске. Не знаю, что такое ЛИНУКС, но подозреваю, что он тоже не 1К.
PC-104 вполне нормально живёт с голым Dos-ом. (А это уже почти и не операционка, хотя тоже не 1К) Для Ваших задач скорее всего этого хватит. А "Виндоусы", помимо того, что занимают память, ещё и живут своей жизнью. Им вдруг приходит в голову заняться чем-то своим, не предупредив Вас. И все доступные ресурсы бросят туда, наплевав на то, что Ваш процесс ждёт события, на которое должен прореагировать в доли секунды.

Я говорю не голословно - есть хорошо знакомая контора, в которой уже несколько лет используют 104 - встраивают в хроматограф собственного изготовления. И пользуют они всё это с Dos.

Ch>Можно ли написать на Дельфи программу, которая могла бы сразу загружаться в память бортовой ЭВМ и там спокойно исполняться? Так мне было бы проще.
Для начала: написать можно всё

Но какой ценой - это уже совсем другой вопрос. Не сочтите за наезд, но хватит ли у Вас на это времени - сил - квалификации? Поверьте, на этом пути ОЧЕНЬ много подводных камней. Проверено на живых людях :)



В любом случае - удачи!
"Будьте самоучками - не ждите, чтобы вас научила жизнь." С.Е. Лец  
+
-
edit
 

Voennich

опытный


Мое мнение что для Вас прекрасно подойдет QNX. Несколько лет назад в одном НИИ вполне успешно применяли данную ОС для автоматизации Энергоблока ГРЭС. Начиная от ГУИ и заканчивая программированием микроконтроллеров для управления задвижками.
Ядро с графической оболочкой около 340 К
Средство разработки PhAB + Watcom C++

Естественно о современных разработках я практически ничего не знаю но как уже говорилось - в инете куча ссылок.
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Ещё свои 5 коп., по результатам слушаний :)

Про Форт мне придётся промолчать, т.к. довольно тяжело на него перевести целый программистский коллектив (хотя в моей практике такое есть).

Про Ассемблер однозначно стоит забыть (за исключением критичных к времени исполнения вставок).

Полагаю, что с задачей можно справиться и без ОС. Ну в самом деле, что у вас реально требуется от ОС? Файловая система на Flash-дисках? Обмен данными с другими устройствами? Всё это реализуется довольно быстро "с нуля".

Если уж брать OS, то тут всё сложнее. DOS, скорее всего, стоит отбросить - многозадачность в вашем деле помехой не будет (хотя, конечно, и без неё можно замечательно обойтись при грамотном подходе). QNX - идеальный случай. Но он стоит денег. И за OS и за средства разработки. Цифр не знаю, но деньги большие. Всё же, полноценная RT-OS. Есть ещё RT-Linux. Бесплатный, многие хвалят. Но, всё же, не совсем полноценный RT, как говорят специалисты. Хотя, скорее всего, для задач ДПЛА потянет.

Ещё рекомендую посмотреть вот тут: http://airbase.ru/forum/9/000060/4
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Кстати, Watcom C++ - очень большой плюс QNX'у :)
 
RU Victor Blinov #22.09.2001 10:49
+
-
edit
 

Victor Blinov

опытный

Voennich>Мое мнение что для Вас прекрасно подойдет QNX. Несколько лет назад в одном НИИ вполне успешно применяли данную ОС для автоматизации Энергоблока ГРЭС. Начиная от ГУИ и заканчивая программированием микроконтроллеров для управления задвижками.
...
Voennich>Естественно о современных разработках я практически ничего не знаю но как уже говорилось - в инете куча ссылок.
И до сих пор применяют в этих целях! (и не только в НИИ)

По словам знакомого, который этим занимается, действительно очень надёжная ОС. Но среда... Опять же, не уверен, что там есть Паскаль, столь любимый господином Чистяковым ;)
"Будьте самоучками - не ждите, чтобы вас научила жизнь." С.Е. Лец  
+
-
edit
 

Voennich

опытный


2 Виктор
Я имел ввиду, что я участвовал в применении QNX. Т.е. я не имел ввиду что оно не применяется сейчас, я хотел сказать что просто не в курсе современной ситуации.
Ко всему прочему тогда шла речь о QNX 4.x, а сейчас уже 6.0, QNX Rt и т.д. в чем я совершенно 0

2 Ch - насколько я понял по публикациям в сети существует возможность попробовать QNX бесплатно, при условии не применения в комерческих целях
 

Ch

втянувшийся
Огромное спасибо всем за наметившуюся дискуссию.
Ещё раз попробую пояснить СВОЮ проблему.
1.Перехожу на новую боевую ЭВМ, с архитектурой персоналки.
2.Одна из важнейших целей - упростить процесс модернизации программно-математического обеспечения, для чего хочу писать его в виде ЕДИНОЙ программы на Дельфи, точнее даже на ПАСКАЛЕ в системе Дельфи на обычной персоналке. Причина: у меня много чего уже есть на Паскале, и я его знаю (персоналка тоже есть :) ).
3.Паскаль я знаю и ничего нового изучать не собираюсь, так как это мне НЕ НУЖНО.
4.Программу, написанную на Дельфи, собираюсь поставить прямо на боевую ЭВМ без каких либо переделок.
5.Внешние устройства, которые будут подключены к боевой машине:
а)флэш-диск
б)несколько портов RS-232
в)несколько аналоговых входов (через АЦП)
г)несколько цифровых входов
д)несколько цифровых выходов
е)два счётчика.

Теперь вопрос. Что должно стоять в качестве ОС на боевой машине для того, чтобы моя программа исполнялась?
 
US Реконструктор #22.09.2001 11:14
+
-
edit
 
Вопрос о QNX

В NT данный кусок кода тотально "замараживает" ОС. Думаю, догадаваетесь почему
 
void freeze()
{
  SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
  for(;;);
}

Возможно ли такое в QNX?
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
MiG>Возможно ли такое в QNX?

Не знаю, всё зависит от менджера процессов.
Скорее всего - там всё просто несколько иначе :)
 
RU Victor Blinov #22.09.2001 11:54
+
-
edit
 

Victor Blinov

опытный

Николай Валерьевич,
Ch>1.Перехожу на новую боевую ЭВМ, с архитектурой персоналки.
Замечательно.

Ch>2.Одна из важнейших целей - упростить процесс модернизации программно-математического обеспечения, для чего хочу писать его в виде ЕДИНОЙ программы на Дельфи, точнее даже на ПАСКАЛЕ в системе Дельфи на обычной персоналке. Причина: у меня много чего уже есть на Паскале, и я его знаю (персоналка тоже есть :) ).
Если одна из важнейших целей - упростить процесс, то Вы мыслите правильно (на мой взгляд ;) ). Тем более, что много чего уже есть на Паскале.

Ch>3.Паскаль я знаю и ничего нового изучать не собираюсь, так как это мне НЕ НУЖНО.
Насчёт НЕ НУЖНО сомневаюсь, но спорить не буду.

Ch>4.Программу, написанную на Дельфи, собираюсь поставить прямо на боевую ЭВМ без каких либо переделок.
Тогда писать надо аккуратно, избегая всяческих "тёмных" мест.

Ch>5.Внешние устройства, которые будут подключены к боевой машине:
Ch>а)флэш-диск
Ch>б)несколько портов RS-232
Ch>в)несколько аналоговых входов (через АЦП)
Ch>г)несколько цифровых входов
Ch>д)несколько цифровых выходов
Ch>е)два счётчика.
Ничего необычного для практически любой ОС. А пункты в)-е) Вы (видимо) в любом случае программировать будете сами.

Ch>Теперь вопрос. Что должно стоять в качестве ОС на боевой машине для того, чтобы моя программа исполнялась?
Это в первую очередь зависит от требований будущей программы.

Много облегчающих задачу факторов: многозадачность не нужна, графики никакой и т.д.

Опять же, возвращаясь к п.2: Одна из важнейших целей - упростить процесс модернизации не ломайте голову, привычный (судя по тому, что персоналка тоже есть) DOS.
"Будьте самоучками - не ждите, чтобы вас научила жизнь." С.Е. Лец  
+
-
edit
 

varban

администратор
★★★
KRoN> DOS, скорее всего, стоит отбросить - многозадачность в вашем деле помехой не будет

Не совсем так, и в DOS можно иметь многозадачность, правда, самому надо позаботиться.

quote:

      2.2. Диспетчер задач реального времени.
      Диспетчер задач реального времени представляет собой программную
    оболочку, расширяющую возможности стандартной операционной системы
    MS DOS. Программная оболочка реализует мультизадачный режим работы
    персональной ЭВМ,  что недоступно в рамках MS DOS. Это достигается
    путем изменения программы обработки прерываний от таймера и вводом
    понятия задачи, каждая из которых характеризуется своим контекстом
    (т.е.  программой,блоком описания и блоком  управления)



 


// Описание ПО Кратер-2000

Но все же такой подход (создание собственной операционной среды) не очень хорош - знаете, как трудно найти программеров поддержки? Кратеру уже более 10 лет, и видно, будет использоваться еще столько же, пока прибор работает :(
Тоесть, чтобы сделать новый софт, нужно все выкинуть и начать сначала.
В 94 мы пробовали перелезть под полуось - не получилось. Так и остались под самопальной надстройкой над ДОС.
 

Ch

втянувшийся
Я думаю надо писать на Дельфи то, что там называется "консольное приложение", а исполнять на боевой машине под ДОС 6.22. Тем более, что что такая ДОС, как правило, придаётся к процессорной плате в ПЗУ.
Многозадачность не нужна. Я сам определю порядок решения задач (в виде подпрограмм).
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Ch>Тем более, что что такая ДОС, как правило, придаётся к процессорной плате в ПЗУ.

Тогда это совсем хорошо. Только непонятно, чем там DOS вообще заниматься будет? :)

Ch>Многозадачность не нужна. Я сам определю порядок решения задач (в виде подпрограмм).

Ну, это немного спорный вопрос. Но скорее ты прав.

Кстати, а что, Дельфи умеет делать 16-битные консольные приложения под DOS?
 

Ch

втянувшийся
Цитата из Дельфи Хэлп:
"Console applications are 32-bit Windows programs that run without a graphical interface, usually in a console window. These applications typically don’t require much user input and perform a limited set of functions.".

Насчёт 16 разрядности чего-то не подумал. 386 и 486 - это 16-разрядные?
 

muxel

Энтузиаст реактивного движения

Ch>Цитата из Дельфи Хэлп:
Ch>"Console applications are 32-bit Windows programs that run without a graphical interface, usually in a console window. These applications typically don’t require much user input and perform a limited set of functions.".

Ch>Насчёт 16 разрядности чего-то не подумал. 386 и 486 - это 16-разрядные?

Интелы 386 и 486 32-разрядные, но тут ключевое слово 32-bit Windows programs :)
 

Bobo

опытный

Насчет QNX — дело ваше, конечно, да и сама операционка исключительная, но: дорогая, сложно писать под нее, и сложно общаться с ее европейскими представителями. Не рассчитывайте на скидки, помощь какую-то итд — все сами за большие деньги. Правильно писать под нее тоже занятие очень нетривиальное. Не знаю, я бы не рискнул без особой необходимости переходить на QNX.
Весь в белом /© Vale/  
1 2 3 4

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru