ЗАО «ЗЭО»

Техническая поддержка пользователей => ОС Linux, U-Boot => Тема начата: dimaz от 21 Октября, 2009, 22:59:43

Название: сборка toolchain x86_64 для EP9315
Отправлено: dimaz от 21 Октября, 2009, 22:59:43
На рабочем компе у меня стоит слака 64 бита. Вот и хотелось бы собрать нативный toolchain для EP9315, а не возиться с эмуляцией 32 бит.

Вот ищу инфу, но она как-то разбросана. Неплохо было бы собрать знания, да на вики процесс сборки toolchain описать.

Я скачал патчи от Martin Guy http://martinwguy.co.uk/martin/crunch/ (http://martinwguy.co.uk/martin/crunch/) для gcc 4.3.4 20090908.
Скачал сам gcc, накатил патчи. Заупстил ./configure с опциями, которые у него на сайте висят. Но эта сволочь не собирается.

Вот опции для ./configure:
 ../gcc-4.3.4/configure --disable-nls --enable-shared --with-system-zlib \
        --without-included-gettext --enable-threads=posix \
        --enable-clocale=gnu --enable-mpfr --disable-libssp \
        --disable-bootstrap --enable-languages=c --with-arch=armv4t \
        --program-suffix=-4.3-crunch armv4tl-crunch-linux-gnueabi

