ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.  (Прочитано 20763 раз)

0 Пользователей и 1 Гость просматривают эту тему.

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72

Собрал EABI crunch-tools для ТИОН-ов с патчами от Martin Guy (http://martinwguy.co.uk/martin/crunch/)  и патчами от OE (http://www.openembedded.org/).
Включает в себя binutils-2.19, gcc-4.2.4, uClibc-0.9.29.
Ключи для оптимизации -mcpu=ep9312 -mfpu=maverick -mfloat-abi=softfp -ffast-math -O2 (подробнее про ключи у Мартина на странице).
Лежит на ftp://ftp.ntcsm.ru/pub/tion9315/crunch-tools-gcc4.2.4-src.tar.bz2.
Можно тестировать :)
Записан

speculzzz

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 69
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #1 : 22 Сентября, 2009, 08:32:07 »

Собирал как мартин (кстати, сентябрьский патч?) только gcc или же g++ тоже собран?
А что uClibc-0.9.30.1 не используешь?

До этого пробывал собирать тулчейн crunch-tools-1.4.3... Так вот g++ намана не собирал, т.к. патчами отключались некоторые функции преобразования вещественных в целые, на них  были ссылки из libstdc++ - и программа не собиралась. Но так как мне необходим g++ пришлось пока собрать тулчейн c softfloat-ом 4.3.4-920t-eabi (пользовался последней версией buildroot).
« Последнее редактирование: 22 Сентября, 2009, 08:47:40 от speculzzz »
Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #2 : 22 Сентября, 2009, 09:50:08 »

Собирал как мартин (кстати, сентябрьский патч?) только gcc или же g++ тоже собран?
А что uClibc-0.9.30.1 не используешь?

Патч Мартина сентябрьский и добавлены патчи от OE.
cross-gcc собран как
$SRC_DIR/$GCC/configure --target=$TARGET --prefix=$INSTALL_DIR --enable-languages=c,c++ \
                        --disable-multilib --disable-libmudflap --disable-libssp \
                         2>&1; status=$?
т.е. g++ есть.

uClibc 0.9.30 не собирается с gcc 4.2.4 - разбираюсь.
Мартин пишет: gcc-4.3.4 медленнее, чем 4.2.4.
ЗЫ: Могу выложить архив только с патчами и скриптами без исходников bu, gcc и uClibc.
Записан

speculzzz

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 69
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #3 : 22 Сентября, 2009, 15:22:55 »

uClibc 0.9.30 не собирается с gcc 4.2.4 - разбираюсь.
Мартин пишет: gcc-4.3.4 медленнее, чем 4.2.4.

На счет uClibc 0.9.30.1 - глянь патчи/скрипты http://buildroot.uclibc.org/downloads/buildroot-2009.08.tar.bz2, там тулчейн с этой либой собирается.

ЗЫ: Могу выложить архив только с патчами и скриптами без исходников bu, gcc и uClibc.

