STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
В опциях проекта на вкладке настроек линкера нужно поставить галку Use Link Time Optomozation.
- Реклама
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
-flto меняет размер прошивки в пределах о-малое. Дело не в нём.
Последний раз редактировалось VladislavS Вс ноя 22, 2020 19:15:24, всего редактировалось 1 раз.
Re: STM32 новичку в ARM что к чему
Былостало
Спойлер
Код: Выделить всё
|1|Program size (bytes): 23332|
||Data size (bytes): 152|
||BSS size (bytes): 2820|
|| ----------------|
||Total size (bytes): 26304 (R/W Memory: 2972)|Спойлер
Код: Выделить всё
|1|Program size (bytes): 22900|
||Data size (bytes): 152|
||BSS size (bytes): 2811|
|| ----------------|
||Total size (bytes): 25863 (R/W Memory: 2963)|- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Есть же map-файл. Там всё видно.
Re: STM32 новичку в ARM что к чему
Держите, один мар и другой мар
У ARV в 18кило вылезло, здесь с накладными расходами ~22кило, не забываем 2кило на таблицу идет.
- Реклама
Re: STM32 новичку в ARM что к чему
Тут по ходу разбора чужого кода вопрос возник. Есть какой-то практический смысл в использовании типа bool в Си? Вроде экономии памяти или скорости выполнения операций. В IAR для использования этого типа нужно подключить файл stdbool.h. Заглянул я в файл, но ничего не понял в этих ifndef __cplusplus и #define __bool_true_false_are_defined 1. Что-то ужасное произойдет, если заменить bool на char или int?
Астролябия-сама меряет, было бы что мерять!!!
Re: STM32 новичку в ARM что к чему
[uquote="Asmodey",url="/forum/viewtopic.php?p=3929170#p3929170"]Есть какой-то практический смысл в использовании типа bool в Си? Вроде экономии памяти или скорости выполнения операций. В IAR для использования этого типа нужно подключить файл stdbool.h.[/uquote]
В C2x bool/true/false наконец станут ключевыми словами и хедеры подключать будет не нужно. А смысл не в экономии, а в выразительности и лучшей защиты от возможных ошибок.
В C2x bool/true/false наконец станут ключевыми словами и хедеры подключать будет не нужно. А смысл не в экономии, а в выразительности и лучшей защиты от возможных ошибок.
Re: STM32 новичку в ARM что к чему
Понятно, спасибо. Я думал bool всего 1 бит занимает в памяти, а сейчас прочитал, что съедает те же 8 бит.
Астролябия-сама меряет, было бы что мерять!!!
Re: STM32 новичку в ARM что к чему
Нет, просто эффективность компилятора.Asmodey писал(а):Тут по ходу разбора чужого кода вопрос возник.
И пока EmBitz проигрывает во всем, самое главное не умеет строит "зависимости", что бы открыть функцию в другом файле, мне приходится слева выбрать файл с функцией, а если их куча файлов приходится каждый перещелкать пока найдешь нужный, либо очень очень "умную голову" иметь, что бы в памяти все это держать.
Только можно представить как вот это
Спойлер
Код: Выделить всё
#define CMD(x) static const char SCMD(x)[] = # x ; \
static int16_t FCMD(x)(char *str); \
static const cmd_t __attribute__((used, section(".my_table"))) CONCAT(_ , SCMD(x)) = { \
.name = SCMD(x), .func = FCMD(x) }; \
static int16_t CONCAT(f_cmd_, x)(char *str)
На очереди IAR, а то что-то хвастаются что IAR "ложит на лопатки" любой компилятор, посмотрим.
- AVI-crak
- Прорезались зубы
- Сообщения: 202
- Зарегистрирован: Сб янв 09, 2016 15:51:17
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Не так - проверяется всего один бит, или всё число на ноль. А размер может быль любым. В частности при возврате параметра в arm системе - это всегда регистр ядра, то-есть 32 бита. И всего два состояния ответа - команда успешна или нет.
Другое дело логические операции с bool, особенно с промежуточным хранением в структуре. Тут вообще нет экономии ни в размере памяти, ни в логическом наглядном применении. В этом случае bool значительно проигрывает перечислению. Гораздо приятнее видеть не просто факт сбоя, но тип ошибки.
EmBitz не знаю "зависимости", есть область видимости. Если хидер подключен к файлу - то его функции имеют режим авто_дополнения, а так-же видны в коленке с лева. Просто не нужно к майну подключать абсолютно всё, каша получится.
Другое дело логические операции с bool, особенно с промежуточным хранением в структуре. Тут вообще нет экономии ни в размере памяти, ни в логическом наглядном применении. В этом случае bool значительно проигрывает перечислению. Гораздо приятнее видеть не просто факт сбоя, но тип ошибки.
EmBitz не знаю "зависимости", есть область видимости. Если хидер подключен к файлу - то его функции имеют режим авто_дополнения, а так-же видны в коленке с лева. Просто не нужно к майну подключать абсолютно всё, каша получится.
Re: STM32 новичку в ARM что к чему
Как уже писал EmBitz это IDE. Она может использовать различные компиляторы в том числе GCC и компилятор кейла. Я использую текущую версию GCC 9.3.Dimon456 писал(а):Нет, просто эффективность компилятора.
И пока EmBitz проигрывает во всем
Все намного проще.Dimon456 писал(а):что бы открыть функцию в другом файле, мне приходится слева выбрать файл с функцией, а если их куча файлов приходится каждый перещелкать пока найдешь нужный
Спойлер

