|
|
  |
Indigo + Yagarto + J-Link, после IAR EWARM |
|
|
|
Nov 1 2012, 05:24
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(ivainc1789 @ Oct 31 2012, 21:09)  3. Еще я не совсем понял пока как GCC работает с float. То, что IAR определял как float здесь рекастится в double. Как бы дать знать компилятору, чтобы не использовал double? "Ошибка" приведенная выше это вроде просто вызов библиотечной функции а так как исходника нет, вот и ругается... для всех строковых флоатов надобно буковку f дописывать и для имён функций соответственно; например: Код float x = 1.0f; float y = sqrtf(fabsf(x)) + 36.6f; также можно добавить ключей компилятору чтоб он варнинги давал полезные: Код CFLAGS += -pedantic CFLAGS += -Wall CFLAGS += -Wextra CFLAGS += -Werror CFLAGS += -Wstrict-prototypes CFLAGS += -Wno-main CFLAGS += -Wdouble-promotion CFLAGS += -Winit-self CFLAGS += -Wsequence-point CFLAGS += -Wfloat-equal CFLAGS += -Wmissing-field-initializers CFLAGS += -Wstack-usage=100
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Nov 1 2012, 07:11
|

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

|
QUOTE (ivainc1789 @ Nov 1 2012, 08:16)  Я не точно выразился. Именно двойной клик на блоке зачем нужен? Да еще при возможности такими кликами включить ВСЕ блоки. Чего ж все то сразу и не включили? По двум причинам: 1) Потому что чтение некоторых регистров, даже отладчиком, приводит к некоторым действиям (изменению их содержимого, содержимого других регистров и т.д.). И если отладчик их будет молча читать - ваша программа под отладкой может работать совершенно не так, как вы ожидаете. 2) Потому что после каждой операции отладчик будет вынужден перечитывать содержимое _всех_ регистров, и это может сильно замедлить его работу. Поэтому вам и предлагается выбрать только те регистры, содержимое которых вам действительно инетересно. QUOTE (ivainc1789 @ Nov 1 2012, 08:16)  Или сменить тулчейн в Индиге в принципе невозможно через Свойства Проекта? У меня путь к toolchain/bin добавляется в path в makefile. Для смены достаточно заменить одну строчку. При создании проекта выбран external makefile project. Галочки в эклипсе для настроек компиляции не используются. Проект можно собирать не запуская эклипсу.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 1 2012, 12:41
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(demiurg_spb @ Nov 1 2012, 14:14)  Во всяком случае мне в это хотелось бы верить  Не получается.  Цитата(demiurg_spb @ Nov 1 2012, 14:14)  А у вас есть сомнения? Какие ж сомнения? Использовал функции cos f, sqrt f. Потом глянул в map - а там какой-нибудь __aeabi_dmul и размер такой, что ни в какие ворота.
|
|
|
|
|
Nov 1 2012, 12:58
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(demiurg_spb @ Nov 1 2012, 14:44)  Так надо раскрутить и понять откуда ноги растут. Не должно быть такого. Кусок кода такой: Код #include <math.h>
volatile float DeltaX=50, DeltaY=120, Angle=3.14/4; volatile float Delta; volatile unsigned char DistanceFlag; void test_math() { while (1) { float dx=DeltaX, dy=DeltaY, angle=Angle, distance_delta; dx=dx*cosf(angle); distance_delta=dx*dx+dy*dy; distance_delta=sqrtf(distance_delta); if (distance_delta>100) DistanceFlag=1; Delta=distance_delta; } } Всё вроде с float...
|
|
|
|
|
Nov 1 2012, 15:32
|

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

|
Цитата(demiurg_spb @ Nov 1 2012, 09:24)  для всех строковых флоатов надобно буковку f дописывать и для имён функций соответственно; например: Код float x = 1.0f; float y = sqrtf(fabsf(x)) + 36.6f; А компилятору по барабану. У меня есть такие определения: Код #define Fhclk 24e6 // частота ядра,Гц #define ms (Fhclk/1e3) // количество циклов для одной миллисекунды эта ms в дебаггере всегда double какие там буковки не ставь... Теперь понятно, почему в дебаге такой большой код, что трудновато полностью засунуть в кристалл мало-мальский проект... Если я правильно понимаю историю GCC, его делали для компиляции приложений под линукс, строгой заточенности под микроконтроллеры (где подчас каждый байт на счету) не предполагалось... Цитата По двум причинам:... Причины понятны, реализация не понятна. Можно же было бы сделать по-человечески: если пользователь разворачивает группу - группа автоматом активируется, закрывает группу - деактивируется. То же самое, тока гораздо удобнее. Цитата У меня путь к toolchain/bin добавляется в path в makefile. Для смены достаточно заменить одну строчку. Я пробовал изучить синтаксис make файлов раза 4 за последние 10 лет. Не смог. Не потому что сложно, просто психологически трудно работать с IDE, в которой всеравно приходится лезть в какой-то файл и править его вручную. Хочется какого-то целостного решения, что ли. Вот Эклипс вроде его пытается предложить, но пока я в полном шоке от такого предложения. И вроде бы операции, осущ мэйкфайлом ну настолько стандартные и понятные, что любая IDE должна без вопросов это делать автоматом, ан нет... Только что решил попробовать плагин Иара в Эклипсе. Имея уже довольно прочный опыт создания тестовых проектов в Эклипсе я добавлял файлы в Иаровский проект ЦЕЛЫХ ПОЛЧАСА. И проблема оказалась в том, что даже начиная формирование нового проекта Эклипс каким-то чудом тащит за собой прилинкованные ресурсы из предыдущего. И еще у него нелюбовь к ресурсам с меткой read only. Многое не увидел пока свойства файлов не поправил. Потом переидексация по нескольку раз и т. д. И с путями в Эклипсе полная каша. И как так можно работать? А если представить проектик из 48 файлов исходников - там замучаешься так "собирать" проект... Ну это просто эмоции, сорри... Кстати, иаровский плагин четко отрабатывает move to line и прочие команды. Вообще работает очень стабильно, придраться могу только к одному: шрифт в консоли сбивается на размер по умолчанию для исходников. Причем не сразу, первые две строки нормально отображаются установленным в настройках шрифтом. Еще у меня по GCC вопрос. Есть ли возможность настроить map файл линкера? Стоило только указать ключ remove unused sections - он выводит весь этот длиннющий список (для каждого объектного файла) в map файл.
|
|
|
|
|
Nov 1 2012, 16:05
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(ivainc1789 @ Nov 1 2012, 07:16)  У меня J-Link. Я что-то не нашел такой поддержки. Плохо искал? Тут в debug есть только самый минимальный набор функций. Нужно сначала создать break, потом в его свойствах условия остановки приписать. Цитата(ivainc1789 @ Nov 1 2012, 07:16)  немного оффтопа. В Punto Switcher (PS) используете вкладку "Правила переключения" при уст галке "Предлагать создать правило..."? У меня что-то эти созданные правила вообще не работают. Вроде там разработчики что-то перемудрили... Пункт Настройки - Автозамена. Цитата(ivainc1789 @ Nov 1 2012, 07:16)  Мне кажется за бесплатно ничего толкового никто не предложит. Придется с глюками воевать и тратить кучу времени, которого нет. Да вроде всё болеее менее. Можно юзать. Цитата(ivainc1789 @ Nov 1 2012, 07:16)  Так вот подумаешь... и купишь ImageCraft ICCCORTEX8 за 250 баксов для коммерческих проектов... ImageCraft - не дай бог. Цитата(ivainc1789 @ Nov 1 2012, 07:16)  Хочу сменить тулчейн с Yagarto на Codesourcery. КАК? А зачем? Он что лучше на порядок? Цитата(ivainc1789 @ Nov 1 2012, 17:32)  Только что решил попробовать плагин Иара в Эклипсе. Имея уже довольно прочный опыт создания тестовых проектов в Эклипсе я добавлял файлы в Иаровский проект ЦЕЛЫХ ПОЛЧАСА. И проблема оказалась в том, что даже начиная формирование нового проекта Эклипс каким-то чудом тащит за собой прилинкованные ресурсы из предыдущего. И еще у него нелюбовь к ресурсам с меткой read only. Многое не увидел пока свойства файлов не поправил. Потом переидексация по нескольку раз и т. д. Как-то не так добавляете... Просто файл создаётся в нужной папке с расширением cpp, и всё - добавилось. Цитата(ivainc1789 @ Nov 1 2012, 17:32)  И с путями в Эклипсе полная каша. И как так можно работать? А если представить проектик из 48 файлов исходников - там замучаешься так "собирать" проект... Ну это просто эмоции, сорри... Видимо не настроены Discovery options. Эклипса сама тогда всё найдёт и распарсит.
|
|
|
|
|
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, 08:30
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(ivainc1789 @ Nov 1 2012, 21:32)  Я пробовал изучить синтаксис make файлов раза 4 за последние 10 лет. Не смог. Не потому что сложно, просто психологически трудно работать с IDE, в которой всеравно приходится лезть в какой-то файл и править его вручную. Хочется какого-то целостного решения, что ли. А вы посмотрите на это с другой стороны. Многие IDE поддерживают внешние makefile-ы. Таким образом, единожды изучив makefile-ы, вы избавите себя от необходимости изучать кучу птичек в разных IDE  Цитата(ivainc1789 @ Nov 4 2012, 12:55)  2. Продолжил разбираться с printf. Подключил syscall_minimal.c. Внес необходимые исправления. Теперь проект собирается без ошибок, однако простите за тупизм, но содержимое функции putChar я что-то затрудняюсь написать. В примерах люди используют вывод в UART, но мне этого не нужно ведь printf используется только для отладки J-Link'ом. Кроме того, даже при пустой функции putChar размер bin файла контроллера возрастает с 31кБ до 57кБ что совсем огорчительно. К сожалению, реализация printf в стандартной библиотеке действительно тяжёлая. Если упёрлись в нехватку памяти, можете воспользоваться альтернативными реализациями (например, отсюда). Цитата(ivainc1789 @ Nov 4 2012, 12:55)  4. По make файлам. Может ли кто-нибудь поделиться примером под STM32 + Eclipse? Посмотрите вот здесь. Всё как вы написали - автоматически подхватываются все файлы исходников в заданном списке директорий. Насчёт документации - вот: Эффективное использование 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 упоминаются. Или невозможно?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|