Coocox - объем кода и обшибка компиляции.

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
deemchik
Родился
Сообщения: 18
Зарегистрирован: Ср мар 13, 2013 22:50:19
Откуда: хкто его знает

Coocox - объем кода и обшибка компиляции.

Сообщение deemchik »

Я начинающий, решил перейти с avr-ов на stm32 и только учусь. :) ( Девайс - STM32F030F4P6. Программатор S-Tlink v2.)
Подскажите, может чего-то не так делаю...
В общем, скачал кокос с сайта версию 1.7.6, установил. Скачал и установил gcc-arm-none-eabi-5_4-2016q2-20160622-win32. В кокосе указал путь компилятора (toolchaine path). В настройках проэкта уровень оптимизации выбрал -Os. Остальные галочки/флажки не трогал. Вернее трогал но, ничего на дало кроме увеличения объема, поэтому вернул назад как было.
Config->Link: галочки Use Memory Layout from..., Discard unused sections, Dont use the standard system startup files. Library= Not use C Library. Все остальное по умолчанию.
Создал пустой проэкт, и перенес из кеила исходники. В загаловках указал инклуды. Компилирую выдает ошибку.

Код: Выделить всё

c:/arm/coocox/5.4 2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: test.elf section `.text' will not fit in region `rom'
       [cc] sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
       [cc] c:/arm/coocox/5.4 2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv6-m\libg.a(lib_a-sbrkr.o): In function `_sbrk_r':
       [cc] c:/arm/coocox/5.4 2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: region `rom' overflowed by 13916 bytes
       [cc] collect2.exe: error: ld returned 1 exit status
1. Вылетает ошибка. Я так понял причина в section `.text' will not fit in region `rom' и возможно в region `rom' overflowed by 13916 bytes Хотя в кеиле компилится нормально.
2. Почему этот же проэкт откомпиленный в кейле (V4.74) занимает намного меньше объема!!!???
Program Size: Code=5958 RO-data=314 RW-data=112 ZI-data=1040

Ps. В кокос решил перейти, потому как в кейле у меня возникают проблемы во время дебага (но это другая история и отдельная тема). Да и в кокосе, как говорят объем кода должен быть меньше.
(кокосовский проэкт - черновик прикрепил)
Вложения
test.rar
(128.26 КБ) 261 скачивание
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Coocox - объем кода и обшибка компиляции.

Сообщение Reflector »

deemchik писал(а): 2. Почему этот же проэкт откомпиленный в кейле (V4.74) занимает намного меньше объема!!!???
Кокосом не пользуюсь, но если тебе нужны всякие sprintf, то почитай как подключить библиотеку newlib-nano вместо стандартной.
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Coocox - объем кода и обшибка компиляции.

Сообщение Мурик »

Кокосом не пользуюсь, но в EmBitz проект нормально собрался.

Код: Выделить всё

Program size (bytes):    6852
Data size    (bytes):     108
BSS size     (bytes):     112

Total size   (bytes):    7072   (R/W Memory: 220)

=== Сборка закончена: 0 errors, 0 warnings (0 minutes, 2 seconds) ===
Вложения
Test.zip
(337.68 КБ) 236 скачиваний
deemchik
Родился
Сообщения: 18
Зарегистрирован: Ср мар 13, 2013 22:50:19
Откуда: хкто его знает

Re: Coocox - объем кода и обшибка компиляции.

Сообщение deemchik »

Reflector писал(а):но если тебе нужны всякие sprintf
Блиииин а слона то я и не заметил! :) sprintf!!! Выле-тело из головы! Убрал, размер кода стал
4440, 0, 80, 4520 11a8. Спасибо!!! Пошел разбираться, повыскакивали другие глюки, тех, что в кеиле на было.
Реклама
Эиком - электронные компоненты и радиодетали
deemchik
Родился
Сообщения: 18
Зарегистрирован: Ср мар 13, 2013 22:50:19
Откуда: хкто его знает

Re: Coocox - объем кода и обшибка компиляции.

Сообщение deemchik »

Мурик писал(а):Кокосом не пользуюсь, но в EmBitz проект нормально собрался.
Хм. EmBitz - Вы о нем упоминаете 2-й раз, а я из выду выпускаю. Пойду-ка посмотрю с чем его едят...
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Coocox - объем кода и обшибка компиляции.

Сообщение Мурик »

