|
Indigo + Yagarto + J-Link, после IAR EWARM |
|
|
|
Oct 27 2012, 12:45
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
После знакомства с Eclipse Indigo SR2 и установки и настройки тулчейна остаются некоторые вопросы: 1. Проект с пустой main функцией не захотел компилироваться без ошибок при простом подключении библиотеки периферии с сайта ST. Разбор полетов показал, что некоторые исходники библиотеки не видят определения в собственных хидерах. Я долго с этим разбирался, а в результате все решилось простым редактированием соотв хидеров (просто ставим где-нибудь в файле пробел потом его удаляем, сохраняем файл) и ошибки компиляции пропадают... У кого-нибудь такое уже было? И как часто приходится вам сталкиваться с такими глюками в Eclipse? 2. Вторую проблему пока не решил... GCC уже совсем другой компилятор, поэтому наработанный код в IAR у меня тут не работает. Особенно это касается препроцессора. В IARе я устраивал всякие игры с дефайнами и все нормально работало - здесь такие вещи уже не проходят: Код #define PINCLR(x) (_PORT_POS(x##p)##->BSRR=##_BIT_BR(x##b)) выдается ошибка: Код pasting ")" and "->" does not give a valid preprocessing token main.c /IndigoTest/src line 39 C/C++ Problem pasting "=" and "_BIT_BR" does not give a valid preprocessing token main.c /IndigoTest/src line 39 C/C++ Problem какие есть пути для исправления? Я так понимаю, для GCC такие дефайны слишком сложные?
|
|
|
|
|
 |
