реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Indigo + Yagarto + J-Link, после IAR EWARM
demiurg_spb
сообщение Nov 1 2012, 05:24
Сообщение #16


неотягощённый злом
******

Группа: Свой
Сообщений: 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


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 1 2012, 07:11
Сообщение #17


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 1 2012, 07:38
Сообщение #18


фанат дивана
******

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



Цитата(Сергей Борщ @ Nov 1 2012, 13:11) *
external makefile project

+1.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 1 2012, 11:58
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(demiurg_spb @ Nov 1 2012, 07:24) *
Код
float x = 1.0f;
float y = sqrtf(fabsf(x)) + 36.6f;

И что? Тогда double-математика не используется?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 1 2012, 12:14
Сообщение #20


неотягощённый злом
******

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



Во всяком случае мне в это хотелось бы веритьsm.gif
А у вас есть сомнения?
Единственная непреодолимая для меня ситуация это ситуация с printf("%f", float_var).
Т.к. аргументом для %f должен быть дабл. И нет никакого стандартного способа для вывода флоатов при помощи prinf (без приведения к даблу).


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 1 2012, 12:41
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(demiurg_spb @ Nov 1 2012, 14:14) *
Во всяком случае мне в это хотелось бы веритьsm.gif

Не получается. sad.gif

Цитата(demiurg_spb @ Nov 1 2012, 14:14) *
А у вас есть сомнения?

Какие ж сомнения? Использовал функции cosf, sqrtf. Потом глянул в map - а там какой-нибудь __aeabi_dmul и размер такой, что ни в какие ворота.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 1 2012, 12:44
Сообщение #22


неотягощённый злом
******

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



Так надо раскрутить и понять откуда ноги растут. Не должно быть такого.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 1 2012, 12:58
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 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...
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 1 2012, 13:19
Сообщение #24


неотягощённый злом
******

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



нет ни одного f после констант.
Но это наверное не главное. Вы изучайте внимательно map-файл и взаимосвязи в нём.
Это единственный верный путь.
HINT: вам вообще лучше использовать функцию hypotf(dx, dy) вместо
distance_delta=dx*dx+dy*dy;
distance_delta=sqrtf(distance_delta);


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Nov 1 2012, 15:32
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 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 файл.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 1 2012, 16:05
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 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.
Эклипса сама тогда всё найдёт и распарсит.
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Nov 4 2012, 06:55
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 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? Не стоит ли изучать что-то более продвинутое?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 4 2012, 08:30
Сообщение #28


фанат дивана
******

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



Цитата(ivainc1789 @ Nov 1 2012, 21:32) *
Я пробовал изучить синтаксис make файлов раза 4 за последние 10 лет. Не смог. Не потому что сложно, просто психологически трудно работать с IDE, в которой всеравно приходится лезть в какой-то файл и править его вручную. Хочется какого-то целостного решения, что ли.

А вы посмотрите на это с другой стороны. Многие IDE поддерживают внешние makefile-ы. Таким образом, единожды изучив makefile-ы, вы избавите себя от необходимости изучать кучу птичек в разных IDE sm.gif
Цитата(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. Для начала вполне достаточно.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ReAl
сообщение Nov 4 2012, 09:35
Сообщение #29


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(AHTOXA @ Nov 4 2012, 10:30) *
А вы посмотрите на это с другой стороны. Многие IDE поддерживают внешние makefile-ы. Таким образом, единожды изучив makefile-ы, вы избавите себя от необходимости изучать кучу птичек в разных IDE sm.gif

Вот именно. Как работал в режиме с внешним makefile начиная с K52/KED/TED через Qedit/MED до NetBeans и Code::Blocks с эпизодическими редактированиями мелочей в Notepad++/VIM/gedit, так и работаю. «Целостность решения» не поломалась ни 4-кратной принципиальной сменой ОС (RT-11/DOS/Win3...XP/Linux) ни гораздо более многокртаной сменой «тулчейна»

Цитата(AHTOXA @ Nov 4 2012, 10:30) *
Посмотрите вот здесь. Всё как вы написали - автоматически подхватываются все файлы исходников в заданном списке директорий.
Присоединяюсь. Давно перешёл на автоматическое подхватывание makefil-ом всех исходников в указанных каталогах-«модулях». Удобно.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 4 2012, 23:23
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 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 упоминаются. Или невозможно?
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th August 2025 - 11:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01521 секунд с 7
ELECTRONIX ©2004-2016