Вот на чём он вываливается при make:
make[3]: Leaving directory `/root/work/arm-toolchain/build-gcc/libdecnumber'
make[3]: Entering directory `/root/work/arm-toolchain/build-gcc/gcc'
make[3]: Leaving directory `/root/work/arm-toolchain/build-gcc/gcc'
Checking multilib configuration for libgcc...
Configuring stage 1 in armv4tl-crunch-linux-gnueabi/libgcc
configure: loading cache ./config.cache
checking for --enable-version-specific-runtime-libs... no
checking for a BSD-compatible install... /usr/bin/ginstall -c
checking for gawk... gawk
checking build system type... armv4tl-crunch-linux-gnueabi
checking host system type... armv4tl-crunch-linux-gnueabi
checking for armv4tl-crunch-linux-gnueabi-ar... ar
checking for armv4tl-crunch-linux-gnueabi-lipo... lipo
checking for armv4tl-crunch-linux-gnueabi-nm... /root/work/arm-toolchain/build-gcc/./gcc/nm
checking for armv4tl-crunch-linux-gnueabi-ranlib... ranlib
checking for armv4tl-crunch-linux-gnueabi-strip... strip
checking whether ln -s works... yes
checking for armv4tl-crunch-linux-gnueabi-gcc... /root/work/arm-toolchain/build-gcc/./gcc/xgcc -B/root/work/arm-toolchain/build-gcc/./gcc/ -B/usr/local/armv4tl-crunch-linux-gnueabi/bin/ -B/usr/local/armv4tl-crunch-linux-gnueabi/lib/ -isystem /usr/local/armv4tl-crunch-linux-gnueabi/include -isystem /usr/local/armv4tl-crunch-linux-gnueabi/sys-include
checking for suffix of object files... configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[2]: *** [configure-stage1-target-libgcc] Ошибка 1
make[2]: Leaving directory `/root/work/arm-toolchain/build-gcc'
make[1]: *** [stage1-bubble] Ошибка 2
make[1]: Leaving directory `/root/work/arm-toolchain/build-gcc'
make: *** [all] Ошибка 2

Подскажите, пожалста, что не так +)
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: asv от 21 Октября, 2009, 23:05:36
Посмотрите здесь, будет проще:
http://www.zao-zeo.ru/forum/index.php?topic=138.0

PS.
>а не возиться с эмуляцией 32 бит.

Тогда возитесь с работой на 64х битах.

Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: dimaz от 21 Октября, 2009, 23:08:27
Да я как раз этот пост читал перед тем, как взяться за сборку 64-битного toolchain.
Но что-то не помог он мне пока(

Я то хотел собрать не с uClibc, а с glibc. Поэтому не юзал скрипт автосборщика с нужными патчами.

Теперь попробую для начала попробовать скрипты, любезно предоставленные faa: ftp.ntcsm.ru/pub/tion9315/gcc-4.2.4-bu-2.19-uclibc-0.9.30.1-eabi-crunch.nosrc.tar.bz2 (http://ftp.ntcsm.ru/pub/tion9315/gcc-4.2.4-bu-2.19-uclibc-0.9.30.1-eabi-crunch.nosrc.tar.bz2)
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: laborer от 22 Октября, 2009, 10:26:02
На рабочем компе у меня стоит слака 64 бита. Вот и хотелось бы собрать нативный toolchain для EP9315, а не возиться с эмуляцией 32 бит.

А чего с ней возиться? Я когда-то собрал себе x32 тулчейн на debian i386. Недавно перешёл на debian x64, так мой 32-х битный тулчейн заработал без всяких усилий с моей стороны (только PATH прописал). Скорость компиляции особо не изменилась, генерируемый код такой же.
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: asv от 22 Октября, 2009, 11:54:43
Проблема в том, что на x64 платформе toolchain не собирается. Понятно, что если рабочая машина с системой x64, то для сборки toolchain ставить x86 ядро, x86 библиотеки и x86 инструментарий не очень, проще взять уже собранный (но для x86).
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: dimaz от 22 Октября, 2009, 12:43:37
Всё оке. Toolchain с uclibc скомпилился, openssl и busybox собрался, qt embedded 4.5.3 тоже.
Пришлось немного повозиться, поправить некоторые вещи, но вроде в итоге всё хорошо.

Проверить в работе пока не могу, платка приедет через дня 2.

А 32-битным toolchain'ом мне не попользоваться, потому-что в слаке 64-битной по умолчанию нет поддержки эмуляции 32 бит.
Нет либ 32-битных. У меня просто так бы этот toolchain не заработал бы, ещё больше геморроя было б+)

Сейчас скриптам от faa пытаюсь прриделать binutils-2.20. Вот пока компилится+)

Вот осталось подождать прихода тестового девайса, собрать всё, скомпиленное мной в образ для платки и залить потестить...
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: faa от 22 Октября, 2009, 17:29:43
Проблема в том, что на x64 платформе toolchain не собирается. Понятно, что если рабочая машина с системой x64, то для сборки toolchain ставить x86 ядро, x86 библиотеки и x86 инструментарий не очень, проще взять уже собранный (но для x86).


Собирается :) Без бубна.
Дистр Мандрива 2009.1 х86_64.
[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

ЗЫ: Был вчера на ЧипЭкспо - думал, кто из разрабов будет - никого. Только один "продавец" (как он сам сказал :).
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: dimaz от 23 Октября, 2009, 23:13:59
Кстати, ребят, а ссылку на последний патч для ядра 2.6.30 не подкините?

И ещё бы хотелось бы прикрутить сжатие lzma для ядра и ramdisk...

И ещё один вопросик: есть ли какой-нить доступ из под линуха к встроенным флехам на тион-про v2?
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: asv от 24 Октября, 2009, 12:40:04
> И ещё один вопросик: есть ли какой-нить доступ из под линуха к встроенным флехам на тион-про v2?

Есть, обычный доступ (в 2.6.20 с патчем и в 2.6.30 сразу).
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: faa от 24 Октября, 2009, 14:13:26
Кстати, ребят, а ссылку на последний патч для ядра 2.6.30 не подкините?


Лежит у меня на ftp ftp://ftp.ntcsm.ru/pub/tion9315/linux-2.6.30-tion-eabi-patch.tar.bz2 (http://ftp://ftp.ntcsm.ru/pub/tion9315/linux-2.6.30-tion-eabi-patch.tar.bz2)
Работают eth, usb, i2c, fb, ts, uart.
wdt, IDE и spi  не проверял и не ковырял.

В 2.6.32 почти все добавлено, но fb без акселерации. Ждем-с :)
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: dimaz от 24 Октября, 2009, 15:46:12
Кстати, ребят, а ссылку на последний патч для ядра 2.6.30 не подкините?


Лежит у меня на ftp ftp://ftp.ntcsm.ru/pub/tion9315/linux-2.6.30-tion-eabi-patch.tar.bz2 (http://ftp://ftp.ntcsm.ru/pub/tion9315/linux-2.6.30-tion-eabi-patch.tar.bz2)
Работают eth, usb, i2c, fb, ts, uart.
wdt, IDE и spi  не проверял и не ковырял.

В 2.6.32 почти все добавлено, но fb без акселерации. Ждем-с :)


опа-опа, это уже вкусно+)) с 2.6.32 то +)
это, а fs то с акселерацией чтоль сильно быстрее?

эх, эту акселерацию б ещё к qt прикрутить))
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: faa от 24 Октября, 2009, 20:31:52
это, а fs то с акселерацией чтоль сильно быстрее?

эх, эту акселерацию б ещё к qt прикрутить))

На рисовании прямых и заливке прямоугольников в разы. Но я делал через ioctl.
Наверное и qt можно прикрутить. Если брезенхема и прочее от cirrus-ов прямо в драйвер без ioctl воткнуть. Или qt пропатчить :)

Кстати, с glibc собрать можно, но образ будет намного толще. Функционала uClibc вполне достаточно и системные либы меньше места занимают.
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: dimaz от 25 Октября, 2009, 22:15:34
это, а fs то с акселерацией чтоль сильно быстрее?

эх, эту акселерацию б ещё к qt прикрутить))

На рисовании прямых и заливке прямоугольников в разы. Но я делал через ioctl.
Наверное и qt можно прикрутить. Если брезенхема и прочее от cirrus-ов прямо в драйвер без ioctl воткнуть. Или qt пропатчить :)

Кстати, с glibc собрать можно, но образ будет намного толще. Функционала uClibc вполне достаточно и системные либы меньше места занимают.

Да, с glibc я ступил, думал, qt c uclibc не скомпилится, но потом нашёл инфу нужную+)

Это, а вот про акселерацию fb не можешь поподробнее рассказать, где почитать про это ускорение в тионе, может возьмусь когда-нить реализовать +)
Но как только вызывать эти ускоренные функции? Там же через какие-то регистры до функций граф. можно достучаться?
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: faa от 26 Октября, 2009, 09:52:50

Это, а вот про акселерацию fb не можешь поподробнее рассказать, где почитать про это ускорение в тионе, может возьмусь когда-нить реализовать +)
Но как только вызывать эти ускоренные функции? Там же через какие-то регистры до функций граф. можно достучаться?

В доке на процессор EP9315_Users_Guide.pdf или EP93xx_Users_Guide_UM1.pdf.
Достучаться через ioctl. Смотри патч для 2.6.21.5 или 2.6.30 на  ftp://ftp.ntcsm.ru/pub/tion9315 (http://ftp://ftp.ntcsm.ru/pub/tion9315)
Пример использования
void accel_line(int x1, int y1, int x2, int y2, unsigned colidx)
{
    struct ep93xx_line line_info;

    line_info.flags = 0;
    line_info.x1 = x1;
    line_info.y1 = y1;
    line_info.x2 = x2;
    line_info.y2 = y2;
    line_info.fgcolor = colormap [colidx];
    if ( ioctl(fb_fd, FBIO_EP93XX_LINE, &line_info) < 0 ) {
        perror("FBIO_EP93XX_LINE command error"); /* ioctl error */
    }
}

А вот обычная прямая
void line (int x1, int y1, int x2, int y2, unsigned colidx)
{
        int tmp;
        int dx = x2 - x1;
        int dy = y2 - y1;

        if (abs (dx) < abs (dy)) {
                if (y1 > y2) {
                        tmp = x1; x1 = x2; x2 = tmp;
                        tmp = y1; y1 = y2; y2 = tmp;
                        dx = -dx; dy = -dy;
                }
                x1 <<= 16;
                /* dy is apriori >0 */
                dx = (dx << 16) / dy;
                while (y1 <= y2) {
                        pixel (x1 >> 16, y1, colidx);
                        x1 += dx;
                        y1++;
                }
        } else {
                if (x1 > x2) {
                        tmp = x1; x1 = x2; x2 = tmp;
                        tmp = y1; y1 = y2; y2 = tmp;
                        dx = -dx; dy = -dy;
                }
                y1 <<= 16;
                dy = dx ? (dy << 16) / dx : 0;
                while (x1 <= x2) {
                        pixel (x1, y1 >> 16, colidx);
                        y1 += dy;
                        x1++;
                }
        }
}

Еще я делал проверку в fb-драйвере на горизонтальность/вертикальность и горизонтальную/вертикальную рисовал заполнением прямоугольника, как cirrus рекомендует.
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: dimaz от 26 Октября, 2009, 21:31:48
Так, доку по акселерации нашёл.
Можешь чуть рассказать о там, как там цвета закавать?
Какие там можно там типы данных для цвета указывать (ARGB, и.т.п.)?

И надо какую-нить инициализацию делать, кроме открытия файла фреймбуфера?
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: dimaz от 27 Октября, 2009, 22:38:51
Посмотрел ep93xxfb файлы в исходниках ядра 2.6.21.
Там есть ещё функция ep93xxfb_imageblit, но там код ее закомментирован и поставлена заглушка без оптимизации, как я понимаю.
Если код раскомментировать, он работать будет?) Или он там нерабочий?)

Эта функция ж, как я понимаю, копирует картинку из адреса в RAM в видеопамять?
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: denis от 10 Декабря, 2009, 12:00:59
Добрый день.
Плата Tion-Prov2, компилятор arm-linux-gcc-4.1.1-920t.tar.bz2, кфс заводская.
При запуске тестового много поточного приложения наблюдается утечка памяти и в следствии падение приложения.

void *Thr1( void *arg )
{
sleep(10);
return 0;
};

int main(int argc, char * argv[])
{
pthread_t thread1;                          
for(;;){
pthread_create( &thread1, NULL, Thr1, NULL );
sleep(1);
};

return EXIT_SUCCESS;
};

Хотелось бы увидеть настройки с которыми собиралась КФС, и настройки библиотек;
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: asv от 10 Декабря, 2009, 13:06:02
> Хотелось бы увидеть настройки с которыми собиралась КФС, и настройки библиотек;

См. в архивах crater:
http://www.zao-zeo.ru/dokuwiki/doku.php/linux#различные_сборки_кфс

Но прежде чем переходить по ссылке выше:
man pthread_create; man pthread_join; man pthread_attr_init
Название: Re: сборка toolchain x86_64 для EP9315
Отправлено: denis от 10 Декабря, 2009, 15:57:39
Добавил pthread_detach помогло.

спасибо за помощь.