Как начать работать с MSP430 в Linux’е

Эта публикация предназначена для тех программистов-разработчиков микроконтроллерных устройств, кто хочет освоить работу под Линуксом.

Если Вы убежденный Виндовс-пользователь я не рекомендую Вам знакомится с этим материалом. Я так же советую оставить чтение и заняться чем-нибудь другим тех, кого раздражает вид консоли, а непонятные пассы на клавиатуре вызывают агрессиию. Поберегите свою психику. Этот мир, реально, не для Вас. Займитесь чем-нибудь более приятным. Я не знаю, потыкайте мышкой, что-ли. Или купите-продайте что-нибудь. Но не читайте этот тупой текст. Он не для Вас.

Остальных прошу настроится на рабочий режим. Мы с вами создадим небольшую программу для микроконтроллера, откомпилируем ее исходный текст в HEX-файл и зальем его в микроконтроллер.

Я рассчитываю на то, что у вас уже имеется 200-рублевая платка MSP430 Launchpad и установлен пакет naken430asm. В принципе подойдет любая другая плата с микроконтроллером MSP430, которую вы будете насиловать. Также подойдет любой другой программатор, например, MSP430FET-UIF или eZ430. На худой конец можно попробовать MSP430FET-PIF или самопальный, который цепляется к параллельному порту.

Ну и самое главное — у вас должно быть огромное желание начать работать под Линуксом.

В некоторой степени публикация рассчитана на бывших программистов-разработчиков МК, которые до недавнего времени разрабатывали свои девайсы в среде Виндовс с помощью крякнутых компиляторов, а теперь решили сменить образ жизни и перейти на альтернативную платформу. Если это так, примите мои поздравления и пожелания в дальнейших успехах. Всё только начинается! Вы на правильном пути, но запаситесь терпением.

Перед тем как продвигаться далее, сначала установите ассемблер naken430asm, если, конечно, он у вас все еще не установлен. Вот тут я рассказываю, как это сделать:

https://zhevak.wordpress.com/tag/msp430/page/3/

Итак, все готово? Тогда — «Поехали!» (с) Ю.Гагарин

Предположим на рабочем столе у нас ничего нет кроме «нескучных обоев» и значков. То есть нет никаких открытых окон.

Я нажимаю Ctrl-Alt-T — открывается окно псевдотерминала

Поскольку мы начинаем от печки, то текущим директорием будет домашний директорий. Нам это не очень подходит — негоже засирать домашний директорий множеством других неструктурированных директориев и файлов. Поэтому давайте создадим для нашего проекта его личный директорий. Пусть он будет называться smclk (По имени сигнала, который мы хотим получить на ножке МК. В принципе, имя может быть любое.)

Я это делаю так

$ mkdir -p test/msp430/smclk

Команда mkdir без ключа -p может создавать только по одному вложенному директорию за один раз. Ключик -p позволяет создать не только длинные цепочки вложенных поддиректориев, а так же целые гроздья поддиректориев. Очень мощная команда, но будьте осторожны — это все-таки Линукс!

Далее нам нужно зайти в этот только-что созданный директорий. Можно это выполнить командой (но не спешите ее выполнять! Прочитайте дальше):

$ cd test/msp430/smclk

Лучше не набирать все это руками заново, а воспользоваться одной Линуксовой фичей.

Каждая консольная команда запоминается в истории команд. Чтобы вернуться и выполнить какую-нибудь предыдущую команду нужно прокрутить эту историю вверх-вниз с помощью стрелочек на клавиатуре. Как один из способов — можно вызвать предыдущую команду, переместить курсор в начало строки, стереть «mkdir -p», оставив только аргумент команды «test/msp430/smclk». Потом в начале строки (перед аргументом) дописать другую команду «cd» и нажать «Enter». (Нажать «Enter» для выполнения команды можно в любом месте, переводить курсор в конец строки совсем необязательно.)

Фича же состоит в том, что вам даже и этого не надо делать. Оболочка сохраняет аргументы предыдущих команд в переменной с несколько странным именем — «!$». Таким образом, чтобы перейти в наш директорий, достаточно набрать вот такую команду:

$ cd !$

Мы находимся в нашем директории — в нашей, так сказать, лаборатории. В нашем бункере. Тут мы будем создавать и взрывать наши файлы, и вообще будем всячески хулиганить в полной уверенности, что никого снаружи нашего бункера случайно не угробим.

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

$ nautilus -n .

Я набираю три первые буквы «nau» названия, потом жму клавишу Таб. Оболочке этих букв достаточно для того, чтобы понять, что я хочу получить, и она дописывает остальные буквы. Потом я ввожу параметр «-n», который говорит Наутилусу открыть новое окно. И через пробел я дописываю имя директория, который должен открыть Наутилус в этом новом окне. Мне нужно открыть текущий директорий, поэтому я так и пишу — «.» (символ «точка» обозначает текущий директорий.)

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

