|
Не используемые функции, Keil |
|
|
|
Nov 23 2015, 14:22
|
Частый гость
 
Группа: Участник
Сообщений: 155
Регистрация: 30-06-10
Пользователь №: 58 210

|
Цитата(KnightIgor @ Nov 23 2015, 16:43)  Смотрите внимательно файл карты памяти. Поищите слово remove. Не все так страшно. Но если хоть где в проекте есть printf, это тянет за собой сразу много чего. В том то и дело что ничего нет. Только конфигурация GPIO из стандартной библиотеки которая подключается при создании проекта из STM куба
Сообщение отредактировал Matic - Nov 23 2015, 14:23
|
|
|
|
|
Nov 23 2015, 14:33
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(Matic @ Nov 23 2015, 15:22)  В том то и дело что ничего нет. Только конфигурация GPIO из стандартной библиотеки которая подключается при создании проекта из STM куба Киньте MAP файл. P.S. Попробуйте установить птичку "One ELF Section per Function" в опциях проекта, закладка C/C++, и перекомпилировать.
Сообщение отредактировал KnightIgor - Nov 23 2015, 15:12
|
|
|
|
|
Nov 23 2015, 15:59
|
Частый гость
 
Группа: Участник
Сообщений: 155
Регистрация: 30-06-10
Пользователь №: 58 210

|
Цитата(KnightIgor @ Nov 23 2015, 17:33)  Киньте MAP файл.
map.txt ( 47.99 килобайт )
Кол-во скачиваний: 405Птичька уже стояла по умолчанию да... конфигурация тактироания весит 1176. Походу дело не в компиляторе. Просто библиотека ФУНКЦИЙ ИНИЦИАЛИЗАЦИИ СЪЕДАЮТ 3000БАЙТ!!!!! Чего они там инициализируют на столько флеши  Похоже эта CMSIS универсальная для всех ARM-ов от ST отсюда и такая раздутость. За переносимость кода платить флешью  Надо ручками инициализировать прям в регистры, всётаки не ПК память надо экономить, её не так много в STM32F030 всего 16К, если на инициализацию 3 тратить, то что дальше будет  Еще один вопрос: как быстро перейти на описание переменной/функции. Опять же привык что во всех современных компиляторах(по крайней мере с которыми мне приходилось работать) Ctrl + ЛМ и попадаешь на инициализацию. В Keil пока нашёл только в контекстном меню, но это как то не очень удобно. Можно ли настроить где-то?
Сообщение отредактировал Matic - Nov 23 2015, 15:55
|
|
|
|
|
Nov 23 2015, 16:45
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(Matic @ Nov 23 2015, 16:59)  Еще один вопрос: как быстро перейти на описание переменной/функции. Опять же привык что во всех современных компиляторах(по крайней мере с которыми мне приходилось работать) Ctrl + ЛМ и попадаешь на инициализацию. В Keil пока нашёл только в контекстном меню, но это как то не очень удобно. Можно ли настроить где-то? В Кайле можно все горячие клавиши (но не мышь) переназначить. Для перехода к описанию: Edit -> Configuration -> Shortcut Keys -> см. Edit: Advanced: Go to Definition of Current Word. Цитата(Matic @ Nov 23 2015, 16:59) 
map.txt ( 47.99 килобайт )
Кол-во скачиваний: 405да... конфигурация тактироания весит 1176. Походу дело не в компиляторе. Просто библиотека ФУНКЦИЙ ИНИЦИАЛИЗАЦИИ СЪЕДАЮТ 3000БАЙТ!!!!! Чего они там инициализируют на столько флеши  Действительно, много. Я глянул свой проект на F051, так у меня 432 байта... Но не HAL, а STL. Код 432 58 0 16 0 376 stm32f0xx_rcc.o
Сообщение отредактировал KnightIgor - Nov 23 2015, 16:47
|
|
|
|
|
Nov 24 2015, 06:15
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(Matic @ Nov 23 2015, 20:59)  да... конфигурация тактироания весит 1176. Походу дело не в компиляторе. Просто библиотека ФУНКЦИЙ ИНИЦИАЛИЗАЦИИ СЪЕДАЮТ 3000БАЙТ!!!!!  Для интереса глянул на свое для STM32F103 Управление и универсальная функция инициализация (ноги) GPIO - 196/332* байта ПЗУ Управление всем тактированием - 356/520* Драйвер UART (без DMA, на все каналы) - 856/1132* FreeRTOS - 4150/3318* *(оптимизация вкл/выкл) Конечно, пока не жмет, или очень быстро надо сделать/попробовать - можно и куб. Иногда помогает понять, почему собственный код не работает.
|
|
|
|
|
Nov 24 2015, 20:11
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Про размер кода: я тут проектик несложный с PIC на STM32 перевожу. Расчетная часть( много с плавающей точкой) и всякие конечные автоматы те же, просто периферия переписана под новое железо и взаимодействие частей переписано под многозадачность. На PIC18 проект занимал в флеше 22 килобайт (без RTOS), со средней оптимизацией На STM32F0 (с FreeRTOS) - 21 килобайт (с максимальной оптимизацией) не реализовал несколько незатратных действий (вроде поддержки еще одного SPI и простой обработки), ну, может, на 1-2 килобайта кода наскребу еще. То есть разницы вообще нет. При всей разнице компиляторов, архитектур и разрядности. А если вспомнить, что в STM32 я еще и RTOS добавил- то вообще получается что код сократился. Так что не все так плохо. Нет причин паниковать.
|
|
|
|
|
Nov 25 2015, 05:00
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 2-02-11
Пользователь №: 62 650

|
Цитата(Ruslan1 @ Nov 25 2015, 02:39)  Говорят, что это почти HAL по избыточности. Ничего это не HAL. Там как раз, если выкинуть Assert, все довольно компактно. Есть только функции по работе с железом, типа создал структуру с настройками - проинициализировал. В HAL (cube) совершенно другой уровень абстракции. Там за пользователя написаны обработчики прерываний на несколько страниц, проверяющее все возможные флаги, реализующие стейт машины для приемопередатчиков, вызывающие каллбеки пользователя. Для работы со всем этим, само собой, есть уйма функций верхнего уровня.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|