Практика использования mspdebug. Начало

mspdebug — это утилита (программа, работающая в компьютере), которая позволяет много чего полезного делать с микроконтроллером семейства MSP430. Утилита позволяет заливать код во флешь-память, считывать его обратно, записывать в файл. Утилита позволяет запускать и останавливать программу в МК, смотреть и изменять значения регистров, памяти. Устанавливать точки останова, проходить программу по шагам. И многое-многое другое.

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

Итак. Утилита mspdebug устанавливается отдельно и независимо от других утилит и компиляторов для MSP430:

# apt-get install mspdebug  # Debian

или

$ sudo apt-get install mspdebug  # Ubuntu

Теперь, нужно уточнить какой отладочный девайс и с каким интерфейсом вы используете.

Это может быть вот такая недорогая отладочная плата LaunchPad MSP-EXP430G2, которая несколько лет назад можно было легко купить:

IMG_1005

Это может быть и такая плата LaunchPad MSP-EXP430F5529LP (спасибо Трощенко Геннадию Яковлевичу!). Эта плата с более продвинутым процессором, соответственно и стоит в несколько раз дороже. Я с ней пока еще не игрался, но уже скоро.

IMG_1006

Эти отладочные платы имеют двухпроводный интерфейс SBW, а подключаются к компу через USB.

Сюда же можно отнести чрезвычайно недорогой программатор MSP-eZ430, который в народе прозвали «свистком» (спасибо Екатеринбургской фирме Радиоэлектроника и лично Илье Букрину):

IMG_1004

Я его слегка доработал — вывел SBW наружу в виде разъема. В общем-то, я его в основном и использую.

Если Вы достаточно обеспеченный человек, вы можете купить и самый продвинутый и одновременно самый дорогой девайс MSP-FET430UIF:

Возможно, что у вас довольно-таки древний отладчик MSP-FETP430IF (спасибо Зайцеву Ивану, безвозмездно подарившему мне этого динозавра), место которому скорее в музее, чем на рабочем столе:

IMG_1003

И наконец, если вы такой же рукастый нищеброд, как и я, то возможно в вашем хозяйстве имеется самопальный «крокодил»:

IMG_1007

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

Что касается относительно дорогого MSP-FET430UIF, то он подключается к компу через USB, а к микроконтроллеру может подсоединяться как через JTAG, так и через SBW интерфейсы.

С железом более-менее разобрались. Теперь разберёмся как запускать mspdebug. Дело в том, что при его запуске нужно указывать те или иные опции.

Если вы используете отладочные LaunchPad, то запуск выгдядит очень просто:

$ mspdebug rf2500

Как я уже упоминал, MSP-FET430UIF может подключаться к микроконтроллеру в двух режимах. Если используется режим полного JTAG, то команда запуска такая:

$ mspdebug uif -j -d /dev/ttyUSB0

Думаю, понятно, что /dev/ttyUSB0 — это файл устройства USB-порта, к которому подключен гаджет, — он может быть у вас немного другим.

Чтобы узнать — а вообще mspdebuf видит ваш программатор или нет, можно выполнить команду:

$ mspdebug --usb-list

Если MSP-FET430UIF подключен к МК по интерфейсу SBW, то команда запуска mspdebug будет следующая:

$ mspdebug uif -d /dev/ttyUSB0

Точно такая же команда должна быть выполнена для свистка eZ430.

Попутно сделаю маленькое замечание. Если по какой-то причине программатор не может определить тип микроконтроллера или вы подключили какой-то новейший, ещё неизвестный mspdebug-у микроконтроллер, то можно насильственно указать его тип:

$ mspdebug uif -d /dev/ttyUSB0 --fet-force-id MSP430F2001

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

Вообще, список поддерживаемых микроконтроллеров довольно-таки большой. Получить список можно командой:

$ mspdebug --fet-list | less

Как правило mspdebug редко запускается как самостоятельное действие. Обычно работа этой утилита происходит наряду с другими работами, связанными с разработкой проектов. Проекты обычно управляются Makefile-ами. Поэтому было бы недурственно «прописать» соответствующие цели в Makefile.

Вот интересные места из моего текущего проекта:

PROJ=msp-2274
CPU=msp430f2274
...
CC=msp430-gcc
DBG=mspdebug
...
CFLAGS =-Os -Wall -c -mmcu=$(CPU)
CFLAGS += -g
...
DBGFLAG=uif
#DBGFLAG=RF2500

...

.PHONY: load, debug, clean

load:  $(PROJ).elf
    $(DBG) $(DBGFLAG) "prog $(PROJ).elf"
#    $(DBG) $(DBGFLAG) -d /dev/ttyUSB0 "prog $(PROJ).elf"

debug: $(PROJ).elf
    $(DBG) $(DBGFLAG)

Здесь описаны две фантомные цели: load и debug.

Когда я откомпилировал проект и получил elf-файл для заливки в микроконтроллер, я в терминале набираю команду:

$ make load

В результате запускается mspdebug, который стирает флешь-память и заливает новый код.

Когда в программе обнаруживаются ошибки и мне нужно с ней поработать, я запускаю отладку:

$ make debug

В принципе, тут ничего сложного нет. Вместо этой команды вы можете набирать

$ mspdebug uif

Проблема в том, что Makefile «знает» о том, какой дебаггер запускать, с какими опциями, к какому программатору по какому интерфейсу подключаться, по какому интерфейсу программатор обращается к микроконтроллеру. Это, так сказать, конфигурация проекта. Другое дело, что в данном (в этом конкретном, моём) проекте особых параметров нет. Но ведь жизнь — она достаточно сложная штука! Поэтому было бы разумно хранить конфигурацию где-то в файле, а запускать одной неизменной командой.

Не могу не упомянуть о расцветке вывода информации на терминал. Для того, чтобы раскрасить синтаксис вывода нужно создать в домашнем директории скрытый файл .mspdebug . Это конфигурационный файл, в нём можно и нужно хранить разные настройки. В частности мы сейчас пропишем в него настройку, которая предписывает дебаггеру осуществлять вывод информации на терминал в цвете. Это всего лишь одна скромная строка:

opt color true

Ну вот, пожалуй, на этом я и закончу сегодня свой урок.

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

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s