Было бы здорово! :)
Кстати, а патч для bu (на который ссылаются в разделе http://martinwguy.co.uk/martin/crunch/#KnownBugs) добавлял?


« Последнее редактирование: 22 Сентября, 2009, 15:24:28 от speculzzz »
Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #4 : 22 Сентября, 2009, 17:10:49 »


На счет uClibc 0.9.30.1 - глянь патчи/скрипты http://buildroot.uclibc.org/downloads/buildroot-2009.08.tar.bz2, там тулчейн с этой либой собирается.
Патчи для uClibc брал в OE. С ними 0.9.30 не собирается gcc4.2.4.
Патчи от buildroot посмотрю - сравню с ОЕ.

Выложил туда же архив без исходников - только скрипты и патчи (ftp://ftp.ntcsm.ru/pub/tion9315/crunch-tools-gcc4.2.4-nosrc.tar.bz2).

Кстати, а патч для bu (на который ссылаются в разделе http://martinwguy.co.uk/martin/crunch/#KnownBugs) добавлял?


Не добавлял. При следующей итерации добавлю (когда буду с uClibc разбираться). Там в основном glibc патчится, для bu только один файлик.
Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #5 : 23 Сентября, 2009, 09:53:12 »

С uClibc-0.9.30 и 0.9.30.1 не собирается - вываливается на
  CC libc/sysdeps/linux/arm/ioperm.os
In file included from ./include/sys/sysctl.h:44,
                 from libc/sysdeps/linux/arm/ioperm.c:46:
/home/CRUS/crunch-tools-gcc4.2.4/eabi/ep93xx-eabi-fast/include/linux/sysctl.h:41: error: expected ':', ',', ';', '}' or '__attribute__' before '*' token
make: *** [libc/sysdeps/linux/arm/ioperm.os] Ошибка 1
ERROR: making uClibc-0.9.30.1 failed

Сборка 0.9.30 в этом же месте вываливается.
Разбираться пока времени нет. Оставил как было - с uClibc-0.9.29.

К bu патчик добавил. Соберется - выложу.
Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #6 : 02 Октября, 2009, 13:08:03 »

С uClibc-0.9.30 и 0.9.30.1 не собирается
Причина была в заголовках ядра - староваты :)
Собрал toolchain с uClibc-0.9.30.1 и gcc-4.2.4. Выложил туда же ftp://ftp.ntcsm.ru/pub/tion9315/.
Заголовки ядра свежие от 2.6.30.

Записан

speculzzz

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 69
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #7 : 23 Октября, 2009, 10:37:50 »

Собрал toolchain с uClibc-0.9.30.1 и gcc-4.2.4. Выложил туда же ftp://ftp.ntcsm.ru/pub/tion9315/.
Заголовки ядра свежие от 2.6.30.

Решил попробовать собранный тулчейн. При запуске любого "ехе-шника" выдается сообщение "Исключение в операции с плавающей точкой" и перывается работа :(. С чем это может быть связано?
Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #8 : 23 Октября, 2009, 10:49:54 »

Решил попробовать собранный тулчейн. При запуске любого "ехе-шника" выдается сообщение "Исключение в операции с плавающей точкой" и перывается работа :(. С чем это может быть связано?

Ходы и логи в студию.
ЗЫ: Телепаты на выставке :)
Записан

speculzzz

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 69
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #9 : 23 Октября, 2009, 16:33:00 »

Решил попробовать собранный тулчейн. При запуске любого "ехе-шника" выдается сообщение "Исключение в операции с плавающей точкой" и перывается работа :(. С чем это может быть связано?

Ходы и логи в студию.
ЗЫ: Телепаты на выставке :)
"Собранный" - в смысле тобой который сделан :).
Тут в параллельной ветке ты сказал что под х86_64 собирал тулчейн. А у меня на виртуалке Федора Коре 5 х86 стоит... может с этим связано?

Ну а так вот лог моих действий:
#mkdir /tion/toolchain
#cd /tion/toolchain
#tar -xjf /tmp/gcc-4.2.4-bu-2.19-uclibc-0.9.30.1-eabi-crunch.tar.bz2
#cd ./ep93xx-eabi-fast/bin
#./arm-linux-uclibcgnueabi-gcc -V
Исключение в операции с плавающей точкой
#file ./arm-linux-uclibcgnueabi-gcc
./arm-linux-uclibcgnueabi-gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
#

Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #10 : 23 Октября, 2009, 19:33:29 »

Тут в параллельной ветке ты сказал что под х86_64 собирал тулчейн. А у меня на виртуалке Федора Коре 5 х86 стоит... может с этим связано?


FC 5 - это не прошлого века? ;)

Вот под Mandriva 2007.1 x86
[faa@faa bin]$ ./arm-linux-uclibcgnueabi-gcc -V
arm-linux-uclibcgnueabi-gcc: ключ '-V' требует аргумента
[faa@faa bin]$ ./arm-linux-uclibcgnueabi-gcc -v
Используются внутренние спецификации.
Целевая архитектура: arm-linux-uclibcgnueabi
Параметры конфигурации: /home/CRUS/crunch-tools-gcc4.2.4/build/gcc-4.2.4/configure --target=arm-linux-uclibcgnueabi --prefix=/home/CRUS/crunch-tools-gcc4.2.4/eabi/ep93xx-eabi-fast --enable-languages=c,c++ --disable-multilib --disable-libmudflap --disable-libssp --disable-checking --disable-werror
Модель многопотоковости: posix
gcc версия 4.2.4
[faa@faa bin]$ file arm-linux-uclibcgnueabi-gcc
arm-linux-uclibcgnueabi-gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), not stripped

Вот под Mandriva 2009.1 x86_64
[faa@tresh bin]$ ./arm-linux-uclibcgnueabi-gcc -V
arm-linux-uclibcgnueabi-gcc: ключ '-V' требует аргумента
[faa@tresh bin]$ ./arm-linux-uclibcgnueabi-gcc -v
Используются внутренние спецификации.
Целевая архитектура: arm-linux-uclibcgnueabi
Параметры конфигурации: /home/faa/CRUS/crunch-tools-gcc4.2.4/build/gcc-4.2.4/configure --target=arm-linux-uclibcgnueabi --prefix=/home/faa/CRUS/crunch-tools-gcc4.2.4/eabi/ep93xx-eabi-fast --enable-languages=c,c++ --disable-multilib --disable-libmudflap --disable-libssp --disable-checking --disable-werror
Модель многопотоковости: posix
gcc версия 4.2.4
[faa@tresh bin]$
[faa@tresh bin]$ file arm-linux-uclibcgnueabi-gcc
arm-linux-uclibcgnueabi-gcc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

Все без виртуалок, нативно.

ЗЫ: Может есть смысл обновить дистрибутив? На дворе уже давно Fedora 11.
Записан

speculzzz

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 69
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #11 : 26 Октября, 2009, 10:00:47 »

Под Убунтой 9.04 запустился. Но не факт что в Федоре 11 этот тулчейн запуститься  :)...
В свое время в ФедореКоре ребята решили отпимизировать кое-что в Эльф-формате:
12.2.2.1. Caveats

Fedora developers have introduced changes in the ELF .hash section
that provides symbols for dynamic linking. This new .gnu.hash section,
which is produced with the new default --hash-style=gnu option for
gcc, serves the same purpose as previous hash sections. It provides,
however, an approximately 50% increase in dynamic linking speed.
Binaries and libraries produced with the new hashing function are
incompatible with older glibc and dynamic linker releases. To use the
old-style hashing routines for compatibility with older glibc-based
systems, pass the --hash-style=sysv option instead.

В отладчике ловим сигнал SIGFPE в функции do_lookup_x (в недрах загрузчика эльфовского файла). Так что при необходимости просто пересоберу тулчейн :) (переводить виртуалку под новый дистрибутив пока лениво  :D)
Записан

yekm

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 1
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #12 : 12 Января, 2010, 18:37:37 »

http://ru.gentoo-wiki.com/wiki/Кросскомпилирование_с_emerge_(ARM,_MaverickCrunch_FPU)
Записан

scad

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 48
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #13 : 15 Января, 2010, 09:36:23 »

Решил попробовать toolchain от faa.
Скачал:
ftp://ftp.ntcsm.ru/pub/tion9315/gcc-4.2.4-bu-2.19-uclibc-0.9.30.1-eabi-crunch.tar.bz2
Скачал кратер с vlc-плеером вот отсюда:
http://arm.cirrus.com/files/linux/heelrod/linux-crater_20080104_d-src.tar.bz2
Указал путь к тулчейну. Поправил в файле packages/Makefile.in флаги компилятора
ifeq ($(EABI),y)
KERNEL_CROSS=$(TOOLCHAIN_DIR)/bin/arm-linux-uclibcgnueabi-
TARGET_CROSS=$(TOOLCHAIN_DIR)/bin/arm-linux-uclibcgnueabi-
TARGET_CC='$(TARGET_CROSS)gcc -mcpu=ep9312 -mfpu=maverick -mfloat-abi=softfp -O2 -ffast-math'
TARGET_CXX='$(TARGET_CROSS)g++ -mcpu=ep9312 -mfpu=maverick -mfloat-abi=softfp -O2 -ffast-math'
REAL_GNU_TARGET_NAME=arm-linux-uclibcgnueabi
endif
Выбрал ядро 2.6.21.5. Попытался поставить к нему патч:
ftp://ftp.ntcsm.ru/pub/tion9315/tion9315-2.6.21.5-eabi.patch.bz2
Патч не поставился:
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/arch/arm/configs/tion9315_defconfig
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/arch/arm/mach-ep93xx/Kconfig      
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/arch/arm/mach-ep93xx/Makefile      
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/arch/arm/mach-ep93xx/Makefile.boot
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/arch/arm/mach-ep93xx/ssp.c        
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/arch/arm/mach-ep93xx/tion9315.c    
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/arch/arm/tools/mach-types          
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/drivers/ide/Kconfig                
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/drivers/mtd/maps/Kconfig          
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/drivers/mtd/maps/Makefile          
patching file /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/drivers/mtd/maps/tion9315.c        
patch: **** malformed patch at line 2296: diff -Nur /home/CRUS/crater-eabi-orig/kernel/linux-2.6.21.5/drivers/mtd/nand/Kconfig /home/CRUS/crater-eabi-tion/kernel/linux-2.6.21.5/drivers/mtd/nand/Kconfig  
Ну да ладно... mtd/nnad использовать не будем - КФС на флешке.
Ядро собралось.
А вот busybox не хочет этого делать - не находит файлы assert.h и другие:
applets/applets.c:15:20: error: assert.h: Нет такого файла или каталога                                   
In file included from include/libbb.h:13,                                                                 
                 from include/busybox.h:10,                                                               
                 from applets/applets.c:16:                                                               
