ЗАО «ЗЭО»
Техническая поддержка пользователей => ОС Linux, U-Boot => Тема начата: 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
Подскажите, пожалста, что не так +)
-
Посмотрите здесь, будет проще:
http://www.zao-zeo.ru/forum/index.php?topic=138.0
PS.
>а не возиться с эмуляцией 32 бит.
Тогда возитесь с работой на 64х битах.
-
Да я как раз этот пост читал перед тем, как взяться за сборку 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)
-
На рабочем компе у меня стоит слака 64 бита. Вот и хотелось бы собрать нативный toolchain для EP9315, а не возиться с эмуляцией 32 бит.
А чего с ней возиться? Я когда-то собрал себе x32 тулчейн на debian i386. Недавно перешёл на debian x64, так мой 32-х битный тулчейн заработал без всяких усилий с моей стороны (только PATH прописал). Скорость компиляции особо не изменилась, генерируемый код такой же.
-
Проблема в том, что на x64 платформе toolchain не собирается. Понятно, что если рабочая машина с системой x64, то для сборки toolchain ставить x86 ядро, x86 библиотеки и x86 инструментарий не очень, проще взять уже собранный (но для x86).
-
Всё оке. Toolchain с uclibc скомпилился, openssl и busybox собрался, qt embedded 4.5.3 тоже.
Пришлось немного повозиться, поправить некоторые вещи, но вроде в итоге всё хорошо.
Проверить в работе пока не могу, платка приедет через дня 2.
А 32-битным toolchain'ом мне не попользоваться, потому-что в слаке 64-битной по умолчанию нет поддержки эмуляции 32 бит.
Нет либ 32-битных. У меня просто так бы этот toolchain не заработал бы, ещё больше геморроя было б+)
Сейчас скриптам от faa пытаюсь прриделать binutils-2.20. Вот пока компилится+)
Вот осталось подождать прихода тестового девайса, собрать всё, скомпиленное мной в образ для платки и залить потестить...
-
Проблема в том, что на 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
ЗЫ: Был вчера на ЧипЭкспо - думал, кто из разрабов будет - никого. Только один "продавец" (как он сам сказал :).
-
Кстати, ребят, а ссылку на последний патч для ядра 2.6.30 не подкините?
И ещё бы хотелось бы прикрутить сжатие lzma для ядра и ramdisk...
И ещё один вопросик: есть ли какой-нить доступ из под линуха к встроенным флехам на тион-про v2?
-
> И ещё один вопросик: есть ли какой-нить доступ из под линуха к встроенным флехам на тион-про v2?
Есть, обычный доступ (в 2.6.20 с патчем и в 2.6.30 сразу).
-
Кстати, ребят, а ссылку на последний патч для ядра 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.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 прикрутить))
-
это, а fs то с акселерацией чтоль сильно быстрее?
эх, эту акселерацию б ещё к qt прикрутить))
На рисовании прямых и заливке прямоугольников в разы. Но я делал через ioctl.
Наверное и qt можно прикрутить. Если брезенхема и прочее от cirrus-ов прямо в драйвер без ioctl воткнуть. Или qt пропатчить :)
Кстати, с glibc собрать можно, но образ будет намного толще. Функционала uClibc вполне достаточно и системные либы меньше места занимают.
-
это, а fs то с акселерацией чтоль сильно быстрее?
эх, эту акселерацию б ещё к qt прикрутить))
На рисовании прямых и заливке прямоугольников в разы. Но я делал через ioctl.
Наверное и qt можно прикрутить. Если брезенхема и прочее от cirrus-ов прямо в драйвер без ioctl воткнуть. Или qt пропатчить :)
Кстати, с glibc собрать можно, но образ будет намного толще. Функционала uClibc вполне достаточно и системные либы меньше места занимают.
Да, с glibc я ступил, думал, qt c uclibc не скомпилится, но потом нашёл инфу нужную+)
Это, а вот про акселерацию fb не можешь поподробнее рассказать, где почитать про это ускорение в тионе, может возьмусь когда-нить реализовать +)
Но как только вызывать эти ускоренные функции? Там же через какие-то регистры до функций граф. можно достучаться?
-
Это, а вот про акселерацию 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 рекомендует.
-
Так, доку по акселерации нашёл.
Можешь чуть рассказать о там, как там цвета закавать?
Какие там можно там типы данных для цвета указывать (ARGB, и.т.п.)?
И надо какую-нить инициализацию делать, кроме открытия файла фреймбуфера?
-
Посмотрел ep93xxfb файлы в исходниках ядра 2.6.21.
Там есть ещё функция ep93xxfb_imageblit, но там код ее закомментирован и поставлена заглушка без оптимизации, как я понимаю.
Если код раскомментировать, он работать будет?) Или он там нерабочий?)
Эта функция ж, как я понимаю, копирует картинку из адреса в RAM в видеопамять?
-
Добрый день.
Плата 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;
};
Хотелось бы увидеть настройки с которыми собиралась КФС, и настройки библиотек;
-
> Хотелось бы увидеть настройки с которыми собиралась КФС, и настройки библиотек;
См. в архивах crater:
http://www.zao-zeo.ru/dokuwiki/doku.php/linux#различные_сборки_кфс
Но прежде чем переходить по ссылке выше:
man pthread_create; man pthread_join; man pthread_attr_init
-
Добавил pthread_detach помогло.
спасибо за помощь.