Easyelectronics.ru

Электроника для всех
Текущее время: 23 июн 2018, 09:16

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: STM8 + COSMIC Как узнать размер прошивки? И УМЕНЬШИТЬ!
СообщениеДобавлено: 08 ноя 2017, 17:00 
Заглядывает иногда

Зарегистрирован: 19 июн 2013, 16:35
Сообщения: 41
UPD: Решено! viewtopic.php?p=524609#p524609

Собственно использую (вернее хочу) STM8s103F3 (8kb памяти) но пока суть да дело и платки не готовы код пишу на более крупном камне с 32кБ памяти, решил посмотреть размер прошивки и... в общем не так это оказалось просто, в *.map файле (способ описан тут: http://myowndevice.ru/index.php/theory/ ... aniya-stm8 ) есть данные:
Код:
                               --------
                               Segments
                               --------

start 00008080 end 000080aa length    42 segment .const
start 000080bf end 00009c26 length  7015 segment .text
start 00009c28 end 00009c28 length     0 segment .TSL_IO_ALCODE
start 00004000 end 00004000 length     0 segment .eeprom
start 00000000 end 0000000d length    13 segment .bsct, initialized
start 000080b2 end 000080bf length    13 segment .bsct, from
start 0000000d end 00000021 length    20 segment .ubsct
start 00000021 end 00000021 length     0 segment .bit
start 00000021 end 00000021 length     0 segment .share
start 00000100 end 00000100 length     0 segment .data
start 00000100 end 00000100 length     0 segment .bss
start 00000000 end 0000087b length  2171 segment .info.
start 00000000 end 0000c567 length 50535 segment .debug
start 00008000 end 00008080 length   128 segment .const
start 000080aa end 000080b2 length     8 segment .init


Но насколько они верну? Например секция .text довольно большая, смотрим кто в ней что отожрал:
Код:
Debug\stm8s_tim1.o:
start 00008c2b end 0000949b length  2160 section .text
start 00003f00 end 00007e4b length 16203 section .debug
start 000001e2 end 00000273 length   145 section .info.
Выходит стандартная библиотечная функция, которые я не вызываю (!!!), почему они оказались в прошивке? Взял удалил тела пары функций из тех, что не использую и ни разу не вызываю, пересобрал и размер секции изменился!
Код:
Debug\stm8s_tim1.o:
start 00008c2b end 00009344 length  1817 section .text
start 00003f00 end 000078e9 length 14825 section .debug
start 000001e2 end 00000273 length   145 section .info.
Почему даже при включенной оптимизации на минимальный код в прошивку попадают не используемые фрагменты? или же размер прошивки по MAP файлу нельзя смотреть, тогда как?


Последний раз редактировалось zwitch 08 ноя 2017, 21:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC + STVD Как узнать размер прошивки?
СообщениеДобавлено: 08 ноя 2017, 18:22 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 612
Откуда: Челябинск
zwitch писал(а):
Собственно использую (вернее хочу) STM8s103F3 (8kb памяти) но пока суть да дело и платки не готовы код пишу на более крупном камне с 32кБ памяти, решил посмотреть размер прошивки и... в общем не так это оказалось просто, в *.map файле (способ описан тут: http://myowndevice.ru/index.php/theory/ ... aniya-stm8 ) есть данные:
Show
Почему даже при включенной оптимизации на минимальный код в прошивку попадают не используемые фрагменты? или же размер прошивки по MAP файлу нельзя смотреть, тогда как?
Отключите в проекте генерацию отладочного кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC + STVD Как узнать размер прошивки?
СообщениеДобавлено: 08 ноя 2017, 21:14 
Заглядывает иногда

Зарегистрирован: 19 июн 2013, 16:35
Сообщения: 41
Bill писал(а):
Отключите в проекте генерацию отладочного кода.
К секциям .debug и .info (там и стоит отладочное все) претензий нет, тут все очевидно, да и в микроконтроллер это все не пишется, вопрос по секции .text которая и есть сам скомпилированный бинарный код.


Последний раз редактировалось zwitch 08 ноя 2017, 22:07, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC + STVD Как узнать размер прошивки?
СообщениеДобавлено: 08 ноя 2017, 21:32 
Заглядывает иногда

Зарегистрирован: 19 июн 2013, 16:35
Сообщения: 41
проблема заключается в том, что компилятор C Compiler for STM8 (COSMIC Software) Parser V4.11.10 - 06 Jul 2017 почему то не в режиме без оптимизации не в режиме с оптимизацией по размеру кода почему то компилирует и добавляет в прошивку абсолютно весь код, даже если он никогда не вызывается! то есть прилинковали вы STM8S_StdPeriph_Driver V2.2.0 (как я) вызвали из нее пару функций, а в прошивку компилятор с настойчивостью не понятной сует код всех, ВООБЩЕ всех функций что есть в библиотеке...

Вот что он включает в прошивку:
Show *.map


А вот что если выкинуть весь мертвый код, код который никогда не вызывается:
Show *.map


Разница огромная!!! Как видно в первом случаи весь код stm8s_tim1.o всунут в прошивку (2 кБ), а во втором, то что не вызывается, то исключается (0,4 кБ)!!!
Что бы включить режим этот достаточно в настройках установить опцию "Split Functions in Sections (+split)"

Вложение:
Split Functions in Sections.jpg
Split Functions in Sections.jpg [ 48.92 Кб | Просмотров: 1616 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC Как узнать размер прошивки? И УМЕНЬШИТЬ!
СообщениеДобавлено: 08 ноя 2017, 23:36 
Старожил
Аватара пользователя

Зарегистрирован: 13 май 2010, 01:32
Сообщения: 940
Откуда: Ижевск
Почему это не включено по-умолчанию ?
Может написать криворуким ?

_________________
Attiny13aПо20р.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC Как узнать размер прошивки? И УМЕНЬШИТЬ!
СообщениеДобавлено: 09 ноя 2017, 00:01 
Старожил

Зарегистрирован: 18 июл 2016, 21:17
Сообщения: 746
Не, а может пользователь будет эти функции вызывать по указателю, с терминала? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC Как узнать размер прошивки? И УМЕНЬШИТЬ!
СообщениеДобавлено: 09 ноя 2017, 01:26 
Старожил
Аватара пользователя

Зарегистрирован: 13 май 2010, 01:32
Сообщения: 940
Откуда: Ижевск
да тупизм это самый обыкновинный -криворукизм

_________________
Attiny13aПо20р.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC Как узнать размер прошивки? И УМЕНЬШИТЬ!
СообщениеДобавлено: 30 янв 2018, 08:09 
Только пришел

Зарегистрирован: 24 июн 2015, 10:06
Сообщения: 6
Возможно я что-то делаю не так, но заметил, что если переменные в eeprom объявлять с адресом, например:
@eeprom u8 INModeEE @0x4000;
то они не отображаются в файле *.map (start 00004000 end 00004000 length 0 segment .eeprom),
но программа работает как надо, всё запоминается.
Объявляешь без адреса - в этой строке появляется число занятых байт.
Это глюк от ST?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC Как узнать размер прошивки? И УМЕНЬШИТЬ!
СообщениеДобавлено: 30 янв 2018, 16:17 
Заглядывает иногда

Зарегистрирован: 19 июн 2013, 16:35
Сообщения: 41
MikeF писал(а):
Это глюк от ST?
Просто когда вы указываете адрес сами, или делаете вставки на ассемблере, то считается что всю полноту ответственности вы берете на себя сами, и сами знаете что делаете, так что линковщик вам о ваших выдумках уже ничего не сообщает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC Как узнать размер прошивки? И УМЕНЬШИТЬ!
СообщениеДобавлено: 30 янв 2018, 23:42 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 4746
Самый действенный метод- не использовать спл.
И во всю юзать мощь периферии...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC Как узнать размер прошивки? И УМЕНЬШИТЬ!
СообщениеДобавлено: 31 янв 2018, 06:17 
Только пришел

Зарегистрирован: 24 июн 2015, 10:06
Сообщения: 6
zwitch писал(а):
MikeF писал(а):
Это глюк от ST?
Просто когда вы указываете адрес сами, или делаете вставки на ассемблере, то считается что всю полноту ответственности вы берете на себя сами, и сами знаете что делаете, так что линковщик вам о ваших выдумках уже ничего не сообщает.
Похоже на то, хотя это не совсем удобно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 + COSMIC Как узнать размер прошивки? И УМЕНЬШИТЬ!
СообщениеДобавлено: 31 янв 2018, 06:18 
Только пришел

Зарегистрирован: 24 июн 2015, 10:06
Сообщения: 6
dosikus_2 писал(а):
Самый действенный метод- не использовать спл.
И во всю юзать мощь периферии...
Поясните вашу мысль, как это связано с подсчетом занимаемой памяти?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB