klen 1 19 марта, 2014 Опубликовано 19 марта, 2014 · Жалоба Я могу выслать вам .lss своего загрузчика собранного разными версиями. LTO не использую. Ниодна версия "свежака" с включенным lto, мои проекты собрать не может. Включение LTO на "рабочей" версии заканчивается примерно так же, падает с внутренней ошибкой. кто падает? компиллер при линковке проекта? как включаете и выключаете LTO? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 19 марта, 2014 Опубликовано 19 марта, 2014 · Жалоба кто падает? компиллер при линковке проекта? ага как включаете и выключаете LTO? Как было написано в этой ветке выше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 28 марта, 2014 Опубликовано 28 марта, 2014 · Жалоба Попробовал arm-kgp-eabi-mingw64-20130224-PROCYON.7z Не собирается( compile. main.o d:/gcc/arm-kgp-eabi-procyon/bin/arm-kgp-eabi-gcc -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -fpack-struct -Wpadded -g -Os -I . -I d:/gcc/lib/stm32/inc -gdwarf-2 -c main.c -o main.o linker.. d:/gcc/arm-kgp-eabi-procyon/bin/arm-kgp-eabi-gcc -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--gc-sections,-Map=test_fp_v1.ite2.elf.map,-cref,-u,Reset_Handler -I . -I d:/gcc/lib/stm32/inc -L . -L d:/gcc/arm-kgp-eabi-procyon/arm-kgp-eabi/lib/thumb/cortex-m4f -T STM32F407VG.ld main.o --output test_fp_v1.ite2.elf d:/gcc/arm-kgp-eabi-procyon/bin/../lib/gcc/arm-kgp-eabi/4.9.0/../../../../arm-kgp-eabi/bin/ld.exe: error: main.o uses VFP register arguments, test_fp_v1.ite2.elf does not d:/gcc/arm-kgp-eabi-procyon/bin/../lib/gcc/arm-kgp-eabi/4.9.0/../../../../arm-kgp-eabi/bin/ld.exe: failed to merge target specific data of file main.o Не подскажите, что мы обычно делаем в таком случае? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 29 марта, 2014 Опубликовано 29 марта, 2014 · Жалоба Попробовал arm-kgp-eabi-mingw64-20130224-PROCYON.7z Не собирается( Не подскажите, что мы обычно делаем в таком случае? давайте начнем с того что линеру не будем передавать опцию с путем до системных либ - это не нужно и вредно поскольку комбинация ключей позволяет ему самому решить где брать libc libm libgcc и тд. удалите в опциях линкера -L d:/gcc/arm-kgp-eabi-procyon/arm-kgp-eabi/lib/thumb/cortex-m4f косяг в том что происходит попытка слинковать объектники и либы собранные под разные fpu, осталось понять как у линкера возникло такое желание еще гипотеза - если я при сборке архива накасячил то возможно папка -L d:/gcc/arm-kgp-eabi-procyon/arm-kgp-eabi/lib/thumb/cortex-m4f пуста и в током случае линкер вынужден брать либы из корня d:/gcc/arm-kgp-eabi-procyon/arm-kgp-eabi/lib а там либы собранные бе поддержки фпу. в понедельник решим эту беду. подождите сутки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 29 марта, 2014 Опубликовано 29 марта, 2014 · Жалоба давайте начнем с того что линеру не будем передавать опцию с путем до системных либ - это не нужно и вредно поскольку комбинация ключей позволяет ему самому решить где брать libc libm libgcc и тд. удалите в опциях линкера -L d:/gcc/arm-kgp-eabi-procyon/arm-kgp-eabi/lib/thumb/cortex-m4f косяг в том что происходит попытка слинковать объектники и либы собранные под разные fpu, осталось понять как у линкера возникло такое желание еще гипотеза - если я при сборке архива накасячил то возможно папка -L d:/gcc/arm-kgp-eabi-procyon/arm-kgp-eabi/lib/thumb/cortex-m4f пуста и в током случае линкер вынужден брать либы из корня d:/gcc/arm-kgp-eabi-procyon/arm-kgp-eabi/lib а там либы собранные бе поддержки фпу. в понедельник решим эту беду. подождите сутки. Пути убрал - ничего не поменялось. Меня больше напрягает: "error: main.o uses VFP register arguments, test_fp_v1.ite2.elf does not". Это как понимать: "*.elf не использует"? Видно, что до библиотек дело не доходит. Там бало бы что-то типа "failed to merge target specific data of file d:/gcc/arm-kgp-eabi-x86_64/arm-kgp-eabi/lib/thumb/cortex-m3\libc.a(lib_a-__call_atexit.o)". Вот еще пример, с одной из предыдущих версий умышленно линкуемых с либами для М3: "error: test_fp_v1.ite2.elf uses VFP register arguments, d:/gcc/arm-kgp-eabi-x86_64/arm-kgp-eabi/lib/thumb/cortex-m3\libc.a(lib_a-__call_atexit.o) does not". Теперь *.elf использует, а либа правильно не использует. У меня же наооборот) Думаю, не хватает чего-то, что заставит линкер ипользовать fpu-шные регистры при сборке. Я могу ошибаться, но может линкер "нерабочий", а не библиотеки? Ради эксперимента подсунул новые либы старому компилятору - вроде скомпилировался проект и даже работает. Со старым (рабочим) компилятором я получаю аналогичную ошибку, если указываю -mcpu=cortex-m3 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb. Странно, что компилируется все без ошибок, но линкер выдает: "error: main.o uses VFP register arguments, test_fp_v1.ite2.elf does not". Причем, можно компилятору указать M3, а линкеру М4 - все собирется и будет работать. До понедельника доживу. Я бы и не стал переходить на новую сборку, если бы не обнаружил, что в старых при записи, например, USART1->DR = x вместо операции "запись" происходит "чтение-запись". Причем, это самое чтение сбрасывает флаги в регистре статуса (у STM32). DR объявлен как vu16, если заменить на vu8, то лишнего "чтения" не происходит. В новой версии поведение правильное, поэтому и решился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 30 марта, 2014 Опубликовано 30 марта, 2014 · Жалоба До понедельника доживу. Я бы и не стал переходить на новую сборку, если бы не обнаружил, что в старых при записи, например, USART1->DR = x вместо операции "запись" происходит "чтение-запись". Причем, это самое чтение сбрасывает флаги в регистре статуса (у STM32). DR объявлен как vu16, если заменить на vu8, то лишнего "чтения" не происходит. В новой версии поведение правильное, поэтому и решился. жесть какая то я не тестирую сборки для масдая - это адь. мож на линух перескочите, забудите про кучи гиммароев? нешел масдай - проверил сборку. пробывал на своем текущем проекте: компиляция и линковка arm-kgp-eabi-g++ -std=c++11 -D__CORTEX_M4F__ -D__STM32F405RGT6__ -D__STM32F4XX__ -DARM_MATH_CM4 -D__FPU_USED=1 -DSTM32F405xx -DSTM32F40_41xxx -D__VOLKOV_STM32F405_V2__ -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -mthumb -Os -fomit-frame-pointer -finline-functions -ffunction-sections -fdata-sections -fgraphite -funroll-loops -Wp,-M,-MP,-MT,main.o,-MF,.dep/main.o.dep -W -Wall -Wno-unused-parameter -ggdb3 -I.././../../SDK_embedded/libs/common -fno-exceptions -fno-rtti -I./ -I.././include -I.././../../SDK_embedded/libs/st/stm32/f4xx/StdPeriph_Driver -I.././../../SDK_embedded/libs/st/stm32/f4xx/crt -I.././../../SDK_embedded/libs/st/stm32/f4xx/../CMSIS -I.././../../SDK_embedded/libs/st/stm32/f4xx/CMSIS -I.././../../SDK_embedded/libs/tlsf-2.4.6 -I.././../../SDK_embedded/libs/readline -I.././../../SDK_embedded/libs/utils -I.././../../SDK_embedded/libs/console -I.././../../SDK_embedded/libs/FreeRTOS/Source/include -I.././../../SDK_embedded/libs/FreeRTOS/Source/portable/GCC/ARM_CM4F -I.././../../SDK_embedded/libs/mmgr -I.././../../SDK_embedded/libs/vmath -DUSE_STDPERIPH_DRIVER -D__USE_FREERTOS__ -DF_OCS=8000000 -DRAM_VEC_TABLE=0 -DUSE_USB_OTG_FS -DUSE_EMBEDDED_PHY -DUSE_OTG_MODE -DF_OSC=8000000 -DOSC_TYPE=1 -DTICK_RATE_HZ_DEFAULT=1000UL -DMAX_PRIORITIES=4UL -DMINIMAL_STACK_SIZE=64UL -DMAX_TASK_NAME_LEN=16UL -c -o main.o main.cc arm-kgp-eabi-g++ -T .././../scripts/matrix3d_demo.ld -fuse-linker-plugin -nostartfiles -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -mthumb -Os -fomit-frame-pointer -finline-functions -ffunction-sections -fdata-sections -fgraphite -funroll-loops -ggdb3 -L.././../lib -Wl,-gc-sections -Wl,--start-group debug_led.o main.o -lmmgr -ltlsf -lfreertos_kernel -lfreertos_portable -lutils -lcrt -lcmsis -lhardware -lvmath -Wl,--end-group -o .././../out/image.elf -Wl,-Map,.././../out/image.map собираеццо и не ругается. я покане понял в чем у Вас проблема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 30 марта, 2014 Опубликовано 30 марта, 2014 · Жалоба adnega@NEWSRV:~/temp/test_nand$ ~/temp/arm-kgp-eabi-procyon/bin/arm-kgp-eabi-gcc --version arm-kgp-eabi-gcc (Klen's GNU package (KGP) for ARM/elf platform. << PROCYON >>) 4.9.0 20140224 (experimental) Copyright © 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. adnega@NEWSRV:~/temp/test_nand$ make all compile main.o ~/temp/arm-kgp-eabi-procyon/bin/arm-kgp-eabi-gcc -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -fpack-struct -Wpadded -g -Os -I . -I ./inc -gdwarf-2 -c main.c -o main.o main.c: In function ‘main’: main.c:174:2: internal compiler error: Недопустимая инструкция volatile float x = 3.14f; ^ Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. make: *** [main.o] Ошибка 1 Под Distributor ID: Ubuntu Description: Ubuntu 13.10 Release: 13.10 Codename: saucy На той же системе с другой версией собирается. root@NEWSRV:/home/adnega/temp/test_nand# /home/adnega/temp/arm-kgp-eabi-20130623/bin/arm-kgp-eabi-gcc --version arm-kgp-eabi-gcc (Klen's GNU package (KGP) for ARM/elf platform. << Fedor Konyukhov / Antarctica Cup Race Track 2008 >> ) 4.9.0 20130622 (experimental) Copyright © 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 30 марта, 2014 Опубликовано 30 марта, 2014 · Жалоба пересоберу еще... посмотрим что получттся Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 31 марта, 2014 Опубликовано 31 марта, 2014 · Жалоба Попробовал в виртуалке (ubuntu 12.10) - с последней версий все собирается. На железном сервере (ubuntu 13.10) - уже писал, что нет (internal compiler error). Могу дать удаленный доступ к "плохой" ubunte, но к сожалению, по личным причинам сейчас не до экспериментов (жена и дочка в больницу попали). Сам второй-третий год собираюсь с windows "спрыгнуть". Уже все компы, включая нетбук и десктоп жены, перевел на linux - остался последний ноутбук-кормилец (нужен для работы). Нашел HDD для ноутбука - попробую временно на нем развернуть все необходимые инструменты. Итого: если у меня одного проблемы, то беру таймаут на их разрешение + сделаю тестовый проект. Если, klen, есть желание и возможность поразбираться с internal compiler error, то могу дать учетку для удаленного подключения (ssh). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 31 марта, 2014 Опубликовано 31 марта, 2014 · Жалоба давайте аккаунт, хоца посмотреть в чем косяг.. по идее падать не должно статически собираю.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 2 апреля, 2014 Опубликовано 2 апреля, 2014 · Жалоба давайте аккаунт, хоца посмотреть в чем косяг.. по идее падать не должно статически собираю.... Отправил в личку Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 4 апреля, 2014 Опубликовано 4 апреля, 2014 · Жалоба Про lto. Проект на sam7. Чтобы всё впихнуть компилирую всё, что можно в thumb. С включением lto вылазит ошибка: .../cpu/Devices/adcISR.cpp: In function 'adcirq': .../cpu/Devices/adcISR.cpp:73:2: error: interrupt Service Routines cannot be coded in Thumb mode Что-нибудь сделать можно? P. S. это не на последнем "свежаке", но такой сообщение было и на какой-то версии "свежака", просто забыл написать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 4 апреля, 2014 Опубликовано 4 апреля, 2014 (изменено) · Жалоба У sam7 обработчики прерываний только в ARM режиме. а без смешивания thumb и arm может даже немного компактнее получиться, если от interoperability отказаться в ключах. а LTO здорово помогало... Не забываете линкеру ключи передать? Может, тогда и влезет? Изменено 4 апреля, 2014 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 4 апреля, 2014 Опубликовано 4 апреля, 2014 (изменено) · Жалоба Выключил thumb. Пришлось пропатчить макросы freertos (возникла ошибка Error: invalid literal constant: pool needs to be closer, патч на сайте). Результат получился интересный: .../arm-none-eabi/bin/ld: cpu.elf section `.text' will not fit in region `MAINPROG' .../arm-none-eabi/bin/ld: region `MAINPROG' overflowed by 427461 bytes Для смеха поправил скрипт линкера, компилилось нормально, только размер в 4-ре раза больше чем без lto. Проверить на работоспособность не могу, в контроллере всего 256к флеша Изменено 4 апреля, 2014 пользователем Terminator Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 4 апреля, 2014 Опубликовано 4 апреля, 2014 · Жалоба -Os -flto должны идти и линкеру. Я говорил не про убирание -flto, а про убирание -mthumb-interwork Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться