Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: scmRTOS + ADA
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
Сергей С.
Здравствуйте!

Пробовал ли кто-нибудь писать задачи на языке Ada для порта gcc scmRTOS? Возможно ли это в принципе? И если возможно, каков механизм подключения и взаимодействия этих задач с ядром?
zltigo
Цитата(Сергей С. @ Feb 15 2008, 20:06) *
Пробовал ли кто-нибудь писать...

А что, осталась только эта проблема? Вопросы наличия компилятора ADA и линкера позволяющего линковать объектники и библиотеки созданные этим компилятора хоть с чем-нибудь дугим уже решены?
Тогда о каком инструментарии и микроконтроллере идет речь?
Сергей С.
Цитата(zltigo @ Feb 15 2008, 21:29) *
А что, осталась только эта проблема? Вопросы наличия компилятора ADA и линкера позволяющего линковать объектники и библиотеки созданные этим компилятора хоть с чем-нибудь дугим уже решены?
Тогда о каком инструментарии и микроконтроллере идет речь?


Речь идет об инструментарии WinAVR, и соответственно, о микроконтроллерах AVR. Из вашего поста я понял, что на данный момент это невозможно. А так хотелось писать на Ada с применением ОСРВ, которая статически распределяет память...
zltigo
Цитата(Сергей С. @ Feb 15 2008, 22:33) *
что на данный момент это невозможно.

Я этого не утвержаю,по крайней мере не услышу название ADA компилятора под AVR.
Цитата
применением ОСРВ, которая статически распределяет память...

Редкая из мелких систем распределяет память НЕ статически smile.gif это скорее недостаток, нежели хоть какое-ниюудь достоинство sad.gif.
Сергей С.
Цитата(zltigo @ Feb 16 2008, 00:26) *
Я этого не утвержаю,по крайней мере не услышу название ADA компилятора под AVR.


Это gcc-GNAT, http://avr-ada.sourceforge.net/. Он включен в последний пакет WinAVR.

Цитата(zltigo @ Feb 16 2008, 00:26) *
Редкая из мелких систем распределяет память НЕ статически smile.gif это скорее недостаток, нежели хоть какое-ниюудь достоинство sad.gif.


Я вижу достоинство в том, что при воздействии помех и порче данных в оперативной памяти AVR меньше вероятность повреждения оборудования при ошибочном обращении к портам контроллера вместо ячеек памяти. Другое несомненное достоинство - снижение количества занимаемого под структуры данных ОС места в RAM.
zltigo
Цитата(Сергей С. @ Feb 16 2008, 00:10) *
Это...

Тогда через заднепроходное отверстие некоторый шанс слепить есть.
Цитата
..при воздействии помех и порче данных в оперативной памяти....

Я Вас умоляю, только не надо схоластических рассуждений, тут уже есть одна тема sad.gif
Цитата
Другое несомненное достоинство - снижение количества занимаемого под структуры данных ОС места в RAM.

На Memory Control Block - размер, пару указателей.... Это в общем-то немного и с лихвой компенсируется даже однй выгруженной из памяти ненужной в данный момент времени задачей. При отладке и дистанционном разборе полетов блоки памяти могут быть просмотрены без копания в листинге конкретной сборки. Кроме того, речь о том, что систем со статически линкуемыми задачами пруд пруди они сишные и проблем слепить будет меньше. Только вот c ADA по любому заморачиваться неразумно.
Damon
Цитата(Сергей С. @ Feb 15 2008, 22:33) *
Речь идет об инструментарии WinAVR, и соответственно, о микроконтроллерах AVR. Из вашего поста я понял, что на данный момент это невозможно. А так хотелось писать на Ada с применением ОСРВ, которая статически распределяет память...

У Гриффитса в его буке "GCC. Полное руководство. Platinum Edition" есть даже глава посвященная "совмещению языков". Глава 10. Там же есть пункт совмещение языков Ada и C.
Цитата оттуда:
Цитата
Первым аргументом оператора pragma Import является название языка, на котором реализован код тела процедуры. Стандарт Ada определяет в качестве известных компиляторов С("с"), С++("с++")...

Gcc, вроде, стремиться соответствовать стандартам, так что, шанс подружить scmRTOS и Ada'у есть. Ну а учитывая, что цитата из книжки по gcc, то шанс велик.
Ссылка на источник, где можно разжиться этой книгой, здесь, на форуме, пролетала. Так что, все в Ваших руках...
Сергей С.
Цитата(Damon @ Feb 16 2008, 11:02) *
У Гриффитса в его буке "GCC. Полное руководство. Platinum Edition" есть даже глава посвященная "совмещению языков". Глава 10. Там же есть пункт совмещение языков Ada и C.