$ gedit smclk.asm &

Я пользуюсь текстовым редактором gedit. (Помните, что набрать первые несколько букв и нажать Tab.) Пусть имя файла программы будет такое же как имя директория — «smclk.asm». В конце команды стоит знак амперсенда, который сообщает оболочке чтобы она запустила редактор и вернула управление в консоль. Без него консоль не будет воспринимать команды до тех пор, пока мы не закроем редактор. Нам этого не надо, поэтому мы указываем «&».

Вот так. После нескольких несложных пассов в консоли мы совершенно бесплатно и ничего не украв организовали для себя вполне рабочую среду.

Теперь давайте перейдем в окно редактора и введем текст нашей программы.

Чтобы перейти в нужное окно можно по-Вендовому ткунть мышой. Но для этого нужно перенести руку с клавиатуры на мышь, правильно ее охватить, подвести курсор, прицелиться и наконец щелкнуть. А можно подойти к проблеме по-Линуксовому — для этого нажмем Alt-Tab. Если у вас открыто несколько окон, возможно придется нажать Tab несколько раз, не отпуская Alt. Но, согласитесь, это все же быстрее сделать, чем перехватывать клаву, потом мышь, потом опять клаву… Когда у вас «хомячковость» уступит место профессионализму, то вы по-настоящему оцените преимущество консоли. Однако, продолжим.

В окне редактора введите следующий текст. Мне пришлось набирать его руками, а вы можете его закопипастить прямо отсюда.

// Вывод SMCLK наружу процессора.
// вывод частоты осуществляется на ножку pin6 (порт P1.4)

.include «MSP430F2001.inc»

ORG CODE
start:
mov    #STACK, SP
mov    #WDTPW + WDTHOLD, &WDTCTL
bis.b    #0x10, &P1DIR
bis.b    #0x10, &P1SEL

loop:
jmp    loop

ORG INTVECT
ORG 0xFFFE
DW start

END

Чуть ниже я объясню, что тут понаписано, а пока сохраните результат — нажмите Ctrl-S.

Теперь вернемся из редактора в окно консоли. Не хватайтесь за грызуна, привыкайте к Alt-Tab! В консоли набираем команду для компиляции нашего файла:

$ naken430asm smclk.asm

Если у вас все прошло удачно, что скорее всего не так, то в текущем директории должен появиться файл out.hex . Проверьте это с помощью команды

$ ls

По крайней мере я вижу две проблемы, которые обязательно возникнут у вас. Первая проблема — это отсутствие пути к ассемблеру naken430asm. Это путь нужно прописать либо в файле .profile, который находится в вашем домашнем директории, либо в файле profile, который находится в директории /etc/ .

Обратите внимание, что имя первого файла начинается с точки. Точка в начале файла делает его невидим. Ну… как бы не совсем невидимым, а так, чтобы он не мозолил глаза и его нельзя было случайно попортить. А так, это файл вполне нормальный, и с ним можно точно так же как с другими работать.

Если путь к naken430asm записать в $HOME/.profile , то этот путь будет известен учетной записи только одного пользователя, то есть — только вам. А если путь добавить в /etc/profile , то файл смогут запускать все пользователи компа.

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

export PATH=${PATH}:/opt/msp430-naken/bin

в конец файла /etc/profile .

Делается это примерно так. В командной строке набираем команду

$ sudo gedit /etc/profile

В открывшемся окне редактора мы увидим текст этого файла. Нужно тупо дописать строку, нажать Ctrl-S и закрыть окно редактора.

Префиксная команда sudo перед gedit скажет оболочке, что мы типа администраторы и мы имеем право изменять системные файлы. Без этой приставки редактор откроет окно, но не позволит вам изменять текст.

Я вроде как не первый день в Линуксе, но у меня недавно случился заскок. В одной из школ мы устанавливали Убунту на компы. Я прописывал конфигурацию в системных конфигах. Я даже завис на несколько минут — затупил с этой, казалось бы, хорошо известной мне особенностью. Никак не мог понять, почему редактор не хочет редактировать мне текст. Курсор перемещать могу, а вот создать новую строку — фиг!

Чтобы изменения вступили в силу придется перезагрузиться. Я, к сожалению, не знаю, как можно это сделать без перезагрузки, поэтому делаем по-вендовому. Если бы вы изменили профайл в домашнем директории, то перезагружаться не надо. Достаточно закончить сеанс и зайти снова.

Вторая проблемка, которая вас поджидает более «породистая». С ней придется немного дольше пободаться.

Дело в том, что в исходном тексте нашей программы присутствуют всякие лексемы типа

