А нужны ли нам пингвины, если голуби и так все памятники загадили? ч. 1 - Программирование микроконтроллеров

vgololobov аватар

Я долгие годы занимался электроникой в той или иной форме, в том или ином качестве. Как и компьютерная техника, электроника не стоит на месте, а стремительно развивается. Сегодня на смену привычной элементной базе приходят новые микросхемы, заключающие в себе не только готовые функциональные узлы, но и позволяющие программным путем изменять функциональность этих узлов. И хотя я считаю, что сегодня моих знаний хватает только на общение с начинающими радиолюбителями, я понимаю тех состоявшихся специалистов, которым не дает покоя пробел в части программирования, например, микроконтроллеров. И, просмотрев многочисленные рекомендации, совершенно не готов согласиться с тем, что обязательно нужно знакомство начинать с архитектуры микроконтроллера и освоение ассемблера. К вопросам использования всех возможностей микроконтроллера, в огород архитектуры человек придет тогда, когда перед ним будет стоять конкретный вопрос, когда он будет решать конкретную задачу с участием микроконтроллера. То же могу сказать про ассемблер. Будет жестокая необходимость работать с этим не самым удобным языком программирования, специалист будет его осваивать в рамках конкретной задачи, в рамках конкретного микроконтроллера, а вне этого, как мне кажется, самый удобный вариант — использовать программу KTechlab в Linux или там же программу FlowCode.

Программирование микроконтроллеров в среде FlowCode
Рис. 5.4. Программирование микроконтроллеров в среде FlowCode

Программирование в этой среде, в сущности, сборка алгоритма, который можно транслировать в готовые к загрузке коды, предварительно проверив в очень развитом отладчике. Конечно, многим это может показаться не столь «круто», как терзание операторов ассемблера, но в Linux, после того, как первые «пробы пера» в части работы с контроллером будут позади, можно прекрасно устроиться и с освоением более тяжелого, чем предыдущий вариант, написания кодов программы на языке Си. Есть прекрасная среда для работы с PIC-контроллерами, работающая с простым самодельным программатором, снабженная свободно распространяемым компилятором SDCC и позволяющая отлаживать программу в отладчике gpsim.

Среда программирования Piklab в Gnome
Рис. 5.5. Среда программирования Piklab в Gnome

Там же можно осваивать и ассемблер, если без этого не интересно пользоваться микроконтроллерами. Отладчик, готов признать это, в MPLAB мне понравился немного больше, но и gpsim имеет свои преимущества. В gpsim достаточно много готовых модулей, чтобы начальный этап освоения микроконтроллеров не был скучной правкой учебных текстов кода. Использование программ для работы с микроконтроллерами требует некоторого времени именно на знакомство с программами, это так, и требует тем больше усилий, чем ниже уровень языка программирования. Каждый раз говорю, и готов повторить, что можно написать готовый к загрузке hex-файл в текстовом редакторе, «блокноте», любой ОС, но на это уйдет столько сил, что их не останется даже для загрузки кода в микроконтроллер. Нужно ли это? Мне нет. А вам?

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

Отладчик gpsim в Linux
Рис. 5.6. Отладчик gpsim в Linux

Я не настаиваю на своей точке зрения, я не преподаватель, но я не вижу, отчего в учебных заведениях, у которых фатально не хватает денег, используют Multisim, а не Qucs? Ничего плохого не могу сказать про первую программу, и хороша, и красива, но очень дорогая, и ничего плохого не могу сказать о второй программе — уж если в моих «кривых» руках «ламера от компьютера» она позволяет проверить множество интересных схем, то в руках опытного преподавателя ей цены нет, а получить ее можно бесплатно.

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

Бесплатные дистрибутивы Linux можно назвать условно-бесплатными. Нужно потратить некоторое время и силы, чтобы получить установочный диск, нужно потратить некоторое время и силы, чтобы установить операционную систему и нужные программы на компьютер. Все так. Но разве не любопытно взглянуть, а что это такое, а что есть интересного в этой «компьютерной заводи»?

Был момент, когда я заинтересовался EDA программами. Знал я тогда только Electronic WorkBench, с которой познакомился случайно задолго до возникновения интереса к EDA, как среде работы с электроникой. Стал искать в Интернете аналоги EWB для Linux или свободные версии для Windows, поискал-поискал и нашел великое множество. Не все столь красивы, как сегодняшний Multisim, но и эта программа некогда была гораздо менее эффектна. А когда попробовал что-то сделать в Qucs, то понял, что начинающим радиолюбителям этого более, чем достаточно.

Работа над схемой с Qucs
Рис. 5.7. Работа над схемой с Qucs

Наконец, есть отечественные разработки NL5 и Fastmean, которые прекрасно работают на пользу радиолюбителя в демонстрационном варианте, в Windows по определению, в Linux под Wine, а для учебных заведений, я думаю, можно договориться о солидных скидках.

И, возвращаясь к программированию, не могу понять, как можно утверждать, что начав обучение с Basic, можно навсегда потерять будущего программиста. Не то же самое, разве, что утверждать, если человек не умеет думать на английском языке, то он и вовсе не умеет думать? Сегодня языки программирования столь далеко ушли от своих корней, что можно говорить только о целесообразности применения для написания кода того или иного языка, использовать ту или иную среду программирования, но никак о том, что один язык лучше другого. Я представил, сколько бы мне пришлось потратить собственных денег сегодня, если бы, как прежде, возникала необходимость быстро использовать компьютер с установленными на нем необходимыми программами для моих нужд! Было время, когда я с чистой совестью мог потревожить знакомых, имеющих лицензированные программы, но оно прошло. И не будь сегодня Linux, я бы точно сдал компьютер в утиль.

Я очень рад за студентов, что им разрешают делать чертежи в AutoCAD. Надеюсь, придет и такое время, когда все сделанное в AutoCAD, а может быть это время уже пришло, можно будет переслать преподавателю по Интернету и получить зачетные оценки. Я уверен, что есть специальности, где AutoCAD остается единственной возможной рабочей программой. Но не для всех специальностей. Есть бесплатная версия QCAD, есть более дешевая, чем AutoCAD, программа VariCAD. И, возможно, есть еще много такого, о чем я не знаю.

А уверения, что Ломоносов стал великим ученым только потому, что на его компьютере с Windows использовался AutoCAD, мне не кажутся достаточно аргументированы. Но не мне, безответственному, указывать людям ответственным на то, как им увеличивать благосостояние страны, и свое, как части этой страны, за которую они и отвечают.

А у меня, наконец, загрузилось обновление Mandriva в виртуальной машине, и... после перезагрузки «отвалилась» мышка, как и в других дистрибутивах, которые я пытался поставить в виртуальной машине. Не надо быть столь любопытным! А то, как бы обновить дистрибутив в виртуальной машине!..

Ладно, завтра начало месяца, и я хочу сделать то, что собирался сделать давно, скачать установочный диск ASPLinux 12. Мешало то, что это DVD-диск с объемом более 3 Гбайт. Но, если завтра начать загрузку, то большая часть диска скачается быстро. Завтра и начну. Может быть это ностальгия, но я давно собирался это сделать. Я хочу «снести» один из установленных на компьютере дистрибутивов, заменив его ASPLinux. Единственное, что меня останавливает, мне может потребоваться то, что я собираюсь снести. Во всяком случае можно поставить ASPLinux в виртуальной машине...

Дистрибутив ASPLinux 12 в виртуальной машине
Рис. 5.8. Дистрибутив ASPLinux 12 в виртуальной машине

И как всегда я ошибся. И мышка в виртуальной машине не работает, и сеть в Ubuntu не работает. Пора сносить старый дистрибутив и установить ASPLinux, как и положено на жесткий диск. Пора!

RSS-материал