Перейти к содержанию
    

LEON3 компиляция NO FPU

Подскажите, кто знает. Пытаюсь запустить LEON3, бесплатную версию, которая без поддержки FPU.

Как при компиляции простейшей программы в Eclipse указать, чтобы она собралась без поддержки FPU.

Флаги -msoft-float для компилятора и линкера выставил.

Подозреваю, что проблем в стандартной библиотеке, которая по-умолчанию с FPU... но как получить библитеку без FPU? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если gcc + newlib от Гейслера, то они собраны для разных вариантов soft-float, flat, v8 и т.д. можно посмотреть там где установлен компилер в lib

то есть должно выбирать нужные crt файлы и либу в зависимости от ключей (-msoft-float). когда я собирал (давно еще без llvm), то по умолчанию было soft-float

почему думаете, что hard-float используется? попробуйте простую (без printf) программу

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Программа самая простая:

int main(void) {
	volatile char i = 0;
	while (1) {
		i++;
	}

	return 0;
}

Опции компилятора: -c -fmessage-length=0 -qbsp=leon3 -qnano -msoft-float
Опции линковщика: -qbsp=leon3 -qnano -msoft-float

Подключаю библиотеки gcc, bcc из директории \lib\gcc\sparc-gaisler-elf\7.2.0\leon3\soft.

Из других тоже пробовал, где soft прописано. Ничего не получается.

Может нужно какие-то из флагов -nostartfiles, -nodefaultlibs, -nostdlib использовать?

При попытке запуска отладки такой программы GRMON пишет ERROR! FPU not found

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

посмотрите objdump-ом, где fpu используется. тут вообще, без всяких флагов должно быть без FPU

скорее всего в старт файлах crt*.o (не тот файл берет gcc)

у Гейслера должны быть примеры простого crt* - скорее всего в тестах железа (да и в исходниках libc/gcc они наверняка есть - ассемблер *.S) - слинкуйте с  -nostartfiles  -nostdlib с понятным crt*)

без инициализации (crt) C код не будет работать, но попробуйте добиться понятного вывода objdump-а, что там нет лишнего/непонятного

еще раз обращу внимания - посмотрите на тесты железа в grlib - там все было (с makefile и правильными ключами)

 

upd: а пускаете без симуляции, сразу в железке? по-моему, не лучший подход.

посмотрите ключи GRMON-a - может что-то типа -ni или про FPU. сейчас у него GRMON2|3 я еще GRMON просто использовал

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В итоге немного разобрался.

Программа, действительно, компилируется корректно и без FPU. Никаких дополнительных библиотек не требует.

Через grmon удалось загрузить elf-файл и запустить его - все работает.

Ошибка возникает только при попытке начать отладку через eclipse.

Отлаживаемся через UART пока.

Не подскажете, в чем здесь может быть проблема? И вообще, через что проще программу отлаживать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

grmon весьма удобный тул.

что делает эклипс - не знаю, разбирайтесь. по-моему он должен запустить тот же самый grmon в режиме gdb сервера и работать с ним. может какой-нибудь антивирус гадит на межпроцесное взаимодействие? у меня вчера пол дня ушло на понимание, что avast убивает отладку в латисовском ревиале

у Гейслера также был grmon с gui - попробуйте его запустить

-------------------

по поводу хардварных отладочных интерфейсов - какой используете jtag, uart? проверьте, что эклипс правильные ключи использует / выбирает интерфейс правильно

мне удавалось запускать отладку и из эклипса, но как-то всегда это вызывало некоторые трудности и особого преимущества перед grmon-ом из командной строки не видел

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Продолжаю разбираться... может поможете.

Итак, запускаю GRMON с опцией GDB, все нормально - Started GDB service on port 2222.

Далее запускаю вручную sparc-gaisler-elf-gdb:
выдаю команды:
1. file t4.elf - загружаю программу

2. dir C:/opt/bcc-2.1.1/src/libbcc/shared/trap - добавляю правильной путь для поиска файла trap_table_mvt.S (иначе он его ищет по /opt/bcc-2.1.1-gcc/src/libbcc/shared/trap/trap_table_mvt.S: No such file or directory - и естественно не находит)

3. target extended-remote localhost:2222 - при выдаче этой команды на подключение к GRMON - в окне GRMON выдается сообщение ERROR! FPU not found.

C:\opt\bcc-2.1.1\bin>sparc-gaisler-elf-gdb
GNU gdb (GDB) 8.2.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "--host=x86_64-w64-mingw32 --target=sparc-gaisler-elf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) file t4.elf
Reading symbols from t4.elf...done.
(gdb) dir C:/opt/bcc-2.1.1/src/libbcc/shared/trap
Source directories searched: C:/opt/bcc-2.1.1/src/libbcc/shared/trap;$cdir;$cwd
(gdb) target extended-remote localhost:2222
Remote debugging using localhost:2222
__bcc_entry_point () at /opt/bcc-2.1.1-gcc/src/libbcc/shared/trap/trap_table_mvt.S:82
82              RESET_TRAP(__bcc_trap_reset_mvt);       ! 00 reset
(gdb)
  GRMON debug monitor v3.2.2 64-bit eval version

  Copyright (C) 2020 Cobham Gaisler - All rights reserved.
  For latest updates, go to http://www.gaisler.com/
  Comments or bug-reports to support@gaisler.com

  This eval version will expire on 28/09/2020

Started GDB service on port 2222.
  GRLIB build version: 4251
  Detected frequency:  24.0 MHz

  Component                            Vendor
  LEON3 SPARC V8 Processor             Cobham Gaisler
  AHB Debug UART                       Cobham Gaisler
  JTAG Debug Link                      Cobham Gaisler
  AHB/APB Bridge                       Cobham Gaisler
  LEON3 Debug Support Unit             Cobham Gaisler
  LEON2 Memory Controller              European Space Agency
  Single-port AHB SRAM module          Cobham Gaisler
  Generic UART                         Cobham Gaisler
  Multi-processor Interrupt Ctrl.      Cobham Gaisler
  Modular Timer Unit                   Cobham Gaisler
  General Purpose I/O port             Cobham Gaisler

  Use command 'info sys' to print a detailed report of attached cores

ERROR! FPU not found

Вот из-за чего в момент выдачи команды target ... может вылетать такая ошибка в GRMON?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне удобнее было grmon с его родным интерфейсом, без gdb запускать - больше возможностей

вот попробуйте в родном интерфейсе info sys сказать (как выше написано). может сконфигурено неправильно - то есть подписано в pnp пзу-шке, что есть FPU (не должно собраться, но вдруг)

если уж такие проблемы с FPU - сделайте с FPU - для Альтеры/Ксайлинса Гейслер дает нетлист, когда разберетесь, уберете.

но у меня никаких проблем с NO FPU конфигурацией не возникало

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...