«CODE», «STACK», «WDTPW» и т.д. Что это такое!? Откуда это может знать ассемблер? А он и не знает, поэтому реагирует трехэтажным матом.

Вообще-то под названием CODE у нас прячется число 0xFC00 — это начало флешь-памяти. Соответственно, STACK обозначает верх оперативной памяти для размещения стека — 0x280. WDTPW, WDTCTL, P1DIR — это тоже всё числа. Ну и так далее.

Все эти определения записаны в файле «MSP430F2001.inc», который мы подключаем в начале нашей программы с помощью директивы .include .

Так вот, проблема в том, что этот файл, а точнее — целый пучок файлов, эти файлы мои. Ну, не в том что мне их жалко, а в том, что они есть только у меня. Вообще-то в мире полным полно файлов подобных моим, и вы моете ими воспользоваться, но они могут в чем-то не совпадать с моими. Поэтому, чтобы вы могли успешно компилировать свои программы, вам нужно заполучить к себе на комп эти файлы.

Я еще не определился с тем, как мне их выложить в открытый доступ. Думаю, что это решиться в течение нескольких дней.

Сейчас я думаю остановить свой рассказ на некоторое время, и подумать над проблемой. Мне нужно придумать что-то, чтобы вы смогли скачать эти файлы откуда-нибудь. Я публикую незаконченный труд только потому, что основной акцент в нем сделан на работу с Линуксом, а не на работу с MSP430, из-за которого произошло торможение.

Я буду очень вам благодарен, если вы поможете мне в этом вопросе.
UPDATE 09.02.2012

Сегодня выложил на github первую публичную версию include-файлов.

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

Как добыть .inc-файлы из репозитория?

Откройте консоль, зайдите в свой рабочий директорий (ну то есть в тот, где вы обычно создаете свои проекты) и выполните команду:

$ git clone git://github.com/zhevak/naken430-inc.git

В результате у вас должен появиться поддиректорий naken430-inc, в нем набор include-файлов. Далее, вам нужно «ручками» перенести их в тот директорий, где находятся include-файлы.

Если вы поместили msp430-naken в директорий /opt, который принадлежит root-у, а не вам, то при копировании у вас возникнут осложнения. Вам нужно будет выполнить копирование на уровне root-а.

Advertisements

7 responses to “Как начать работать с MSP430 в Linux’е

  1. А в WordPress-е разве нельзя публиковать файлы?

    Можно положить файлы в Гугл код: http://code.google.com/hosting/createProject
    Поддерживаются Git, Mercurial, Subversion, или можно просто загрузить файлы/архивы.

    • А в WordPress-е разве нельзя публиковать файлы?

      На WordPress.com разрешается загружать только определённые типы файлов.

    • Наверно можно. Я не знаю. Дело в том, что я до этого момента как-то не очень интенсивно практиковал выкладывание файлов. Так, может пару раз было. Давно. Я даже и не помню где, куда и что выкладывал. Помню, что были какие-то исходники. А у тем более — как это я делал — убей, не помню!

      Вот, сейчас занимаюсь этим вопросом. Пытаюсь выяснить, что нынче рулит.

      Спасибо Вам за помощь!

    • Ситуация такая, отдал две коробки на доставку до Москвы и потом до Краснодара, товар электроника 40 кг, стоимость 2500 долларов. Так мало того, что заплатил за авиа 14 дней, они задержали на месяц, прислали мне часть моего товара, а часть совсем не понятно какого. Я попросил их возместить сумму потери, они меня просто послали на три буквы и ни какого возмешения не сделали.
      Могу предоставить все документы, кому интересно я предоставлю все чеки и квитанции от данной китайской карго – моя почта — vadim.bondarenko@lenta.ru
      Еще раз повторю, карго 667 кидалы, кинут на груз и не вернут ничего.
      Их телефоны
      Скайп: info667
      Email: info667@yandex.ru
      Тел в России: +74997098650

    • Спс, выполню так

  2. Вариант 1. Размещать файлы на depositfiles, turbobit, ifolder и т.п.
    Вариант 2. Завести сайт-файлопомойку на бесплатном хостинге
    (Яндекс.Народ, qip.ru). К примеру, некоторые файлы, недопустимые для WordPress.com, я размещаю на pochta.ru. Если заходить туда на сайт напрямую, завалят рекламой. Поэтому проще загрузить файл по FTP, а потом дать прямую ссылку на скачивание файла.
    Минусы: во многих местах требуется регистрация.

  3. Вот еще вариант, можно установить Dropbox клиент http://db.tt/vQNQE1y и опубликовать публичную ссылку на нужный файл (например архив с файлами). Тогда его и обновлять будет проще, при изменении он автоматически будет опубликован.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s