Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Посоветуйте отладчик
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
d7d1cd
Привет всем. Посоветуйте, пожалуйста, отладчик в режиме реального времени для МК серии MSP430. Не очень дорогой biggrin.gif
zhevak
Цитата(d7d1cd @ Mar 10 2013, 12:02) *
Привет всем. Посоветуйте, пожалуйста, отладчик в режиме реального времени для МК серии MSP430. Не очень дорогой biggrin.gif

простите, я чёт не понял, как это -- "в режиме реального времени"?
d7d1cd
Цитата(zhevak @ Mar 10 2013, 10:10) *
простите, я чёт не понял, как это -- "в режиме реального времени"?
В смысле отладка в устройстве. То есть, залил программу в МК и там по шагам ее выполняешь.


zhevak
Цитата(d7d1cd @ Mar 10 2013, 12:40) *
В смысле отладка в устройстве. То есть, залил программу в МК и там по шагам ее выполняешь.

дак, они ж (отладчики) вроде как все так и делают. Или я что-то не догоняю?

Как пример отладчика могу порекомендовать mspdebug. Он вообще бесплатный. Сам им пользуюсь, учу пользоваться им своих студентов.
Устанавливается в систему тоже очень не зателиво. Например, в Ubuntu-е наберите следующую команду:

$ sudo apt-get install mspdebug

подождите несколько минут (зависит от мощности компа и скорости интернета), а потом запускайте под отладчиком свои проги.

Например, команда запуска отладчика с MSP430-UIF по интерфейсу связи с отлаживаемым микроконтроллером JTAG будет выглядеть так:

$ mspdebug uif -j -d /dev/ttyUSB0

здесь uif -- это MSP430-UIF,
-j -- ключик, указывающий на JTAG-интерфейс с МК. Если Вы хотите работать с МК по интерфесу SBW, то нужно опустить (не указывать) этот ключ.
-d -- это компьютерный интерфейс ("дырка"), черезе которую комп будет общаться с отладочным устройством (программатором). В данном случае это USB-соединение -- /dev/ttyUSB0. У Вас скорее всего будет что-то своё.

Вот еще пара примеров:

$ mspdebug uif -d /dev/ttyUSB0 -- здесь нет ключа -j, поэтому соединение с МК будет осущесвляться через SBW.

$ mspdebug rf2500 -- работа дебаггера будет происходить с МК посредством (и через) плату LaunchPad

Иногда бывает так, что нужно работать с МК, которого нет в базе данных mspdebug. (Ну, типа вы уже приобрели новейщий МК, а ПО к нему еще не успели выпустить.) В этом случае вы можете заставить mspdebug работать с новым процом, как со старым, который ему известен:

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

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

Команда распечатки памяти:
(mspdebug) md 0xC800 0x100

Команда изменения ячейки памяти:
(mspdebug) mw 0x1000 0x12 0x34 0x56 ...

Команда стирания флеш и загрузки кода из файла:
(mspdebug) prog myprog.hex

Посмотреть регистры проца:
(mspdebug) regs

Сбросить проц:
(mspdebug) reset

Изменить значение в регистре:
(mspdebug) set <регистр> <новое значение>

Установиь точку останова в программе:
(mspdebug) setbreak <адрес>

Сделать шаг в программе:
(mspdebug) step

Запустить программу:
(mspdebug) run

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

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

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

$ mspdebug uif -d /dev/ttyUSB0 --fet-force-id MSP430F2001 "prog myprog.elf"

Если вы заметили, что одни и те же действия повторяются, занесите их в свой Make файл. Например, так:

CODE
program:
(здесь символ табуляции) mspdebug uif -d /dev/ttyUSB0 --fet-force-id MSP430F2001 "prog myprog.elf"


Это условный пример. Обычно в Make файлах очень интенсивно используются переменные и подстановки. Но это уже пилотаж для более продвинутых. Начтине с простого, потом сами поймете, что Вам следут делать.

Задавайте вопросы, уточняйте детали. Путей решения проблемы очень много.
(Извините! Я у себя в блоге немного написал про основы работы с MSP430, походите по блогу, может что и найдете полезное.)
d7d1cd
Мне нужен совет по самому программатору-отладчику. Их же много: MSP-FET430UIF, от OLIMEX отладчики и прочее. Какой купить то?

zhevak
Цитата(d7d1cd @ Mar 10 2013, 13:43) *
Мне нужен совет по самому программатору-отладчику. Их же много: MSP-FET430UIF, от OLIMEX отладчики и прочее. Какой купить то?

Ответ зависит от многих факторов, которые Вы не обнародовали.