include/platform.h:102:23: error: byteswap.h: Нет такого файла или каталога                               
include/platform.h:103:21: error: endian.h: Нет такого файла или каталога                                 
include/platform.h:135:24: error: arpa/inet.h: Нет такого файла или каталога                               
include/platform.h:301:23: error: sys/mount.h: Нет такого файла или каталога                               
In file included from include/busybox.h:10,                                                               
                 from applets/applets.c:16:                                                               
include/libbb.h:15:19: error: ctype.h: Нет такого файла или каталога                                       
include/libbb.h:16:20: error: dirent.h: Нет такого файла или каталога                                     
include/libbb.h:17:19: error: errno.h: Нет такого файла или каталога                                       
include/libbb.h:18:19: error: fcntl.h: Нет такого файла или каталога                                       
include/libbb.h:19:22: error: inttypes.h: Нет такого файла или каталога                                   
include/libbb.h:20:20: error: mntent.h: Нет такого файла или каталога                                     
include/libbb.h:21:19: error: netdb.h: Нет такого файла или каталога                                       
include/libbb.h:22:20: error: setjmp.h: Нет такого файла или каталога                                     
include/libbb.h:23:20: error: signal.h: Нет такого файла или каталога                                     
include/libbb.h:24:19: error: stdio.h: Нет такого файла или каталога                                       
include/libbb.h:25:20: error: stdlib.h: Нет такого файла или каталога                                     
include/libbb.h:28:20: error: string.h: Нет такого файла или каталога                                     
include/libbb.h:30:23: error: sys/ioctl.h: Нет такого файла или каталога                                   
include/libbb.h:31:22: error: sys/mman.h: Нет такого файла или каталога                                   
include/libbb.h:32:24: error: sys/socket.h: Нет такого файла или каталога                                 
include/libbb.h:33:22: error: sys/stat.h: Нет такого файла или каталога                                   
include/libbb.h:34:24: error: sys/statfs.h: Нет такого файла или каталога                                 
include/libbb.h:35:22: error: sys/time.h: Нет такого файла или каталога                                   
include/libbb.h:36:23: error: sys/types.h: Нет такого файла или каталога                                   
include/libbb.h:37:22: error: sys/wait.h: Нет такого файла или каталога                                   
include/libbb.h:38:21: error: termios.h: Нет такого файла или каталога                                     
include/libbb.h:39:18: error: time.h: Нет такого файла или каталога                                       
include/libbb.h:40:20: error: unistd.h: Нет такого файла или каталога                                     
include/libbb.h:41:19: error: utime.h: Нет такого файла или каталога 
Такое ощущение что нет kernel-headers.
Что делать дальше? что я до этого делал не так?

« Последнее редактирование: 15 Января, 2010, 09:43:56 от scad »
Записан

scad

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 48
Re: toolchain с gcc-4.2.4-eabi для ТИОН, ТИОН-ПРО и т.п.
« Ответ #14 : 20 Января, 2010, 14:52:10 »

С предыдущими проблемами разобрался - все дело было в симлинках.
Ядро тоже пропатчил успешно.
Выбрал архитектуру TION9315.
Собрал ядро. Записал в тион - ядро не запускается
Unpacking linux...
и все. У меня ТИОН v1.
Записан