Re: STM32 новичку в ARM что к чему
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3928913#p3928913"]А редактор с подсветкой синтаксиса будет мне автодополнения разных членов структур, переменных и т.п. показывать? И на лету статанализатором ошибки проверять?[/uquote]
Будет, но качество сильно зависит от редактора и стиля написания
Например, можно без проблем скомпилировать такой код:
У TIM5 RCR нет вообще, у TIM16 он 8-ми битный, разрядность для TIM1 может быть 8/16 бит, в зависимости от серии, но в данном случае мы не получим даже предупреждения. А в таком случае получим предупреждение и ошибку:

Реализовано довольно таки просто, на иероглифах

Будет, но качество сильно зависит от редактора и стиля написания
Код: Выделить всё
TIM5->RCR = 12345;
TIM1->RCR = 12345;
TIM16->RCR = 12345;
Реализовано довольно таки просто, на иероглифах
Спойлер

- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
[uquote="Мурик",url="/forum/viewtopic.php?p=3928944#p3928944"]Зачем Makefile? IDE его не использует. Для компиляции, прошивки и отладки он не нужен.[/uquote]
Мне просто нечего сказать. Это - вообще дегенерация какая-то что ли?
Добавлено after 1 minute 16 seconds:
[uquote="VladislavS",url="/forum/viewtopic.php?p=3928958#p3928958"]Добавил файлы в проект, задал параметры сборки хоть для каждого файла в отдельности, скомпилировал, отладил, прошил и отправил проект в архив. Всё в одной среде без танцев с бубном.[/uquote]
Вот, что и требовалось доказать: полная дегенерация. Абсолютное отсутствие контроля со стороны разработчика…
Мне просто нечего сказать. Это - вообще дегенерация какая-то что ли?
Добавлено after 1 minute 16 seconds:
[uquote="VladislavS",url="/forum/viewtopic.php?p=3928958#p3928958"]Добавил файлы в проект, задал параметры сборки хоть для каждого файла в отдельности, скомпилировал, отладил, прошил и отправил проект в архив. Всё в одной среде без танцев с бубном.[/uquote]
Вот, что и требовалось доказать: полная дегенерация. Абсолютное отсутствие контроля со стороны разработчика…
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3929267#p3929267"]Абсолютное отсутствие контроля со стороны разработчика…[/uquote]Наоборот, полный контроль. Покажи мне makefile в котором для каждого файла можно задать свои параметры компиляции. Слабо?
PS:
А запульнуть прошивку сразу на SPI-флэшку, откуда она будет грузиться загрузчиком? А загрузить и отлаживать её с того места, куда её штатно загрузчик подгружает? А подключиться к работающей программе "на лету" и подсмотреть состояние любого регистра? А инициализировать SDRAM перед загрузкой в неё отлаживаемой прошивки? И ещё много того, что тебе даже не снилось. Ответ я знаю - ТЕБЕ НЕ НАДА.
Добавлено after 1 hour 35 minutes 4 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3928913#p3928913"]т.к. мне нужно видеть весь выхлоп make'а в нормальном виде.[/uquote]Только вот понятие "в нормальном виде" у тебя какое-то ненормальное. Зачем смотреть на вывод 100500 строк с кучей параметров компиляции для файлов, скомпилированных без ошибки? IDE мне всё это спрячет и покажет только ошибки и предупреждения. Ну и финальную статистику. Это сильно упрощает и ускоряет мою работу. Даже секунды, потраченные на переключение в терминал и запуск make это время, украденное у меня.
Добавлено after 1 hour 13 minutes 7 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=3929223#p3929223"]Реализовано довольно таки просто, на иероглифах
[/uquote]А в данном примере если info без static объявить, скомпилируется? Ведь она в статическом методе фактически не используется (скорее всего в других используется), а только в концепте. И метод так и просит inline. Компилятор, конечно, разберётся сам, но для наглядности 
PS:
А запульнуть прошивку сразу на SPI-флэшку, откуда она будет грузиться загрузчиком? А загрузить и отлаживать её с того места, куда её штатно загрузчик подгружает? А подключиться к работающей программе "на лету" и подсмотреть состояние любого регистра? А инициализировать SDRAM перед загрузкой в неё отлаживаемой прошивки? И ещё много того, что тебе даже не снилось. Ответ я знаю - ТЕБЕ НЕ НАДА.
Добавлено after 1 hour 35 minutes 4 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3928913#p3928913"]т.к. мне нужно видеть весь выхлоп make'а в нормальном виде.[/uquote]Только вот понятие "в нормальном виде" у тебя какое-то ненормальное. Зачем смотреть на вывод 100500 строк с кучей параметров компиляции для файлов, скомпилированных без ошибки? IDE мне всё это спрячет и покажет только ошибки и предупреждения. Ну и финальную статистику. Это сильно упрощает и ускоряет мою работу. Даже секунды, потраченные на переключение в терминал и запуск make это время, украденное у меня.
Добавлено after 1 hour 13 minutes 7 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=3929223#p3929223"]Реализовано довольно таки просто, на иероглифах
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
[uquote="VladislavS",url="/forum/viewtopic.php?p=3929321#p3929321"]makefile в котором для каждого файла можно задать свои параметры компиляции. Слабо?[/uquote]
"запульнуть" - make SPI
и далее make download, make initSDRAM, make ВСЕ_что_не снилось и т.д.
ИДЕ делает все также приблизительно, только это скрыто от пользователя.
Терминал для make открывать не нужно - хороший редактор уже в терминале.
Время в ИДЕ тратится на отрывание руки от клавиатуры, хватание мышки, прицеливание на кнопку и нажатие на саму кнопку...
Код: Выделить всё
$(GCC) $< $(CFLAGS) -c -o $@
$(GCC) $< $(CFLAGS2) -c -o $@
$(GCC) $< $(CFLAGS3) -c -o $@и далее make download, make initSDRAM, make ВСЕ_что_не снилось и т.д.
ИДЕ делает все также приблизительно, только это скрыто от пользователя.
Терминал для make открывать не нужно - хороший редактор уже в терминале.
Время в ИДЕ тратится на отрывание руки от клавиатуры, хватание мышки, прицеливание на кнопку и нажатие на саму кнопку...
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18647
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
99,9% команд IDE доступны на клавиатуре.oleg110592 писал(а):Время в ИДЕ тратится на отрывание руки от клавиатуры, хватание мышки, прицеливание на кнопку и нажатие на саму кнопку...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
значит "запульнуть" - SPI download, initSDRAM, ВСЕ_что_не снилось - это 0.1%
Re: STM32 новичку в ARM что к чему
Ну, попробовал я IAR, ни чего нет, только 5 Гигов на жестком диске. Хотя у меня версия 7.70.1 была, может надо было последнию скачать?
EmBitz еще куда не шло, а это - полное ... а еще и платный, за что? за 5 Гигов на жестком диске.
Ну "зависимость" IAR так же строит не умеет, слева все в "каше", справа вроде что-то есть, но не то, не для новичков.
На этой записиподавился, здесь то же ему что-то не нравится, скрипт линкера другой, сходу не осилишь, надо где-то примеры смотреть. За то 5 Гигов на жестком диске.
В топку.
EmBitz еще куда не шло, а это - полное ... а еще и платный, за что? за 5 Гигов на жестком диске.
Ну "зависимость" IAR так же строит не умеет, слева все в "каше", справа вроде что-то есть, но не то, не для новичков.
На этой записи
Код: Выделить всё
case '0' ... '9':Код: Выделить всё
pixel_t tmp[cfg.mx];В топку.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[uquote="oleg110592",url="/forum/viewtopic.php?p=3929366#p3929366"]значит "запульнуть" - SPI download, initSDRAM, ВСЕ_что_не снилось - это 0.1%[/uquote]ЧЕМ ты "запульнёшь"? ЧЕМ сделаешь initSDRAM непосредственно перед загрузкой в неё прошивки? make? Ну-ну.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
скриптом, вызов из make