Reflector писал(а):всякие sprintf
Кстати да, в EmBitz компилируется потому что по умолчанию sprintf не поддерживает float. Если же в настройках линкера отметить "Use float printf with Nano-branch" то уже не создается прошивка.

Код: Выделить всё

region `ROM' overflowed by 4736 bytes
=== Сборка закончена: 2 errors, 0 warnings (0 minutes, 2 seconds) ===
Думаю всем изместно что в STM32F030F4P6 на самом деле 32 КБ flash :) и небольшая коррекция файла stm32f030f4_flash.ld

Код: Выделить всё

ROM  (rx) : ORIGIN = 0x08000000, LENGTH = 32K
позволит использовать всю память. :)

Код: Выделить всё

Program size (bytes):   21120
Data size    (bytes):     164
BSS size     (bytes):     112

Total size   (bytes):   21396   (R/W Memory: 276)
=== Сборка закончена: 0 errors, 0 warnings (0 minutes, 3 seconds) ===
Наверняка в кокосе можно сделать тоже самое (либо отключить поддержку float для printf, либо увеличить доступную память до 32 КБ, или то и другое). :)
Реклама
deemchik
Родился
Сообщения: 18
Зарегистрирован: Ср мар 13, 2013 22:50:19
Откуда: хкто его знает

Re: Coocox - объем кода и обшибка компиляции.

Сообщение deemchik »

keil тоже раздувает sprintf если в коде встретиться %f. Этот случай меня и отвлек при копипасте в кокос.
А вот о flash в 32kb это уже для меня новость! Спасибо за "открытие"!!! Я чуть больше месяца с стм-ми воюю. Пытаюсь проэкт от mega8 пересилить с мудификацией. Пришлось менять/допиливать работу с ds18b20, находил только 1 уст-во. Но после добавления обработки кнопок, начались непонятки с переменными. Потому и решил параллельно пробовать в кокосе или... (в air что-то не пошло,не стал разбираться) скорее тот же sprintf.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Coocox - объем кода и обшибка компиляции.

Сообщение Мурик »

deemchik писал(а):А вот о flash в 32kb это уже для меня новость!
Тогда еще скажу что в STM32F030F4P6 есть таймер Tim2 о котором ни слова в даташите. Похоже что STM32F030F4P6 на самом деле это STM32F031F6P6. :))) Такие недокументированные возможности не редкость в STM32 http://we.easyelectronics.ru/pteriks/re ... stm32.html
deemchik писал(а):Пытаюсь проэкт от mega8 пересилить с мудификацией. Пришлось менять/допиливать работу с ds18b20
Возможно имеет смысл изменить метод работы с 1-Wire, подключив его к USART. Эта тема не раз обсуждалась http://we.easyelectronics.ru/STM32/stm3 ... e-dma.html
Адаптированный код для STM32F030F4P6 :) http://purebasic.mybb.ru/viewtopic.php?id=574
deemchik
Родился
Сообщения: 18
Зарегистрирован: Ср мар 13, 2013 22:50:19
Откуда: хкто его знает

Re: Coocox - объем кода и обшибка компиляции.

Сообщение deemchik »

Мурик писал(а): есть таймер Tim2 о котором ни слова в даташите.
Таки да в даташите ни намека. А в keil в файле stm32f0xx_tim, конкретно сказано :))
  • * @brief Initializes the TIMx Time Base Unit peripheral according to
    * the specified parameters in the TIM_TimeBaseInitStruct.
    * @param TIMx: where x can be 1, 2, 3, 6, 7, 14, 15, 16 and 17 to select the TIM
    * peripheral.
    * @note TIM7 is applicable only for STM32F072 devices
    * @note TIM6 is not applivable for STM32F031 devices.
    * @note TIM2 is not applicable for STM32F030 devices.
    * @param TIM_TimeBaseInitStruct: pointer to a TIM_TimeBaseInitTypeDef
    * structure that contains the configuration information for
    * the specified TIM peripheral.
    * @retval None
А в кокосовском stm32f0xx_tim - тоже ни слова :)
Возможно имеет смысл изменить метод работы с 1-Wire, подключив его к USART. Эта тема не раз обсуждалась
Да-да, я эту тему первую проштудировал. Но засомневался из-за объема кода, USART, DMA, побоялся, что не впишусь в 16к. А благодаря Вашей последней ссылке, все-таки попробую.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Coocox - объем кода и обшибка компиляции.

Сообщение dosikus »

Без спл и калокуб влезет и дма и усарт и фатфс и еще до хрена чего.
Ответить

Вернуться в «ARM»