KSergeyP 0 23 ноября, 2015 Опубликовано 23 ноября, 2015 · Жалоба Установил Keil. Создал проект через STM Cube. При компиляции в проект включаются все функции, даже те которые не используются!!!!!!! Таким образом не написав ни строчки, только включив одну стандартную библиотеку в проект потраченно уже несколько кило памяти. Раньше при работе с другими компиляторами( к примеру MPLAB ) такого никогда небыло, компилятор сам автоматом выбрасывал не используемые функции. Это можно как-то поправить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 23 ноября, 2015 Опубликовано 23 ноября, 2015 (изменено) · Жалоба Библиотеки подключаются, но не используются. Тем самым не расходуется место. Можете попробовать их удалить и убедитесь, что размер бинарника при удалении не меняется Изменено 23 ноября, 2015 пользователем IgorKossak бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 23 ноября, 2015 Опубликовано 23 ноября, 2015 (изменено) · Жалоба При компиляции в проект включаются все функции, даже те которые не используются!!!!!!! Раньше при работе с другими компиляторами( к примеру MPLAB ) такого никогда небыло, компилятор сам автоматом выбрасывал не используемые функции. Смотрите внимательно файл карты памяти. Поищите слово remove. Не все так страшно. Но если хоть где в проекте есть printf, это тянет за собой сразу много чего. Изменено 23 ноября, 2015 пользователем KnightIgor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KSergeyP 0 23 ноября, 2015 Опубликовано 23 ноября, 2015 (изменено) · Жалоба Смотрите внимательно файл карты памяти. Поищите слово remove. Не все так страшно. Но если хоть где в проекте есть printf, это тянет за собой сразу много чего. В том то и дело что ничего нет. Только конфигурация GPIO из стандартной библиотеки которая подключается при создании проекта из STM куба Изменено 23 ноября, 2015 пользователем Matic Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 23 ноября, 2015 Опубликовано 23 ноября, 2015 (изменено) · Жалоба В том то и дело что ничего нет. Только конфигурация GPIO из стандартной библиотеки которая подключается при создании проекта из STM куба Киньте MAP файл. P.S. Попробуйте установить птичку "One ELF Section per Function" в опциях проекта, закладка C/C++, и перекомпилировать. Изменено 23 ноября, 2015 пользователем KnightIgor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KSergeyP 0 23 ноября, 2015 Опубликовано 23 ноября, 2015 (изменено) · Жалоба Киньте MAP файл. map.txt Птичька уже стояла по умолчанию да... конфигурация тактироания весит 1176. Походу дело не в компиляторе. Просто библиотека ФУНКЦИЙ ИНИЦИАЛИЗАЦИИ СЪЕДАЮТ 3000БАЙТ!!!!! :cranky: Чего они там инициализируют на столько флеши Похоже эта CMSIS универсальная для всех ARM-ов от ST отсюда и такая раздутость. За переносимость кода платить флешью :) Надо ручками инициализировать прям в регистры, всётаки не ПК память надо экономить, её не так много в STM32F030 всего 16К, если на инициализацию 3 тратить, то что дальше будет :) Еще один вопрос: как быстро перейти на описание переменной/функции. Опять же привык что во всех современных компиляторах(по крайней мере с которыми мне приходилось работать) Ctrl + ЛМ и попадаешь на инициализацию. В Keil пока нашёл только в контекстном меню, но это как то не очень удобно. Можно ли настроить где-то? Изменено 23 ноября, 2015 пользователем Matic Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 23 ноября, 2015 Опубликовано 23 ноября, 2015 · Жалоба в STM32F030 всего 16К, если на инициализацию 3 тратить, то что дальше будет :) Да вот ничего особенного и не будет :) Пока не жмет, можно не переживать из-за потери 3кБайт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 23 ноября, 2015 Опубликовано 23 ноября, 2015 (изменено) · Жалоба Еще один вопрос: как быстро перейти на описание переменной/функции. Опять же привык что во всех современных компиляторах(по крайней мере с которыми мне приходилось работать) Ctrl + ЛМ и попадаешь на инициализацию. В Keil пока нашёл только в контекстном меню, но это как то не очень удобно. Можно ли настроить где-то? В Кайле можно все горячие клавиши (но не мышь) переназначить. Для перехода к описанию: Edit -> Configuration -> Shortcut Keys -> см. Edit: Advanced: Go to Definition of Current Word. map.txt да... конфигурация тактироания весит 1176. Походу дело не в компиляторе. Просто библиотека ФУНКЦИЙ ИНИЦИАЛИЗАЦИИ СЪЕДАЮТ 3000БАЙТ!!!!! :cranky: Чего они там инициализируют на столько флеши Действительно, много. Я глянул свой проект на F051, так у меня 432 байта... Но не HAL, а STL. 432 58 0 16 0 376 stm32f0xx_rcc.o Изменено 23 ноября, 2015 пользователем KnightIgor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 23 ноября, 2015 Опубликовано 23 ноября, 2015 · Жалоба Просто библиотека ФУНКЦИЙ ИНИЦИАЛИЗАЦИИ СЪЕДАЮТ 3000БАЙТ!!!!! :cranky: Добро пожаловать в мир говнокода и глюкодрома. Теперь нужно выкинуть Cube и начать писать нормальный код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alechek 0 24 ноября, 2015 Опубликовано 24 ноября, 2015 · Жалоба да... конфигурация тактироания весит 1176. Походу дело не в компиляторе. Просто библиотека ФУНКЦИЙ ИНИЦИАЛИЗАЦИИ СЪЕДАЮТ 3000БАЙТ!!!!! :cranky: Для интереса глянул на свое для STM32F103 Управление и универсальная функция инициализация (ноги) GPIO - 196/332* байта ПЗУ Управление всем тактированием - 356/520* Драйвер UART (без DMA, на все каналы) - 856/1132* FreeRTOS - 4150/3318* *(оптимизация вкл/выкл) Конечно, пока не жмет, или очень быстро надо сделать/попробовать - можно и куб. Иногда помогает понять, почему собственный код не работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 16 24 ноября, 2015 Опубликовано 24 ноября, 2015 · Жалоба Про размер кода: я тут проектик несложный с PIC на STM32 перевожу. Расчетная часть( много с плавающей точкой) и всякие конечные автоматы те же, просто периферия переписана под новое железо и взаимодействие частей переписано под многозадачность. На PIC18 проект занимал в флеше 22 килобайт (без RTOS), со средней оптимизацией На STM32F0 (с FreeRTOS) - 21 килобайт (с максимальной оптимизацией) не реализовал несколько незатратных действий (вроде поддержки еще одного SPI и простой обработки), ну, может, на 1-2 килобайта кода наскребу еще. То есть разницы вообще нет. При всей разнице компиляторов, архитектур и разрядности. А если вспомнить, что в STM32 я еще и RTOS добавил- то вообще получается что код сократился. Так что не все так плохо. Нет причин паниковать. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 24 ноября, 2015 Опубликовано 24 ноября, 2015 · Жалоба Так что не все так плохо. Нет причин паниковать. :) Так паника не про PIC vs STM32. Паника про качество кода от ST и от всех остальных производителей железа. Если писать все по-человечески, то понятно, что все нормально будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 16 24 ноября, 2015 Опубликовано 24 ноября, 2015 · Жалоба Так паника не про PIC vs STM32. Паника про качество кода от ST и от всех остальных производителей железа. Если писать все по-человечески, то понятно, что все нормально будет. Я забыл сказать, что тоже SPL использую в STM32. Говорят, что это почти HAL по избыточности. Ну и ничего. Особых издержек по сравнению с PIC без сторонних библиотек не вижу, так как даже с этими наворотами код плотнее чем у PIC18, мне еще плотней пока не нужно. Будет нужно- начну паниковать и выкидывать SPL. А качество кода- это понятие очень субъективное, у каждого оно свое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drozel 0 25 ноября, 2015 Опубликовано 25 ноября, 2015 · Жалоба Говорят, что это почти HAL по избыточности. Ничего это не HAL. Там как раз, если выкинуть Assert, все довольно компактно. Есть только функции по работе с железом, типа создал структуру с настройками - проинициализировал. В HAL (cube) совершенно другой уровень абстракции. Там за пользователя написаны обработчики прерываний на несколько страниц, проверяющее все возможные флаги, реализующие стейт машины для приемопередатчиков, вызывающие каллбеки пользователя. Для работы со всем этим, само собой, есть уйма функций верхнего уровня. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KSergeyP 0 26 ноября, 2015 Опубликовано 26 ноября, 2015 · Жалоба А SPL для STM где найти/скачать можно? Если не сложно поделитесь ссылочкой Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться