Перейти к содержанию
    

Cube IDE, портировал проект из Keil, получил код в два раза больше

Есть у меня проект в Keil на STM32F030k6, перекинул его в Cube IDE. В результате код не влез в проект. Компильнул проект в более объемный так он вместо 28кб стал 55кб. Непонятная странность, слышал есть инструкции в 32 бита вместо 16, может из-за этого. Cmsis использую только для инициализации ядра, дальше все LL.

Изменено пользователем haker_fox
Перенёс тему, т.к. вопрос о среде разработки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть инструкции и 32 бита, и 16 бит. Одна и та же инструкция может быть представлена как в 16-битном, так и в 32-битном размере. Но не в этом дело! Если проект ровно один и тот же, с использованием Cube HAL,то  вначале в настройках оптимизации включите оптимизацию по размеру -Osize. Она влияет на подбор инструкций и комплектование их так, чтобы обеспечить минимально возможный объем кода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ни разу не делал такой операции, но напрашивается мнение о Debug сборке и Release. Точно Release собираете? Как уже верно подметил EdgeAligned, а оптимизация включена? Дропы unused кода включены?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, yarunt2 said:

Непонятная странность

Объяснение которой можно найти, заглянув в .map-файл, который содержит как резюме о суммарных расходах всей имеющейся памяти каждого вида, так и подробный список долей израсходованного по каждому файлу и его содержимому.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, haker_fox said:

заглянув в .map-файл

кстати да!
А ещё в Cube IDE есть такая клёвая штука как Build Analyzer, он парсит map-файл в удобный вид

image.thumb.png.dc92081141339b25980aa567e7b8d2e6.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, смотрел Build Analyzer, переключился на relise. Выиграл 4кб. Не смог найти где поменять оптимизацию, что-то в кубе совсем все не  Userfriendly. Буду перебрасывать проект на более старшие контроллеры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там же, где и у любого эклипса. Target options

Ну или спросить у гугла

https://www.disk91.com/2020/technology/programming/code-optimization-with-stm32-cube-ide/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не видите чё ли? Без картинки не работает объяснение!

image.thumb.png.6a17f802b6d5a62742ecceaf6cf41d4a.pngimage.thumb.png.84dcf696246b52209366897d292551fc.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 часа назад, MrYuran сказал:

Target options

Немного по другому Project-Properties-Setting.

to Spider.Спасибо, в моем Кубе все галочки стоят по умолчанию как у вас на картинках. Проект на кейле был еще на версии 4.7, может с тех пор что-то поменялось в компиляторе, потому исходник избыточен. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите еще в map файле включение неиспользуемых библиотечных функций. По умолчанию Keil их выбрасывает, а gcc (который внутри Cube) подключает при линковке модули целиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...