Ответов
|
Nov 4 2012, 06:55
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
1. На сайте GNU ARM plugin ознакомился с "известными проблемами". Оказывается смена тулчейна до конца не реализована и честно предупреждается, что при такой попытке проект становится нерабочий. 2. Продолжил разбираться с printf. Подключил syscall_minimal.c. Внес необходимые исправления. Теперь проект собирается без ошибок, однако простите за тупизм, но содержимое функции putChar я что-то затрудняюсь написать. В примерах люди используют вывод в UART, но мне этого не нужно ведь printf используется только для отладки J-Link'ом. Кроме того, даже при пустой функции putChar размер bin файла контроллера возрастает с 31кБ до 57кБ что совсем огорчительно. В Иаре на этом же проекте подключение printf стоит 5кБ: с 20кБ до 25кБ. Потому вопрос: возможно ли для Debug испоьзовать легкую оптимизацию с опциями -O1,2,3 ? И не помешает ли это отладке? 3. Насколько я понял, отладка через GDB позволяет только наблюдать значения переменных, ставить точки останова на код. Data брейкпоинт не поддерживается. 4. По make файлам. Может ли кто-нибудь поделиться примером под STM32 + Eclipse? Только содержимое хотелось бы видеть с поддержкой такого: определены директории где находятся И БУДУТ ДОБАВЛЯТЬСЯ си файлы, утилита автоматом их подхватывает и собирает проект. Также если есть какая-нибудь вменяемая дока по make файлам как и сама утилита (проверенная версия) - было бы здорово. И еще. Я так понимаю, что речь о GNU MAKE? Не стоит ли изучать что-то более продвинутое?
|
|
|
|
|
Nov 4 2012, 23:23
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(ivainc1789 @ Nov 4 2012, 08:55)  В Иаре на этом же проекте подключение printf стоит 5кБ: с 20кБ до 25кБ. Потому вопрос: возможно ли для Debug испоьзовать легкую оптимизацию с опциями -O1,2,3 ? И не помешает ли это отладке? Нет особого смsсла использовать для отладки уровень оптимизации, отличный от release. За исключением случая, когда нужно убедится что код в принципе может быть работоспособным. Цитата(ivainc1789 @ Nov 4 2012, 08:55)  3. Насколько я понял, отладка через GDB позволяет только наблюдать значения переменных, ставить точки останова на код. Data брейкпоинт не поддерживается. А нельзя ли задействовать jlink-ий сервер (который в трее висит)? На вкладке Breakpoint databreakpoint упоминаются. Или невозможно?
|
|
|
|
|
Nov 5 2012, 09:58
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
Цитата(_Артём_ @ Nov 5 2012, 03:23)  Нет особого смsсла использовать для отладки уровень оптимизации, отличный от release. За исключением случая, когда нужно убедится что код в принципе может быть работоспособным. Откуда такие сведения? Т.е. вам приходилось отлаживать код release? И все работало? Цитата А нельзя ли задействовать jlink-ий сервер (который в трее висит)? На вкладке Breakpoint databreakpoint упоминаются. Или невозможно? Сейчас слегка изучил возможности отладки из под CDT 8.0 : 1. Точки останова только на код с возможностью "наложить" на них действия: выдать звук, продолжить программу через заданное время в сек., выдать лог (текстовый и выполнить некоторый набор инструкций), выполнить некую внеш утилиту. Мне непонятны две вещи: если в качестве лога предлагается выполнить набор инструкций (установлена галка " As expressions", то в каком формате нужно писать этот набор? Это кусок Си кода или еще как? В хелпе не нашел. Попробовал что-то типа " X = 1; " - вроде работает... Далее, при каких таких условиях потребовалось бы выполнить некую утилиту по достижении точки останова? Если кто пользовал, можно ли пример? И наконец, жаль, но вроде как "продолжить программу через несколько сек." - это именно притормозить программу на это время. Я сначала обрадовался, что нашел аналог LiveWatch из IAR, но в Иаре сделано так, что прога не останавливается - просто каждую секунду запрашиваются текущие значения переменных из окна LiveWatch. 2. Можно сделать точку останова типа watchpoint на переменную из ram. По факту чтения или записи возможны все действия, что и в п.1. Это в том числе и то, что предлагает и J-Link'овский GDB сервер. В целом возможности отладки неплохие, тем более что судя по хелпу из Эклипса эти CDT tools активно развиваются и уже сейчас можно слегка расширить эти возможности установкой доп плагинов. Знакомясь с Эклипсой, я скомпилировал тестовый проект в нем как через Yagarto/GCC так и через IAR plugin. Думаю, на текущий момент это наиболее оптимальное сочетание средств: с одной стороны используются шикарные возможности редактора Эклипса, с другой есть гибкость в оперативной смене компиляторов GCC / ICC. Не знаю как дальше это пойдет, т. к. Juno загружается на моем весьма недревнем ноуте раза в 3 дольше Indigo... Только тяжелый вопрос с изучением make файлов как всегда остался пока неразрешенным... )))
|
|
|
|
|
Nov 5 2012, 10:25
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (ivainc1789 @ Nov 5 2012, 12:58)  Откуда такие сведения? Т.е. вам приходилось отлаживать код release? И все работало? Только так и отлаживаюсь и все работает. А какой смысл сначала отлаживать другой код, а потом еще отлавливать ошибки, которые вылезут при включении оптимизатора (забытые volatile, гонки и т.д)? Да, есть тонкости - отлаживаться надо с включенным окном дизассемблера, потому что не каждому С-выражению соответствует какой-то код. Да, иногда нельзя поставить точку останова, если этот участок исходника был соптимизирован. Но можно найти нужное место и вставить точку останова в окне дизассемблера.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
ivainc1789 Indigo + Yagarto + J-Link Oct 27 2012, 12:45 AHTOXA Цитата(ivainc1789 @ Oct 27 2012, 18:45) в... Oct 27 2012, 14:10 ivainc1789 Переписать что-то не так-то просто оказалось. В IA... Oct 27 2012, 15:04 SSerge Вообще-то именно те ##, на которые ругается, они л... Oct 27 2012, 16:00 ivainc1789 Цитата(SSerge @ Oct 27 2012, 20:00) Вообщ... Oct 27 2012, 19:08  AHTOXA Извините, я сильно не вчитывался, но может быть та... Oct 27 2012, 19:11 ivainc1789 Осталась давнее предупреждение из файла STM32F0xx_... Oct 28 2012, 06:26 ivainc1789 Вопрос с расширениями IAR решил через функции CMSI... Oct 30 2012, 05:57 _Артём_ Цитата(ivainc1789 @ Oct 30 2012, 07:57) 1... Oct 30 2012, 06:36  ivainc1789 Цитата(_Артём_ @ Oct 30 2012, 10:36) Разн... Oct 30 2012, 10:22   _Артём_ Цитата(ivainc1789 @ Oct 30 2012, 12:22) В... Oct 30 2012, 20:32    ivainc1789 Цитата(_Артём_ @ Oct 31 2012, 00:32) Проб... Oct 31 2012, 17:09     _Артём_ Цитата(ivainc1789 @ Oct 31 2012, 19:09) 1... Oct 31 2012, 19:41      ivainc1789 Цитата(_Артём_ @ Oct 31 2012, 23:41) У ме... Nov 1 2012, 05:16       Сергей Борщ QUOTE (ivainc1789 @ Nov 1 2012, 08:16) Я ... Nov 1 2012, 07:11        AHTOXA Цитата(Сергей Борщ @ Nov 1 2012, 13:11) e... Nov 1 2012, 07:38       _Артём_ Цитата(ivainc1789 @ Nov 1 2012, 07:16) У ... Nov 1 2012, 16:05     AHTOXA Цитата(ivainc1789 @ Oct 31 2012, 23:09) 6... Nov 1 2012, 04:30     demiurg_spb Цитата(ivainc1789 @ Oct 31 2012, 21:09) 3... Nov 1 2012, 05:24      _Артём_ Цитата(demiurg_spb @ Nov 1 2012, 07:24) К... Nov 1 2012, 11:58       demiurg_spb Во всяком случае мне в это хотелось бы верить
А у ... Nov 1 2012, 12:14        _Артём_ Цитата(demiurg_spb @ Nov 1 2012, 14:14) В... Nov 1 2012, 12:41         demiurg_spb Так надо раскрутить и понять откуда ноги растут. Н... Nov 1 2012, 12:44          _Артём_ Цитата(demiurg_spb @ Nov 1 2012, 14:44) Т... Nov 1 2012, 12:58           demiurg_spb нет ни одного f после констант.
Но это наверное не... Nov 1 2012, 13:19      ivainc1789 Цитата(demiurg_spb @ Nov 1 2012, 09:24) д... Nov 1 2012, 15:32    ivainc1789 Цитата(Сергей Борщ @ Nov 5 2012, 14:25) н... Nov 5 2012, 15:43   _Артём_ Цитата(ivainc1789 @ Nov 5 2012, 11:58) Т.... Nov 5 2012, 12:59 AHTOXA Цитата(ivainc1789 @ Nov 1 2012, 21:32) Я ... Nov 4 2012, 08:30 ReAl Цитата(AHTOXA @ Nov 4 2012, 10:30) А вы п... Nov 4 2012, 09:35
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|