реклама на сайте
подробности

 
 
> Вопрос по ARM-GCC, arm7tdmi все ок, arm926ej-s не хотит :(
klen
сообщение May 29 2006, 19:19
Сообщение #1


бессмертным стать можно тремя способами
*****

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



Решил я занятся изучением ARMов, начал с того что собрал gcc-4.1.1-binutils-1.16.2-newlib-1.4.0 под ARM. Всунул все это дело в Keil (ручками тоже пособирал примерчики), погонял на GDB - все вроде понятно становися как в книжке написано..но только если коипилировать под artm7tdmi при попыткак собрать примерчик под arm926ej-s начинает ругатся, причем обьектники собираются а вот elf почемуто линкером не генерится:
Код
arm-elf-gcc -c -mcpu=arm926ej-s -I. -mhard-float   -O0 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.lst  -std=gnu99 -Wp,-M,-MP,-MT,main.o,-MF,.dep/main.o.d main.c -o main.o
arm-elf-gcc -mcpu=arm926ej-s -I. -mhard-float   -O0 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 -Wp,-M,-MP,-MT,image.o,-MF,.dep/image.elf.d main.o   --output image.elf -Wl,-Map=image.map,--cref    -lm
d:\mingw\local\bin\..\lib\gcc\arm-elf\4.1.1\..\..\..\..\arm-elf\bin\ld.exe: ERROR: d:/mingw/local/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(atexit.o) uses FPA instructions, whereas image.elf does not
d:\mingw\local\bin\..\lib\gcc\arm-elf\4.1.1\..\..\..\..\arm-elf\bin\ld.exe: failed to merge target specific data of file d:/mingw/local/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(atexit.o).............................


Линкер говорит что обьектник собран с использованием команд FPA а сгениерить elf из этих объектников не хочет. В чем проблема?
Хочется глазками посмотреть в asm листингах инструкции счета плавающей запятой для arm926ej-s
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
klen
сообщение May 30 2006, 17:37
Сообщение #2


бессмертным стать можно тремя способами
*****

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



Пересобрал все - gcc binutils newlib c опцией --with-float=hard
Компилятор начал ругатся по другому.
Но после изучения исходникрв gcc и всяких док понял что нада еще опцию --mfpu=fpa добавить. Теперь все линкуется и под симулятором даже чето считается.
Вобщем еще один шаг к постройке мегавычислителя я сделал smile.gif

Но!
Чето я совсем запутался. Суть моего понимания можно выразить так:
1. Аппаратная поддержка float это набор команд - fdvs fmls adfs sufs и тд. ПОДДЕРЖКА НЕ ЯДРОМ ARM!!! Тоесть существуют не ЯДРА!! а кристаллы в которых кроме ядра есть сопроцессоры которые поддержывают float (индекс "e" в названии "ядра" микросхемы)
2. VFP9 FPA MAVERIK и иже с ними в общем случае есть суть сопроцессоры со своим набором команд и форматом данных. Например в исходниках gcc я наше кусок который генерит команды процессора:
cos sin fdvs fmls - чтоб они поддерживались кристалл должен содержать сопроцессор стандарта FPA версии 1. Или например команды fmuld fmscd ... - сопроцессор стандарта VFP версии 1d.
3. Именно поэтому нада опция --mfpu=fpa чтоб компиллер знал какой сопроцессор есть на борту (само ядро тут непричем) для указания множества допустимых команд, а линкеру для того чтоб он мог выбрать версию библиотек которая собрана с этим набором команд и сможет правильно слинковатся.

Если я не прав поправте и поучите. Умные книги читать к сож. некогда. Учимся по исходникам компилятора.

В итоге рытья мне удалось заставить компиллр гнать FP команды, но теперь косинус синус и тд эмулируется. Наверно опять с библиотеками нада рыть - не те подключает, или тех которые напрямую инструкции используют я не сказал ему собрать.

Сообщение отредактировал klen - May 30 2006, 17:42
Go to the top of the page
 
+Quote Post
makc
сообщение May 30 2006, 18:35
Сообщение #3


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(klen @ May 30 2006, 21:37) *
Но!
Чето я совсем запутался. Суть моего понимания можно выразить так:
1. Аппаратная поддержка float это набор команд - fdvs fmls adfs sufs и тд. ПОДДЕРЖКА НЕ ЯДРОМ ARM!!! Тоесть существуют не ЯДРА!! а кристаллы в которых кроме ядра есть сопроцессоры которые поддержывают float (индекс "e" в названии "ядра" микросхемы)


Для поддержки дополнительных команд к ядрам ARM добавляют сопроцессоры. Причем, что интересно, ряд функций самого ядра может управляться через эти самые команды сопроцессора (например, управление кешами и т.п.).

Цитата
2. VFP9 FPA MAVERIK и иже с ними в общем случае есть суть сопроцессоры со своим набором команд и форматом данных. Например в исходниках gcc я наше кусок который генерит команды процессора:
cos sin fdvs fmls - чтоб они поддерживались кристалл должен содержать сопроцессор стандарта FPA версии 1. Или например команды fmuld fmscd ... - сопроцессор стандарта VFP версии 1d.


Да, насколько я понимаю, все именно так.


Цитата
3. Именно поэтому нада опция --mfpu=fpa чтоб компиллер знал какой сопроцессор есть на борту (само ядро тут непричем) для указания множества допустимых команд, а линкеру для того чтоб он мог выбрать версию библиотек которая собрана с этим набором команд и сможет правильно слинковатся.


Да, все правильно. Это нужно для определенности и избежания конфликтов.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
klen
сообщение May 30 2006, 18:57
Сообщение #4


бессмертным стать можно тремя способами
*****

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



Ну теперь ждем LPC3000 w00t.gif
Хрен с ним что он в BGA и флеша нет, всеравно хоцца!

Сообщение отредактировал klen - May 30 2006, 18:58
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- klen   Вопрос по ARM-GCC   May 29 2006, 19:19
- - sff   Я попытался откомпилировать со стандартного WinARM...   May 29 2006, 20:02
- - makc   Цитата(klen @ May 29 2006, 23:19) Линкер ...   May 30 2006, 04:19
|- - klen   Цитата(makc @ May 30 2006, 08:19) Проблем...   May 30 2006, 04:36
- - sensor_ua   ARM7TDMI и ARM926EJ-S суть разные ядра - http://ww...   May 30 2006, 14:14
|- - makc   Цитата(sensor_ua @ May 30 2006, 18:14) AR...   May 30 2006, 14:33
- - sensor_ua   Останусь при своём. Ещё предлагаю взглянуть на таб...   May 30 2006, 15:00
|- - makc   Цитата(sensor_ua @ May 30 2006, 19:00) Ос...   May 30 2006, 15:24
- - sensor_ua   А кто писал либу для float, тот не программист что...   May 30 2006, 15:42
|- - makc   Цитата(sensor_ua @ May 30 2006, 19:42) А ...   May 30 2006, 16:00
- - sensor_ua   ЦитатаЧто же касается приведенного мною примера - ...   May 30 2006, 16:09
- - sensor_ua   ЦитатаЕсли я не прав поправте и поучите. Сам бы п...   May 30 2006, 19:13
|- - makc   Цитата(sensor_ua @ May 30 2006, 23:13) Ци...   May 30 2006, 19:32
|- - klen   Цитата(makc @ May 30 2006, 23:32) MMU - m...   May 30 2006, 20:23
- - beer_warrior   Виртуальную память Собсно дает возможность нормал...   May 30 2006, 20:41
- - klen   Виртуальная память это здорово, для тех кто многоз...   May 30 2006, 20:52
|- - makc   Цитата(klen @ May 31 2006, 00:52) Виртуал...   May 31 2006, 06:12
- - sensor_ua   ЦитатаДа, конечно можно вручную сгородить дикий ог...   May 31 2006, 07:15


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 14th August 2025 - 06:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016