shamrel 0 March 20, 2015 Posted March 20, 2015 · Report post Приветствую! Собственно, в описании темы проблема озвучена. В настоящий момент развернут Toolchain для MSP, успешно подружен с Eclipse. Из командной строки работает mspdebug. Первый вопрос, как научить Eclipse дебажить код? Уважаемый мною (читал ваш блог и не только на технические темы) zhevak в одной из тем на форуме рассказал как дебажить контроллер в консольном режиме. В связи с чем вопрос, как с этим работать? Как имея программу на Си произвести ее отладку? Как узнать адреса для точек останова, выполнить пошагово код, прочитать регистры периферии? Или для этого нужно сначала дизассемблировать? Quote Share this post Link to post Share on other sites More sharing options...
shamrel 0 March 20, 2015 Posted March 20, 2015 · Report post В продолжение. Где взять crt0.S ? Где он должен лежать и для чего он вообще нужен? Почему в *.elf файле прописаны какие-то фантастические пути к crt0.S, типа: /home/pf/git/msp430eclipse/dk.xpg.msp430eclipse/scripts/src/gcc/libgcc/config/msp430/crt0.S Как Эклипс натравить на нужный файл? Quote Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 170 March 20, 2015 Posted March 20, 2015 · Report post Давно не работаю с MSP, отвечу в общем. Для того, чтобы красиво отлаживать в эклипсе, надо поставить ее дополнение C/C++ GDB hardware debugging. Далее в настройках отладчика (Run->debug configurations) выбрать этот раздел (GDB hardware debugging), создать новую конфигурацию запуска, в ней исправить название отладчика (gdb) на название вашего (msp-gdb или как его там) и указать порт gdb-сервера. Затем вам нужно найти и запустить gdb-сервер, который будет связываться с вашей железкой. Я не знаю, является ли mspdebug gdb-сервером. Добавлено: поверхностное гугление показывает, что в качестве gdb-сервера можно использовать gdbproxy. Quote Share this post Link to post Share on other sites More sharing options...
zhevak 0 March 21, 2015 Posted March 21, 2015 · Report post 1. как научить Eclipse дебажить код? 2. как дебажить контроллер в консольном режиме. В связи с чем вопрос, как с этим работать? 3. Как имея программу на Си произвести ее отладку? 4. Как узнать адреса для точек останова, выполнить пошагово код, прочитать регистры периферии? Или для этого нужно сначала дизассемблировать? 5. Где взять crt0.S ? 6. Где он должен лежать и для чего он вообще нужен? 7. Почему в *.elf файле прописаны какие-то фантастические пути к crt0.S, типа: /home/pf/git/msp430eclipse/dk.xpg.msp430eclipse/scripts/src/gcc/libgcc/config/msp430/crt0.S 8. Как Эклипс натравить на нужный файл? Ты в ответе за тех кого приручил (с) Блин! 1. К сожалению, не могу подсказать. Я с эклипсом не работаю. Для моего компа он слишком "тяжелый", поэтому я его не использую. 2. На сколько я помню, mspdebug по Си-шному исходнику вроде бы не "бегает". Что-то не припомню чтобы я отлаживал в нём Си-шные проги. я уж года два наверно с MSP не работаю, забывается всё быстро. 3. Что бы я сделал, если бы коснулось меня проблема отлаживать Си-шные проги в mspdebug. Я бы вывел из elf-файла дизассемблированный листинг, в нем будут физические адреса команд и данных, перемежающиеся с исходным кодом на Си. отлаживаживать. Имея под руками такой листинг, я думаю, не составит больших проблем установить с помощью mspdebug точки останова, а так же проверять значения ячеек памяти с данными. Ну, как-то так, наверно. Вывод листинга из elf-а можно существить командой: $ msp430-objdump -dSt myproga.elf > myproga.lst Вместо myproga.elf, разумеется, Вы должны подставить имя своего файла. 4. MSP430 можно отляживать с помощью gdb-сервера. gdb-сервер -- это такая программа, которая с одной стороны общается через отладчик с вашим МК, а с другой стороны -- принимает запросы (команды) от клиентской программы и отдает ей результаты. К gdb-серверу обычно подключаются через сокеты (сетевой IP-адрес + TCP/IP-порт). Таким образом, можно отлаживать устройства на разных компах. Если отладка производится на том же компе, где расположена программа клинета, то вместо сетевого адреса либо ничего не указывается, либо указывается localhost. (Имя localhost траслируется в IP-адрес 127.0.0.1, что означает, что это тот же самый комп.) Вот пример работы с gdb-сервером для msp430: После того как залили код в МК, запускаем прокси-сервак на порту 2000 (можно взять любой другой ещё не занятый): msp430-gdbproxy --debug --port=2000 msp430 Далее создаем в рабочем директории скрытый файл .gdbinit и записываем в него следующие строки: set remoteaddresssize 64 set remotetimeout 999999 target remote localhost:2000 После чего запучкаем отладчик: msp430-gdb myproga.elf Это в кратце. Ну а для получения более детальных знаний, нужно гуглить. У меня нет возможности для более глубоких консультаций. Для этого лучше нужно написать книгу или что-то в этом духе. Мне кажется, что за меня это наверняка уже кто-то сделал, нужно просто поискать. 5. Ну, грубый ответ такой -- сначала погуглить, и если гугл ничего полезного не даст, то написать самому. Сложного в crt0.S ничего нет. Этот файл предназначен для начальной (я бы сказал -- аппаратной) настройки процессора переде тем как будет вызвана Си-шная функция main. К этим настройкам следует отнести, например, (временно) отключить вотчдог, установить указателя стека, настроить систему тактирования ядра и периферии, настроить периферийные устройства. Возможно вам понадобиться очистить память, проинициализировать какие-нибудь данные. Ну и в конце этого файла нужно вызвать main. Некоторые компиляторы (с языка Си) не требуют наличия такого файла (crt0.S). На сколько я помню, так делал AVR CodeVision v.1.24. А вот про msp430-gcc -- я ничего не могу сказать. Не помню, что там 6. Лежать crt0.S может как в рабочем директории наравне с другими исходными файлами, так и в тандартном пути (там где располагаются файлы библиотек статической линковки). Всё зависит от задач и потребностей программиста. Не важно, где находится этот файл. Важно только иметь к нему правидльный прописанный путь. А для чего он нуже, я уже ответил в передыдущем пункте. 7. Да хрен его знает! А Вы случаем не смотрели -- там файл реально есть или он находится где-то в другом месте? Попробуйте поискать его. На всякий случай команда для поиска: $ find ~/pf -name crt0.S запомнить ее формат просто: find <где искать> <что искать> <что делать, когда найдем> Последний пунктдля нашегослучая можно опусть, тогда команда просто распечатает полный путь к найденному файлу. Опция что искать может быть не одна. Это скорее целий набор критериев для поиска. Мы можеи искать по имени (-name), по типу (-type), по размеру, по дате создания, по владельцу, по правам доступа и т.д. Если это сложно (извините, я не знаю какой у Вас уровнь знания Линукса ), то можно поступить по другому. Линукс поддерживает базу данных (условно) по всем файлам, которые у него есть. Перед тем как произвести поиске по этой базе, нужно сначала её подновить. Сама БД не подновляется, только по команде пользователя. Поэтому, если на разделах файловой системы производились какие-то изменения (удалялись файлы, записывались новые), то БД не будет соответствовать файловой системе. Подновить БД можно командой # updatedb или $ sudo updatedb После того как БД будет актуализирована, можно в неё искать файл. Команда поиска очень простая (шаблон команды -- locate <имя файла>): $ locate crt0.S В этом случае поиск будет знчительно быстрее, но гибкости в нём будет -- никакой. 8. Не могу сказать. Не работаю с Эклипсом. Уф-ф! Quote Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 170 March 21, 2015 Posted March 21, 2015 · Report post Где взять crt0.S ? Где он должен лежать и для чего он вообще нужен?В нем выполняется инициализация окружения перед запуском main(). Более подробно можно нагуглить. Во всяком случае, первые три ссылки на запрос "crt0.s" объясняют все очень подробно. Почему в *.elf файле прописаны какие-то фантастические пути к crt0.S, типа: /home/pf/git/msp430eclipse/dk.xpg.msp430eclipse/scripts/src/gcc/libgcc/config/msp430/crt0.S Предполагаю, что на вашем компьютере такого пути нет. Значит была прилинкован уже оттранслированный код из библиотеки и это путь на том компьютере, на котором эта библиотека собиралась. Как Эклипс натравить на нужный файл?Если вам действительно нужно подставить на место библииотечного свой файл - добавьте его в проект и используйте ключ -nostartfiles линкера. Quote Share this post Link to post Share on other sites More sharing options...
shamrel 0 March 23, 2015 Posted March 23, 2015 · Report post Сергей, zhevak, благодарю за советы! Удалось поднять дебаг в Эклипсе, причем дебаг по Си коду. Создал пустой файл crt0.S, доставил плагин "zylin". Отладка запустилась. Точки останова ставятся, код выполняется. Значения переменных можно отследить. Однако, для работы с регистрами периферии нужен специальный файл с описанием архитектуры в формате XML (плагин "EmbSys Registers" ), иначе, только по адресам, естественно, под мой чип такого файла не оказалось. Вся система вышла на удивление нестабильной и глючной, потому виртуалка и буду IAR осваивать. :( Резюме. Отлаживать MSP430 под Eclipse в Линух можно, но сложно. НЕ РЕКОМЕНДУЮ! Еще раз, всем спасибо. Тему можно считать закрытой. Quote Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 170 March 23, 2015 Posted March 23, 2015 · Report post доставил плагин "zylin".Это что-то очень старое. Сейчас вся его функциональность реализована в дополнении "C/C++ GDB hardware debugging". для работы с регистрами периферии нужен специальный файл с описанием архитектуры в формате XML (плагин "EmbSys Registers" ), иначе, только по адресам, естественно, под мой чип такого файла не оказалосьОй. Он пишется вдумчиво за день. Или дописывается постепенно, по мере использования новой периферии в программе. потому виртуалка и буду IAR осваивать.Если есть возможность покупать его каждые пару лет (новую версию) и под каждое новое семейство процессоров - то почему бы и да? Quote Share this post Link to post Share on other sites More sharing options...
mdmitry 0 March 23, 2015 Posted March 23, 2015 · Report post EmbSysRegView поддерживает msp430: MSP430G2553. Информация о создании конфигурационных файлов на сайте разработчика есть. Quote Share this post Link to post Share on other sites More sharing options...