ЗАО «ЗЭО»

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

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

Новости:

Автор Тема: сборка toolchain x86_64 для EP9315  (Прочитано 13160 раз)

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

dimaz

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 14
сборка toolchain x86_64 для EP9315
« : 21 Октября, 2009, 22:59:43 »

На рабочем компе у меня стоит слака 64 бита. Вот и хотелось бы собрать нативный toolchain для EP9315, а не возиться с эмуляцией 32 бит.

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

Я скачал патчи от Martin Guy 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

Подскажите, пожалста, что не так +)
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: сборка toolchain x86_64 для EP9315
« Ответ #1 : 21 Октября, 2009, 23:05:36 »

Посмотрите здесь, будет проще:
http://www.zao-zeo.ru/forum/index.php?topic=138.0

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

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

Записан

dimaz

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 14
Re: сборка toolchain x86_64 для EP9315
« Ответ #2 : 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
« Последнее редактирование: 21 Октября, 2009, 23:36:26 от dimaz »
Записан

laborer

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 29
Re: сборка toolchain x86_64 для EP9315
« Ответ #3 : 22 Октября, 2009, 10:26:02 »

На рабочем компе у меня стоит слака 64 бита. Вот и хотелось бы собрать нативный toolchain для EP9315, а не возиться с эмуляцией 32 бит.

А чего с ней возиться? Я когда-то собрал себе x32 тулчейн на debian i386. Недавно перешёл на debian x64, так мой 32-х битный тулчейн заработал без всяких усилий с моей стороны (только PATH прописал). Скорость компиляции особо не изменилась, генерируемый код такой же.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: сборка toolchain x86_64 для EP9315
« Ответ #4 : 22 Октября, 2009, 11:54:43 »

Проблема в том, что на x64 платформе toolchain не собирается. Понятно, что если рабочая машина с системой x64, то для сборки toolchain ставить x86 ядро, x86 библиотеки и x86 инструментарий не очень, проще взять уже собранный (но для x86).
Записан

dimaz

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 14
Re: сборка toolchain x86_64 для EP9315
« Ответ #5 : 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. Вот пока компилится+)

Вот осталось подождать прихода тестового девайса, собрать всё, скомпиленное мной в образ для платки и залить потестить...
Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: сборка toolchain x86_64 для EP9315
« Ответ #6 : 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

ЗЫ: Был вчера на ЧипЭкспо - думал, кто из разрабов будет - никого. Только один "продавец" (как он сам сказал :).
Записан

dimaz

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 14
Re: сборка toolchain x86_64 для EP9315
« Ответ #7 : 23 Октября, 2009, 23:13:59 »

Кстати, ребят, а ссылку на последний патч для ядра 2.6.30 не подкините?

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

И ещё один вопросик: есть ли какой-нить доступ из под линуха к встроенным флехам на тион-про v2?
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: сборка toolchain x86_64 для EP9315
« Ответ #8 : 24 Октября, 2009, 12:40:04 »

> И ещё один вопросик: есть ли какой-нить доступ из под линуха к встроенным флехам на тион-про v2?

Есть, обычный доступ (в 2.6.20 с патчем и в 2.6.30 сразу).
Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: сборка toolchain x86_64 для EP9315
« Ответ #9 : 24 Октября, 2009, 14:13:26 »

Кстати, ребят, а ссылку на последний патч для ядра 2.6.30 не подкините?


Лежит у меня на ftp 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 без акселерации. Ждем-с :)
« Последнее редактирование: 24 Октября, 2009, 14:48:04 от faa »
Записан

dimaz

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 14
Re: сборка toolchain x86_64 для EP9315
« Ответ #10 : 24 Октября, 2009, 15:46:12 »

Кстати, ребят, а ссылку на последний патч для ядра 2.6.30 не подкините?


Лежит у меня на ftp 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 прикрутить))
Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: сборка toolchain x86_64 для EP9315
« Ответ #11 : 24 Октября, 2009, 20:31:52 »

это, а fs то с акселерацией чтоль сильно быстрее?

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

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

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

dimaz

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 14
Re: сборка toolchain x86_64 для EP9315
« Ответ #12 : 25 Октября, 2009, 22:15:34 »

это, а fs то с акселерацией чтоль сильно быстрее?

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

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

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

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

Это, а вот про акселерацию fb не можешь поподробнее рассказать, где почитать про это ускорение в тионе, может возьмусь когда-нить реализовать +)
Но как только вызывать эти ускоренные функции? Там же через какие-то регистры до функций граф. можно достучаться?
« Последнее редактирование: 25 Октября, 2009, 22:24:46 от dimaz »
Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: сборка toolchain x86_64 для EP9315
« Ответ #13 : 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
Пример использования
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 рекомендует.
Записан

dimaz

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 14
Re: сборка toolchain x86_64 для EP9315
« Ответ #14 : 26 Октября, 2009, 21:31:48 »

Так, доку по акселерации нашёл.
Можешь чуть рассказать о там, как там цвета закавать?
Какие там можно там типы данных для цвета указывать (ARGB, и.т.п.)?

И надо какую-нить инициализацию делать, кроме открытия файла фреймбуфера?
Записан