?

Log in

No account? Create an account
Костерок

eddy_em


Емельянов Эдуард Владимирович


Previous Entry Share Next Entry
Вот это поворот...
Костерок
eddy_em
Помаленьку делаю рефакторинг эмулятора PL2303 на STM32F042. Для начала пофиксил баг с отправлением большого буфера. И наткнулся на непонятную штуку: если собрать после make clean, получаю:
   text    data     bss     dec     hex filename
   5548      16    1560    7124    1bd4 mk/pl2303.elf

Теперь просто делаем touch на какой-нибудь сишный файл и опять запускаем make:
   text    data     bss     dec     hex filename
   5548      16    1556    7120    1bd0 mk/pl2303.elf

Что за чудеса в решете? (до этого у меня еще и менялись размеры elf'а и выходного hex'а!)
qt-creator что ли шутит так? (пришлось, кстати, откатиться на 4.6.2, т.к. в 4.8.0. ничего не работает).
P.S. Вот, просто сохранил, поменяв константу, потом поменял обратно и получил:
   text    data     bss     dec     hex filename
   6148      16    1556    7720    1e28 mk/pl2303.elf

UPD Такое впечатление, что у gcc какой-то ccache не обновляется... (хотя, по идее, ccache должно только с emerge работать). Черт подери! Оба бинарника, если прошивать в МК, работают! Несмотря на разницу в размере!!! Да откуда ж эта чертовщина берется-то???

promo eddy_em january 20, 18:17 Leave a comment
Buy for 10 tokens
Пока проводил опыты с чиллером (графики позже выложу), почти закончил свою часть документации. Табличку с настройками драйверов ШД сделаю, когда буду в очередной раз разбирать прибор (забыл сразу эти данные куда-нибудь схоронить). Можно сразу скачать PDF, чтобы не клонировать себе всю репу.

  • 1
а если strip прогнать?

strip: Невозможно определить формат входного файла <<pl2303.elf>>

Сами объектные файлы абсолютно одинакового размера, т.е. размер изменяется на стадии линковки почему-то!

Edited at 2019-04-25 09:00 am (UTC)

там свой strip будет, что нибудь типа PLATFORMA-strip, аналогично PLATFORMA-gcc and etc

А, точно. Выхлоп пустой, нет у меня там символов. Да и не должно быть: это же бинарник для микроконтроллера!

он и долже быть пустым, см размер

$ ll fw.elf
-rwxrwxr-x. 1 mike mike 3165 Apr 25 13:26 fw.elf
$ msp430-strip -s fw.elf
$ ll fw.elf
-rwxrwxr-x. 1 mike mike 300 Apr 25 13:26 fw.elf
$

> (хотя, по идее, ccache должно только с emerge работать)

arm-none-eabi-c++ -> /usr/bin/ccache
arm-none-eabi-g++ -> /usr/bin/ccache
arm-none-eabi-g++-8.3.0 -> /usr/bin/ccache
arm-none-eabi-gcc -> /usr/bin/ccache
arm-none-eabi-gcc-8.3.0 -> /usr/bin/ccache
arm-unknown-linux-gnueabi-c++ -> /usr/bin/ccache
arm-unknown-linux-gnueabi-g++ -> /usr/bin/ccache
arm-unknown-linux-gnueabi-g++-8.3.0 -> /usr/bin/ccache
arm-unknown-linux-gnueabi-gcc -> /usr/bin/ccache
arm-unknown-linux-gnueabi-gcc-8.3.0 -> /usr/bin/ccache

так что надо специально отключать

Глянул у себя - нет у меня симлинков на ccache! Я вообще устанавливал отсюда, т.к. гентушный arm-none-eabi не работает (там какой-то косяк с софтварным делением на STM32F0, поэтому пришлось в /opt развернуть оригинал).
У меня там какая-то старая версия Gcc была (7.3.1), качаю свежую, попробую с ней.

у меня из emerge, да...
про деление не скажу, не собирал ещё толком ничего

Ну, на этот косяк я еще когда только-только начинал работать с STM32F0 напоролся. Сейчас даже не компилится "родным" компилятором:
mk/usb_lib.o: In function `vendor_handler':
/home/eddy/Docs/SAO/ELECTRONICS/STM32/F0-srcs/pl2303/usb_lib.c:176: undefined reference to `__stack_chk_fail'
/home/eddy/Docs/SAO/ELECTRONICS/STM32/F0-srcs/pl2303/usb_lib.c:176: undefined reference to `__stack_chk_guard'
mk/usb.o: In function `EP1_Handler':
/home/eddy/Docs/SAO/ELECTRONICS/STM32/F0-srcs/pl2303/usb.c:48: undefined reference to `__stack_chk_fail'
/home/eddy/Docs/SAO/ELECTRONICS/STM32/F0-srcs/pl2303/usb.c:48: undefined reference to `__stack_chk_guard'
mk/main.o: In function `main':
/home/eddy/Docs/SAO/ELECTRONICS/STM32/F0-srcs/pl2303/main.c:117: undefined reference to `__stack_chk_guard'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1

ХЗ, чего ему надо, опция -fno-stack-protector на это никакого действия не оказывает.

тоже из локальной сборки зачем-то делал руками, не помню уже зачем


gcc version 8.2.1
sys/gcc-arm-none-eabi-8-2018-q4-major/bin/arm-none-eabi-size init.elf
text data bss dec hex filename
8917 168 1148 10233 27f9 init.elf


но оказалось и из коробки emerge тоже с небольшой разницой в размере (версии gcc разные)


/usr/x86_64-pc-linux-gnu/arm-none-eabi/gcc-bin/8.3.0/arm-none-eabi-size init.elf
text data bss dec hex filename
9082 532 1136 10750 29fe init.elf


arm-unknown-linux-gnueabi-gcc - что то я там с nano не смог собрать, не помню уже, да вообще я ламер в тулзах этих чем что от чего отличается и не знаю даже

  • 1