Благодарю за ценный совет. Отличная книга.
Непомнящий Евгений
А если не секрет - чем вас прельстила именно Ада?
Сергей С.
Цитата(Непомнящий Евгений @ Feb 17 2008, 11:38) *
А если не секрет - чем вас прельстила именно Ада?


Положительный опыт использования Паскаля при написании достаточно сложной компьютерной программы для расчетов по методу конечных элементов. Для программирования контроллеров использовал Си, и он решал все мои задачи достаточно легко. Пока их сложность не увеличилась. Полезли с трудом вылавливаемые ошибки, большинство которых можно было бы избежать при написании программы на языке со строгой типизацией. О языке Ada узнал, наткнувшись на описание в Winavr\doc\avr-ada. Но теперь, поковыряв примеры программ на Ada'е, склоняюсь к мысли, что поддержка Ada для AVR пока сыровата. А смотреть в ее сторону начал потому, что хотел узнать, чем же она прельстила других разработчиков, пишущих программы для критичных к надежности и безопасности приложений.
sergeeff
Лет тридцать тому назад, учась и работая в институте, была волна всяких языков типа Modula, LISP, Ada и еще куча всего. Вымерли почти все. При этом никак не пойму, чем С/С++ не устраивает? Если люди на них написали UNIX и Windows, а тебе не хватает их средств для AVR, то может в голове надо чего-то подправить?

У меня был сотрудник. Очень толковый. Документацию писал к программам и устройствам просто блестяще. Программист тоже неплохой. Но у него был такой большой недостаток. Допустим, начинал проект в Borland C++. Через пару месяцев натыкался на какую-то проблему, как ему казалось успешно решенную в Microsoft C++. Он прибегал и говорил: "Кранты, тупик. Надо все переписать под Microsoft". Если мы давали ему эту возможность, через некоторое время находилось еще что-то, и обосновывалась необходимость перехода на Watcom.

На самом деле все это чушь. Любую задачу можно написать на каком-то одном языке. И в настоящее время лучше и эффективнее C/C++ ничего нет.
zltigo
Цитата(Сергей С. @ Feb 17 2008, 15:56) *
А смотреть в ее сторону начал потому, что хотел узнать, чем же она прельстила других разработчиков, пишущих программы для критичных к надежности и безопасности приложений.

Она не прельстила разрабочиков ПРИЛОЖЕНИЙ smile.gif Она прельстила разработчиков ADA возможностью банально срубить очень больших бабок за обещания большим и богатым американским дядькам в погонах создать чудо язык на котором любой рядовой первого класса сбацает все, что нужно и без ошибок. Что потом позволит якобы сэкономить кучу бабок на квалифицированных разработчиках приложений. Утрирую, конечно, но в общем это так. Дальше, дальше деньги плачены - надо заставлять использовать.

P.S.
Паскаль видал (и не только в гробу smile.gif )
На Modula-2 писал достаточно много.
А вот ADA, как и в свое время PL/1 муть голубая.

Цитата(Сергей С. @ Feb 17 2008, 15:56) *
...большинство которых можно было бы избежать при написании программы на языке со строгой типизацией.

Или простым повышением уровня владения языком и осознание того, что от чего зависит и к чему приведет. Причем повышать уровень владения необходимо для ЛЮБОГО языка. При определенном уровне владения строгие ограничения, как и в любом естественном языке начинают тяготить. Тогда начинают рожать всяки диалекты (например Борландячие диалекты Паскаля), на которых хоть как-то можно работать.
Сергей С.
Цитата(sergeeff @ Feb 17 2008, 17:32) *
При этом никак не пойму, чем С/С++ не устраивает? Если люди на них написали UNIX и Windows, а тебе не хватает их средств для AVR, то может в голове надо чего-то подправить?

На самом деле все это чушь. Любую задачу можно написать на каком-то одном языке. И в настоящее время лучше и эффективнее C/C++ ничего нет.


Ну зачем же так категорично судить? Такое ощущение, что я залез с Adа'ой в ваш проект smile.gif. А чтобы понять, что один язык лучше других, нужно получить хоть какое-то представление о том, чем они отличаются, скомпилировать пару простых примеров, поковырять их. Это нормально перед началом большой работы и не нормально перед сдачей проекта smile.gif. И все же я остановился на gcc порте scmRTOS, и , соответственно, C/C++. Впечатлен ее (scmRTOS) простотой и красотой, хорошим описанием на русском языке.

