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

Но!
Чето я совсем запутался. Суть моего понимания можно выразить так:
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