Например:
-- от Вашего бюджета (сколько денег Вам не жалко оторвать от семьи),
-- от типов камне, с которыми Вы предполагаете работать. Есть камни у которых нет SBW. Есть какмни у которых нет BSL. У Вас может возникнуть ситуация, когда с камнем нужно будет работать только по SBW, так как на ноги контроллера, которые используются для полного JTAG, Вы были вынуждены повесить какие-то свои сигналы (подключиться к цепям).
-- может оказаться так, что Вам нужно отлаживать свое устройство, которое гальванически соединено с сетью 220В.
-- от того, что имеется в настоящий момент в Ваших магазинах.
-- от того, насколько срочно Вам нужен инструмент.

и т.д.

Кто ж Вас знает, что там у Вас актуально и насколько! Может Вам больше подойдет вариант самопального JTAG-а на базе 74HC244 для параллельного порта. Преимущество: если случайно сдохнет -- не велика проблема, сам и починишь! Я так свой самопальный STK-200 для AVR уже раза четыре сжигал-чинил. Но стоило сжечь Dragon (не пресловутый его стабилизатор, а что-то серьезное в его мозгах)... в общем, лежит он в ящике и медленно стареет. И скорее всего я его так и не смогу поднять. Как видите, ньюансов более чем достаточно. И никто Вам не даст однозначного ответа -- что для Вашей ситуации лучше подойдет.

Ну, либо вываливайте сюда как можно больше подробностей.
d7d1cd
Планируется отладка микроконтроллера MSP430F249. Пока конкретно он. Все ноги для JTAG порта свободны и выведены на колодку.
rezident
Берите MSP-FET430UIF или один из его клонов (типа MSP-Link). Это однозначно! MSP-FET430UIF поддерживает все существующие и будущие кристаллы - так заявлено непосредственно самой фирмой TI.
d7d1cd
Цитата(rezident @ Mar 10 2013, 14:45) *
Берите MSP-FET430UIF или один из его клонов (типа MSP-Link). Это однозначно! MSP-FET430UIF поддерживает все существующие и будущие кристаллы - так заявлено непосредственно самой фирмой TI.


Заказал MSP-FET430UIF.
d7d1cd
Пришел мне мой MSP-FET430UIF. Я нашел обозначение выводов программатора, если на него смотреть со стороны JTAG порта. Скажите, обозначения правильные?



rezident
Да, все верно. Наименования сигналов, распиновка разъемов и электрическая схема MSP-FET430UIF есть в MSP430™ Hardware Tools User's Guide
d7d1cd
Удалось подключиться к микроконтроллеру. Хотел для внутрисхемной отладки использовать NoICE. Все началось хорошо: отладчик вывел ассемблерные коды и остановился по адресу вектора сброса. Я начал выполнять команды пошагово. Но при попытке выполнить команду NOP отладчик остановился. Не завис, а именно остановился. Не подскажите, в чем может быть причина? Или есть другой внутрисхемный отладчик?
sensor_ua
NoICE не использовал (это не из мейнстрима, ИМХО), но помнится, что у MSP430 Watchdog включен после сброса. Возможно вылетает по Watchdog-у.
rezident
Цитата(d7d1cd @ Mar 21 2013, 22:41) *
Удалось подключиться к микроконтроллеру. Хотел для внутрисхемной отладки использовать NoICE. Все началось хорошо: отладчик вывел ассемблерные коды и остановился по адресу вектора сброса. Я начал выполнять команды пошагово. Но при попытке выполнить команду NOP отладчик остановился. Не завис, а именно остановился. Не подскажите, в чем может быть причина? Или есть другой внутрисхемный отладчик?

Ваша проблема дебага состоит в том, что ваш отладчик контролирует только ход выполнения команд ядром микроконтроллера. Но он не контролирует работу периферийных модулей. А периферия сама может генерировать различные события - вызывать прерывания или даже сброс (как WDT). Вдобавок при переходе в режим энергосбережения ядро останавливается и соответственно отладчик тоже.
Когда используется компилятор совместно с отладчиком в режиме дебага, то компилятор генерирует "специальную" прошивку, добавляя в исполняемый код программные вставки, которые позволяют дебаггеру контролировать и управлять периферией так, чтобы она не мешала отладке. Когда же вы пытаетесь отлаживать свой собственный программный код, без внедренных в него "отладочных" вставок, то вы должны сами предпринимать некоторые действия, чтобы работа периферии не мешала отладке. Но при этом, естественно, работа программы будет отличаться от выполнения ее в штатном режиме работы.
В общем, если вы хотите без проблем отлаживаться, то вам нужен весь проект целиком, а не только лишь прошивка, дебаггер и эмлятор по-отдельности.
d7d1cd
Ясно. Я тут выяснил почему отладка останавливалась. Перед командой NOP была команда BIS #00D8, SR, которая переводит проц в режим LPM3.
Как я понимаю периферия в таком режиме работает и генерирует прерывания, которые "будят" CPU. Он обрабатывает прерывания и снова засыпает до нового пробуждения.

Я решил отладку делать в IAR. Подскажите, если установить точки останова по векторам прерываний, то будут ли они срабатывать?
sensor_ua
Точки останова в теле ISR ставятся и отрабатываются
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.