STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3384
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

В опциях проекта на вкладке настроек линкера нужно поставить галку Use Link Time Optomozation.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

-flto меняет размер прошивки в пределах о-малое. Дело не в нём.
Последний раз редактировалось VladislavS Вс ноя 22, 2020 19:15:24, всего редактировалось 1 раз.
Реклама
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: STM32 новичку в ARM что к чему

Сообщение Dimon456 »

Было
Спойлер

Код: Выделить всё

|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 что к чему

Сообщение VladislavS »

Есть же map-файл. Там всё видно.
Реклама
Эиком - электронные компоненты и радиодетали
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: STM32 новичку в ARM что к чему

Сообщение Dimon456 »

Держите, один мар и другой мар
map_file.zip
(25.58 КБ) 308 скачиваний
У ARV в 18кило вылезло, здесь с накладными расходами ~22кило, не забываем 2кило на таблицу идет.
Реклама
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6386
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: STM32 новичку в ARM что к чему

Сообщение Asmodey »

Тут по ходу разбора чужого кода вопрос возник. Есть какой-то практический смысл в использовании типа bool в Си? Вроде экономии памяти или скорости выполнения операций. В IAR для использования этого типа нужно подключить файл stdbool.h. Заглянул я в файл, но ничего не понял в этих ifndef __cplusplus и #define __bool_true_false_are_defined 1. Что-то ужасное произойдет, если заменить bool на char или int?
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32 новичку в ARM что к чему

Сообщение Reflector »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3929170#p3929170"]Есть какой-то практический смысл в использовании типа bool в Си? Вроде экономии памяти или скорости выполнения операций. В IAR для использования этого типа нужно подключить файл stdbool.h.[/uquote]
В C2x bool/true/false наконец станут ключевыми словами и хедеры подключать будет не нужно. А смысл не в экономии, а в выразительности и лучшей защиты от возможных ошибок.
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6386
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: STM32 новичку в ARM что к чему

Сообщение Asmodey »

Понятно, спасибо. Я думал bool всего 1 бит занимает в памяти, а сейчас прочитал, что съедает те же 8 бит.
Астролябия-сама меряет, было бы что мерять!!!
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: STM32 новичку в ARM что к чему

Сообщение Dimon456 »

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 что к чему

Сообщение AVI-crak »

Не так - проверяется всего один бит, или всё число на ноль. А размер может быль любым. В частности при возврате параметра в arm системе - это всегда регистр ядра, то-есть 32 бита. И всего два состояния ответа - команда успешна или нет.
Другое дело логические операции с bool, особенно с промежуточным хранением в структуре. Тут вообще нет экономии ни в размере памяти, ни в логическом наглядном применении. В этом случае bool значительно проигрывает перечислению. Гораздо приятнее видеть не просто факт сбоя, но тип ошибки.

EmBitz не знаю "зависимости", есть область видимости. Если хидер подключен к файлу - то его функции имеют режим авто_дополнения, а так-же видны в коленке с лева. Просто не нужно к майну подключать абсолютно всё, каша получится.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3384
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

Dimon456 писал(а):Нет, просто эффективность компилятора.
И пока EmBitz проигрывает во всем
Как уже писал EmBitz это IDE. Она может использовать различные компиляторы в том числе GCC и компилятор кейла. Я использую текущую версию GCC 9.3.
Dimon456 писал(а):что бы открыть функцию в другом файле, мне приходится слева выбрать файл с функцией, а если их куча файлов приходится каждый перещелкать пока найдешь нужный
Все намного проще.
СпойлерИзображение
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32 новичку в ARM что к чему

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3928913#p3928913"]А редактор с подсветкой синтаксиса будет мне автодополнения разных членов структур, переменных и т.п. показывать? И на лету статанализатором ошибки проверять?[/uquote]
Будет, но качество сильно зависит от редактора и стиля написания :) Например, можно без проблем скомпилировать такой код:

Код: Выделить всё

TIM5->RCR = 12345;
TIM1->RCR = 12345;
TIM16->RCR = 12345;
У TIM5 RCR нет вообще, у TIM16 он 8-ми битный, разрядность для TIM1 может быть 8/16 бит, в зависимости от серии, но в данном случае мы не получим даже предупреждения. А в таком случае получим предупреждение и ошибку:
Изображение

Реализовано довольно таки просто, на иероглифах :)
СпойлерИзображение
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Eddy_Em »

[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]
Вот, что и требовалось доказать: полная дегенерация. Абсолютное отсутствие контроля со стороны разработчика…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

[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. Компилятор, конечно, разберётся сам, но для наглядности :)
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: STM32 новичку в ARM что к чему

Сообщение oleg110592 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3929321#p3929321"]makefile в котором для каждого файла можно задать свои параметры компиляции. Слабо?[/uquote]

Код: Выделить всё

 $(GCC) $< $(CFLAGS) -c -o $@
  $(GCC) $< $(CFLAGS2) -c -o $@
  $(GCC) $< $(CFLAGS3) -c -o $@
"запульнуть" - make SPI
и далее make download, make initSDRAM, make ВСЕ_что_не снилось и т.д.
ИДЕ делает все также приблизительно, только это скрыто от пользователя.
Терминал для make открывать не нужно - хороший редактор уже в терминале.
Время в ИДЕ тратится на отрывание руки от клавиатуры, хватание мышки, прицеливание на кнопку и нажатие на саму кнопку...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18647
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение ARV »

oleg110592 писал(а):Время в ИДЕ тратится на отрывание руки от клавиатуры, хватание мышки, прицеливание на кнопку и нажатие на саму кнопку...
99,9% команд IDE доступны на клавиатуре.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: STM32 новичку в ARM что к чему

Сообщение oleg110592 »

значит "запульнуть" - SPI download, initSDRAM, ВСЕ_что_не снилось - это 0.1%
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: STM32 новичку в ARM что к чему

Сообщение Dimon456 »

Ну, попробовал я IAR, ни чего нет, только 5 Гигов на жестком диске. Хотя у меня версия 7.70.1 была, может надо было последнию скачать?
EmBitz еще куда не шло, а это - полное ... а еще и платный, за что? за 5 Гигов на жестком диске.

Ну "зависимость" IAR так же строит не умеет, слева все в "каше", справа вроде что-то есть, но не то, не для новичков.
На этой записи

Код: Выделить всё

case '0' ... '9':
подавился, здесь

Код: Выделить всё

pixel_t tmp[cfg.mx];
то же ему что-то не нравится, скрипт линкера другой, сходу не осилишь, надо где-то примеры смотреть. За то 5 Гигов на жестком диске.
В топку.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

[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 что к чему

Сообщение oleg110592 »

скриптом, вызов из make
Ответить

Вернуться в «ARM»