Графический оконный менеджер, ч.6 — Программирование микроконтроллеров в Linux | Популярный Linux

vgololobov аватар
Опубликовано vgololobov в Втр, 08/07/2008 — 13:22

И в Windows, и в Linux достаточно давно существуют программы, работающие с ассемблером. Ассемблером я пользовался при написании программы для нужного мне модуля. Но я не придерживаюсь мнения, что использовать микроконтроллер можно только тогда, когда умеешь писать код на ассемблере. Если есть возможность облегчить себе жизнь, эту возможность не следует упускать. Писать программы на языке высокого уровня проще. При этом может возникать недопонимание особенностей выполнения команд, но это все выявляется отладочными средствами. Конечно, отладчик, скажем, MPLAB годичной давности был лучше, чем gpsim тех времен. Но все течет, все изменяется. И даже в те времена, вполне можно было написать и отладить программу в Linux.

Сегодня, если бы мне пришлось повторить нечто похожее на ту работу, я использовал бы не MPLAB, а Piklab в сочетании с gpsim. Piklab, дополненный свободно распространяемым компилятором «Си» SDCC, полностью перекрывает нужды программирования контроллера, прекрасно работает с простыми программаторами, содержащими минимум деталей, и, практически, не требует времени на освоение работы с программой, если есть хотя бы небольшой опыт программирования.

Микроконтроллеры, коли я о них заговорил, создания очень интересные. Интересные в плане того, что это микросхема. То есть, нечто привычное для разработчиков «железа», которым понятия печатной платы и элементной базы ближе, чем оператора или переменной. Но микроконтроллер бесполезен без программы, заложенной в него. И создателям «железа» приходится осваивать не слишком для них нужную предметную область, программирование. Эту особенность понимают и производители микроконтроллеров, стараясь как можно больше облегчить освоение этих очень полезных устройств. Они создают компиляторы языков высокого уровня. Они даже создают графические средства для программирования контроллеров, которые, практически, в подходах к разработке программ, совпадают с принципами разработки современной электроники.

Сфера моих интересов в написании разных рассказов об электронике — написать нечто интересное для начинающих радиолюбителей. Я каждый раз пытался убедить их начинать работу с электроникой не только с пайки, но с осмысления того, что они собираются паять. Для этого, с моей точки зрения, прекрасно подходят программы САПР (EDA). Точно так же, начинать осваивать программирование контроллеров лучше с создания программ на языке высокого уровня, а не на ассемблере. Иначе за травой не видно леса.

Многие, начинающие осваивать микроконтроллеры, предпочитают начинать с AVR-контроллеров. Я не очень понимаю истоки этого предпочтения, как не понял бы привязанности к цифровым микросхемам серии К155: в одних случаях удобны они, в других К564, в третьих… все зависит от поставленной задачи. Но в Linux есть и среда работы с AVR-контроллерами.

Программа KontrollerLab в KDE 4
Рис. 1.11. Программа KontrollerLab в KDE 4

Еще лучше начинать изучение с графических средств построения программы.

Программа KTechlab
Рис. 1.12. Программа KTechlab

В Linux я знаю, пока, только KTechlab, но могу ошибаться и, возможно, есть другие программы. Более мощная программа FlowCode для Windows работает и в Linux под Wine.

Программа FlowCode в Linux
Рис. 1.13. Программа FlowCode в Linux

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

Изучать программирование микроконтроллера с помощью FlowCode, даже в демо-версии, удобно еще в одном отношении — можно транслировать программу на «Си», чтобы посмотреть, как выглядят простые операции в таком «звучании». Любая программа складывается, в конечном счете, из ряда операций. Каждую из них можно опробовать в графическом подходе, затем увидеть на «Си». Затем можно сложить несколько фрагментов на «Си» и попытаться перенести их в среду программирования, поддерживающую этот язык программирования. Так можно постепенно освоить работу с языком программирования, ставшим уже классическим при работе с микроконтроллерами. Вот как выглядит фрагмент программы, созданной в графическом виде, после трансляции на «Си».

Оттранслированный на «Си» фрагмент программы FlowCode
Рис. 1.14. Оттранслированный на «Си» фрагмент программы FlowCode

Эти же непонятные мне темы звучат в разговорах о Linux. Если вам доводилось побывать на форумах, вы знаете, что для решения той или иной проблемы, которая возникла у вас, вам посоветуют дать ту или иную команду в терминале, написать тот или иной скрипт. Когда-то это было, действительно, универсальное лекарство от всех болезней в Linux. Но не сегодня. Сегодня для пользователя лучшее лекарство от проблем с Linux — это оставаться пользователем. Конечно, если вам хочется «влезть внутрь», другое дело, вы можете из исходных текстов компилировать все, начиная от ядра операционной системы, кончая любой программой. Вам понадобится освоение всех тех операций, о которых так охотно говорят на форумах. Но, если вы предполагаете только пользоваться Linux, то пользуйтесь. У вас не должно возникать проблем.

И дистрибутивы Linux. Да, каждый имеет отличительные особенности. Некоторые особенности («изюминки») заметны пользователям. Здесь можно говорить только о личных предпочтениях, поскольку пользоваться с одинаковым успехом можно любым дистрибутивом: и ASPLinux, и Debian, и Mandriva, и Fedora…
Сегодня обновление загрузилось, еще час оно будет устанавливаться, а завтра я посмотрю, что обновилось в моем рабочем окружении.

Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.