Кроме того, я и не говорил, что Си меня совсем не устраивает. Все встретившиеся мне ошибки я быстро исправил. Но при использовании языка Ada многие из них не дошли бы до этапа тестирования, а были бы отсеяны при компиляции.
zltigo
Цитата(Сергей С. @ Feb 17 2008, 18:05) *
..скомпилировать пару простых примеров, поковырять их.

Любой язык отлично сделает даже не пару простых примеров. Только это не значит абсолютно ничего.
Для простых примеров прекрасен бейсик - вообще ошибок по вине языка сделать не возможно. Я предполагал, что нужно работать. Для полноценнной работы, как и для полноценного общения нужны живые языки. Писать на ADA и общаться на Эспеаранто можно, но не нужно. Два падежа в Эсперанто делающие невозможными многие ошибки с минимум шестью падежами Русского НЕ ДЕЛАЮТ его лучше русского языка. Не знаете язык достаточно? Не уверены? Обходитесь для начала парой падежей - потом освоитесь.
Damon
Цитата(sergeeff @ Feb 17 2008, 16:32) *
Лет тридцать тому назад, учась и работая в институте, была волна всяких языков типа Modula, LISP, Ada и еще куча всего. Вымерли почти все. При этом никак не пойму, чем С/С++ не устраивает? Если люди на них написали UNIX и Windows, а тебе не хватает их средств для AVR, то может в голове надо чего-то подправить?

Тем неменее, Ada поддерживается gcc, среди прочего. И отнюдь не умерла... "Если звезды зажигают, значит это кому-нибудь нужно..." (С)

Цитата(zltigo @ Feb 17 2008, 17:04) *
Или простым повышением уровня владения языком и осознание того, что от чего зависит и к чему приведет. Причем повышать уровень владения необходимо для ЛЮБОГО языка. При определенном уровне владения строгие ограничения, как и в любом естественном языке начинают тяготить. Тогда начинают рожать всяки диалекты (например Борландячие диалекты Паскаля), на которых хоть как-то можно работать.

С этим согласен абсолютно и полностью. После ознакомления с буками Дж. Элджера и А. Александреску прямо таки влюбился в С++. Тем неменее, как пример: Торвальдса, наверняка отговаривали от занятий всякой фигней, и попытки написать свою ось. Результат на лице... или на лицо (кому как больше нравиться). "Опыт -- сын ошибок трудных" (С), так что, если человеку хочется, пусть попробует, а жизнь внесет коррективы. Почему бы и нет, как там у Торвальдса: "Just for fun"...
zltigo
Цитата(Damon @ Feb 18 2008, 19:45) *
И отнюдь не умерла...

Разумеется язык ADA не умер и в обозримом будущем ни в коем случае не умрет - это на данный момент обязательный язык программирования для пентагоновских заказов. Посему от живет, развивается, совершенствуется. Наработано немерянное количество ПО. В том мире созданном по определенным правилам игры писанным под него, на платформах созданных под него он прекрасно живет. Это совершенно объективная реальность. Тащить или не тащить его в этот мир, вот в чем вопрос. Если тащить, например, вместо БорлондячегоПаскаля, то это было-бы более, чем правильное решение smile.gif. Но вот тащить в эмбеддерство - совсем наоборот smile.gif
Непомнящий Евгений
А вы про oberon слышали? Еще более "жесткий" вариант паскаля; его апологеты уверяют, что он великолепно подходит для эмбеддерства, причем как раз для задач, критичных к ошибкам ПО.
zltigo
Цитата(Непомнящий Евгений @ Feb 19 2008, 08:32) *
А вы про oberon слышали?

Естественно smile.gif
Цитата
великолепно подходит для эмбеддерства, причем как раз для задач, критичных к ошибкам ПО.

Рано или поздно мы придем к "великолепно подходящим" языкам, типа как в настоящее время используются "великолепно подходящие" (естественно в пределах одной из прадигм smile.gif программирования smile.gif ) языки для программирования промышленной автоматики. Эти языки будут предназначены для создания приложений работы в определенных великолепно подходящих средах на великолепно подходящих операционных системах... Все это будет круться на почти ничем не ограничивающем возможности железе. Все будет просто и идеально. Только пока об отдаленом приближении к идеалам в этом смысле слова можно говорить только при программировании, например "под Windows/Линукс/Чего-то_там_Заказное_Армейское".
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.