2013-07-08 3 views
1

В настоящее время я работаю с командой любительских ракетчиков (ну, «любитель» - это растяжка, все мы закончили, зачислены или подали заявки на соответствующие университетские программы) на проект по отправке спутника на орбиту. Проделав в основном программирования высокого уровня до сих пор (VB.NET, Python, PHP), с небольшим количеством плескаться в фиг-Forth, мне было интересно, о каком языке учиться и использовать для того, чтобы программа системы управления ориентацией/авионики для космического корабля-носителя.Программирование системы управления отношениями/системы авионики в сборке

Конечно, поскольку эффективность как с точки зрения скорости, так и хранения является большой проблемой здесь, одна вещь, которая пришла на ум, была Assembly. Мой вопрос: возможно ли это сделать, то есть запрограммировать автоматизированную систему управления ориентацией в Ассамблее?

Кажется, что-то ужасно сложное, что нужно делать на таком чрезвычайно низкоуровневом языке программирования, поэтому я хотел знать, могут ли люди с большим опытом работы в полевых условиях влиять на то, будет ли Ассамблея хорошим вариантом или что-то все еще низкоуровневый, но несколько более легкий в обращении как FORTH, FORTRAN или C приведет к значительной экономии времени по сравнению со штрафом, который они понесут в плане размера и скорости программы.

+1

«Возможно ли это, т. Е.запрограммировать автоматическую систему управления ориентацией в Ассамблее? »Вы должны понимать, что в основном все участники этого сайта знают только о« автоматизированной системе управления ориентацией », что вы сказали им в своем вопросе. Этого недостаточно для того, чтобы кто-либо мог дать информированное мнение (и по этой причине ваш вопрос не очень подходит для этого сайта и может быть «приостановлен»), хотя я лично принимаю ожидаемое отношение с этим). –

+1

Знайте сборку, возможно, несколько строк здесь и там, но, как и в любом встроенном (голое металлическое) проекте, неплохо написать статью в основном на C. В любом случае вам следует изучить C, даже если вы не используете это для своего проект и сборку, но не начинайте беспокоиться с x86 (наличие аппаратного обеспечения является ужасным оправданием), сначала узнайте msp430, или руку или какой-нибудь другой лучший набор инструкций. –

+0

@PascalCuoq. Хорошо, объясняя автоматизированную систему управления ориентацией, это то, что автоматически управляет ориентацией космического корабля, чтобы оно направлялось в нужное вам направление, сохраняя его стабильным. Я предположил, что это общеизвестно. В любом случае быстрый поиск Google скажет вам одно и то же. Такое программное обеспечение должно анализировать сенсорный ввод и делать определения для движения рулевых компонентов, таких как рули, на основе математических моделей физики. –

ответ

5

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

Еще одним преимуществом прототипирования на C является то, что вы можете сделать большую часть прототипов в системе Windows или Linux с современными средствами разработки: редакторами, средами разработки, отладчиками и т. Д. Это имеет огромное значение для времени обработки ,

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

Заставьте это работать. Затем сделайте это маленьким и быстрым.

Что касается изучения языка ассемблера, я думаю, что каждый программист должен. Какой процессор на самом деле не имеет значения. Я не согласен с комментариями об обучении x86 как первом ассемблере. Основные уроки имеют мало общего с конкретным набором инструкций или организацией регистрации. Самое главное - учиться думать на более низком уровне: по-инструкции, а не по-заявлению. Я лично знаю десятки программистов, чей первый ассемблерный язык был x86, и я не считаю их как группу ни лучше, ни хуже, чем те, кто изучил какой-то другой язык ассемблера. И преимуществ изучения x86 много: есть много людей, из которых вы можете учиться, есть много хорошей информации об учебнике, есть несколько хороших бесплатных ассемблеров, и даже эмуляторы и среды разработки, все бесплатно и хорошо поддерживаются. По этим причинам мне было бы тяжело рекомендовать что-либо еще для первого языка ассемблера.

+0

Downvoter: с чем вы, в частности, не согласны? –

+0

Спасибо, это очень полезно. Я бы поднял голову, если бы у меня хватило репутации :) –