|
|
  |
свежак KGP win32/arm/avr/mips/m68k, GNU tools chain |
|
|
|
Mar 19 2014, 23:28
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382

|
Цитата(klen @ Mar 19 2014, 21:32)  кто падает? компиллер при линковке проекта? ага Цитата как включаете и выключаете LTO? Как было написано в этой ветке выше.
|
|
|
|
|
Mar 28 2014, 11:51
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Попробовал 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 Не подскажите, что мы обычно делаем в таком случае?
|
|
|
|
|
Mar 29 2014, 15:07
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(adnega @ Mar 28 2014, 15:51)  Попробовал arm-kgp-eabi-mingw64-20130224-PROCYON.7z
Не собирается( [code]
Не подскажите, что мы обычно делаем в таком случае? давайте начнем с того что линеру не будем передавать опцию с путем до системных либ - это не нужно и вредно поскольку комбинация ключей позволяет ему самому решить где брать 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 а там либы собранные бе поддержки фпу. в понедельник решим эту беду. подождите сутки.
|
|
|
|
|
Mar 29 2014, 19:57
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(klen @ Mar 29 2014, 19:07)  давайте начнем с того что линеру не будем передавать опцию с путем до системных либ - это не нужно и вредно поскольку комбинация ключей позволяет ему самому решить где брать 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, то лишнего "чтения" не происходит. В новой версии поведение правильное, поэтому и решился.
|
|
|
|
|
Mar 30 2014, 06:53
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(adnega @ Mar 29 2014, 23:57)  До понедельника доживу. Я бы и не стал переходить на новую сборку, если бы не обнаружил, что в старых при записи, например, 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 собираеццо и не ругается. я покане понял в чем у Вас проблема.
|
|
|
|
|
Mar 30 2014, 09:49
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
CODE 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.
|
|
|
|
|
Mar 31 2014, 09:46
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Попробовал в виртуалке (ubuntu 12.10) - с последней версий все собирается. На железном сервере (ubuntu 13.10) - уже писал, что нет (internal compiler error). Могу дать удаленный доступ к "плохой" ubunte, но к сожалению, по личным причинам сейчас не до экспериментов (жена и дочка в больницу попали). Сам второй-третий год собираюсь с windows "спрыгнуть". Уже все компы, включая нетбук и десктоп жены, перевел на linux - остался последний ноутбук-кормилец (нужен для работы). Нашел HDD для ноутбука - попробую временно на нем развернуть все необходимые инструменты.
Итого: если у меня одного проблемы, то беру таймаут на их разрешение + сделаю тестовый проект. Если, klen, есть желание и возможность поразбираться с internal compiler error, то могу дать учетку для удаленного подключения (ssh).
|
|
|
|
|
Apr 4 2014, 06:42
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382

|
Про 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. это не на последнем "свежаке", но такой сообщение было и на какой-то версии "свежака", просто забыл написать.
|
|
|
|
|
Apr 4 2014, 07:34
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382

|
Выключил 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к флеша
Сообщение отредактировал Terminator - Apr 4 2014, 07:44
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|