ЗАО «ЗЭО»
Техническая поддержка пользователей => ОС Linux, U-Boot => Тема начата: yh от 07 Сентября, 2010, 14:12:55
-
Собрал Buildroot 2010.05. Тулчейн используется внутренний, gcc4.2.4 с патчами отсюда http://www.zao-zeo.ru/forum/index.php?topic=138.0 (http://www.zao-zeo.ru/forum/index.php?topic=138.0), uCLibc 0.9.31, ядро 2.6.35.4, u-boot 1.3.3, qt-4.7.0-beta2. Тулчейн можно использовать для сборки программ отдельно от buildroot.
Как использовать:
1. Установить glibc-static-devel, tftp-server
2. Настроить пути в start.sh
3. Настроить в buldroot куда скачивать исходники программ
4. Выбрать нужные пакеты в buildroot
5. start.sh
Примечания:
1. UBoot и Linux заточены только под два монитора mtf-tw70sp941-av и mtf-t070acslp-lb, необходимо
добавлять видеорежимы для ваших мониторов.
2. Qt не собирается с поддержкой freetype, поэтому нельзя использовать ttf шрифты.
QTBUG-7904: http://bugreports.qt.nokia.com/browse/QTBUG-7904
uClibc not support fcvt(), ecvt() - see SuSv3 Legacy
3. Видеодрайвер: imageblit аппаратно ускоряет только шрифты (image->depth == 1bpp), проблемы с ioctl.
Рабочий конфиг и более подробная информация есть в архиве.
Взять можно здесь ftp://ftp.ntcsm.ru/pub/tion9315/buildroot/buildroot-2010.05-rev37.tar.bz2 (ftp://ftp.ntcsm.ru/pub/tion9315/buildroot/buildroot-2010.05-rev37.tar.bz2)
-
1. Насколько я понял, glibc-static-devel для Ubuntu будет называться libc6-dev - установлено. Грузить Тион задумано с другой машины, поэтому tftp сервер не устанавливал туда, где собираю buildroot
2. Изменил start.sh:
#!/bin/sh
cd /home/geo/zaozeo/buildroot-2010.05-rev37
#OUTDIR='../../../nfsroot/buildroot-free-0.1'
OUTDIR='_outdir'
KERNELNAME='uImage-free-2.6.35.4'
#TFTPDIR='/var/lib/tftpboot'
make O=$OUTDIR V=99 $1
ln -sf buildroot-free-0.1/target $OUTDIR/../rootfs
$OUTDIR/host/usr/bin/mkimage -A arm -O linux -T kernel -C none -a 0x80000 -e 0x80000 -d $OUTDIR/images/zImage
#cp -f $OUTDIR/images/$KERNELNAME $TFTPDIR
#ln -f $TFTPDIR/$KERNELNAME $TFTPDIR/uImage
3. Настроил в buildroot папку для исходников программ (каталоги _outdir и _dl создал в корне buildroot).
4. Выбрал пакеты (конфиг прилагаю)
5. Запустил start.sh
В итоге после нескольких часов сборки в процессах висит
geo@thtelecom:~/zaozeo/buildroot-2010.05-rev37/_outdir/build/ncurses-5.7$ ps ax | grep tic
6873 ? S 0:00 /bin/sh -c DESTDIR=/home/geo/zaozeo/buildroot-2010.05-rev37/_outdir/staging-4.2.4 \?prefix=/usr \?exec_prefix=/usr \?bindir=/usr/bin \?top_srcdir=.. \?srcdir=. \?datadir=/usr/share \?ticdir=/usr/share/terminfo \?source=terminfo.tmp \?cross_compiling=yes \?/bin/sh ./run_tic.sh
6874 ? S 0:00 /bin/sh ./run_tic.sh
6880 ? R 1362:45 tic -x -s -o /home/geo/zaozeo/buildroot-2010.05-rev37/_outdir/staging-4.2.4/usr/share/terminfo terminfo.tmp
Лог заканчивается строками (полный лог прилагаю):
** Building terminfo database, please wait...
Running tic to install /home/geo/zaozeo/buildroot-2010.05-rev37/_outdir/staging-4.2.4/usr/share/terminfo ...
You may see messages regarding extended capabilities, e.g., AX.
These are extended terminal capabilities which are compiled
using
tic -x
If you have ncurses 4.2 applications, you should read the INSTALL
document, and install the terminfo without the -x option.
Сервер удалённый, связь с ним может оборваться, поэтому запускал start.sh cron'ом. Для того, чтобы завершить его ничего лучше не придумал, чем killall start.sh (потом killall tic и killall make)
Попробовал убрать в файле /_outdir/build/ncurses-5.7/misc/run_tic.sh:
#if ( $SHLIB tic$suffix -x -s -o $TERMINFO $source )
if ( $SHLIB tic$suffix -s -o $TERMINFO $source )
Затем запустил start.sh снова, но он почти сразу вылетел:
rm -rf /home/geo/zaozeo/buildroot-2010.05-rev37/_outdir/build/buildroot-config
mkdir -p /home/geo/zaozeo/buildroot-2010.05-rev37/_outdir/build
cp -dpRf package/config/buildroot-config /home/geo/zaozeo/buildroot-2010.05-rev37/_outdir/build/buildroot-config
toolchain/patch-kernel.sh /home/geo/zaozeo/buildroot-2010.05-rev37/_outdir/toolchain-4.2.4/linux-2.6.35.4 toolchain/kernel-headers \
linux-2.6.35.4-\*.patch{,.gz,.bz2}
ls: cannot access linux-2.6.35.4-*.patch: No such file or directory
ls: cannot access linux-2.6.35.4-*.patch.gz: No such file or directory
ls: cannot access linux-2.6.35.4-*.patch.bz2: No such file or directory
Aborting. Reject files found.
make: *** [/home/geo/zaozeo/buildroot-2010.05-rev37/_outdir/toolchain-4.2.4/linux-2.6.35.4/.patched] Error 1
/home/geo/zaozeo/buildroot-2010.05-rev37/start.sh: 12: _outdir/host/usr/bin/mkimage: not found
Что нужно сделать, чтобы дособрать ядро и кфс? Ведь если сделать clean, то tic будет вызываться с -x, а это опять вызовет ошибку.
Кстати, собирал на x86 сервере, поэтому чтобы запустить menuconfig, распаковал немодифицированный buildroot-2010.05, сделал make menuconfig и скопировал оттуда packages/config/mconf (просто удаление mconf вело к ошибкам:
geo@thtelecom:~/zaozeo/buildroot-2010.05-rev37-1$ make menuconfig
make CC="/usr/lib/ccache/gcc" -C package/config mconf
make[1]: Entering directory `/home/geo/zaozeo/buildroot-2010.05-rev37-1/package/config'
/usr/lib/ccache/gcc -DCURSES_LOC="<ncurses.h>" -DLOCALE -g -O2 -c lxdialog/checklist.c -o lxdialog/checklist.o
/usr/lib/ccache/gcc -DCURSES_LOC="<ncurses.h>" -DLOCALE -g -O2 -c lxdialog/inputbox.c -o lxdialog/inputbox.o
/usr/lib/ccache/gcc -DCURSES_LOC="<ncurses.h>" -DLOCALE -g -O2 -c lxdialog/menubox.c -o lxdialog/menubox.o
/usr/lib/ccache/gcc -DCURSES_LOC="<ncurses.h>" -DLOCALE -g -O2 -c lxdialog/textbox.c -o lxdialog/textbox.o
/usr/lib/ccache/gcc -DCURSES_LOC="<ncurses.h>" -DLOCALE -g -O2 -c lxdialog/util.c -o lxdialog/util.o
/usr/lib/ccache/gcc -DCURSES_LOC="<ncurses.h>" -DLOCALE -g -O2 -c lxdialog/yesno.c -o lxdialog/yesno.o
make[1]: *** No rule to make target `/usr/include/ncurses/ncurses.h', needed by `mconf.o'. Stop.
make[1]: Leaving directory `/home/geo/zaozeo/buildroot-2010.05-rev37-1/package/config'
make: *** [package/config/mconf] Error 2
)
-
Я столкнулся с тем же когда собирал buildroot-2009.08
Проблема началась после того как я снес свой ALTLinux 4.1 и поставил ALTLinux 5.0
В новом линуксе, как оказалось кое-где вместо жестких ссылок стоят мягкие ссылки. Makefile в buildroot этого не учитывает.
У одного моего друга удалось сделать сборку. После сообщения об TIC , этот парень скопировал целиком директорию
./usr/share/terminfo (на своей машине!) в директорию buildroot/build_arm/stagging_dir/usr/share/
и затем сказал make BOARD=tion ...
Я один раз попробовал также, но у меня это не сработало, наверное надо было в начале сделать distclean, а то я, было, в предыдущих попытках,
после этой ошибки снова запускал сборку, и там что-то подпортилось.
Сейчас я, чтоб не тратить время на эксперименты, делаю маленько по другому. Еще ранее, как только перестало собираться, я решил проверить на другом компьютере где стоит Линукс openSUSE. Там всё благополучно (с одной лишь правкой исходника, там имя функции getline конфликтовало), и я скопировал и сохранил
от туда buildroot/build_arm/stagging_dir/usr/share/terminfo, и вставляю его когда требуется.
-
Спасибо. Надо, видимо, попробовать на другой системе - копирование каталога terminfo из buildroot-2009.08 и из /usr/share системы у меня тоже ничего не дало.
-
buildroot из топика собирался и собирается на Mandriva 2010.х
Специфических вещей от этого дистра старались не использовать.
В настоящее время yh в отпуске, вернется 12.01.2011.
Тогда и сможет ответить на содержательные вопросы.
-
Похоже, зависание происходит на хостах с установленной более ранней версией ncurses, чем та, которая собирается.
После аварийного завершения процесса сборки я убрал опцию "-x" при вызове tic в файле _outdir/build/ncurses-5.7/misc/run_tic - процесс пошёл дальше (при этом в terminfo были отключены какие-то расширенные возможности терминалов, за которые отвечала эта опция), но остановился на каком-то из этапов сборки mc. Когда я исключил mc из собираемых пакетов (он был включен по-умолчанию в buildroot-2010.05-rev37), сборка завершилась успешно.
Вопрос такой: что нужно переконфигурировать и пересобирать, чтобы система заработала?
Потому что собранный u-boot после загрузки в Тион(-Про2-рев.3) выдаёт сообщение *** Warning - Bad CRC, using default environment
, а собранное ядро (видимо, с конфигурацией по-умолчанию?) при загрузке с КФС на USB-флешке останавливается на Starting kernel ...
-
> Потому что собранный u-boot после загрузки в Тион(-Про2-рев.3) выдаёт сообщение
*** Warning - Bad CRC, using default
environment
saveenv
> а собранное ядро (видимо, с конфигурацией по-умолчанию?) при загрузке с КФС на USB-флешке останавливается на Starting kernel ...
Какое значение bootargs в U-Boot и какой вообще это U-Boot?
-
В .applied_patches_list такие строки:
u-boot-1.3.3-001-zaozeo-svn894.patch
u-boot-1.3.3-011-radiy-tion9315.patch
а проблема, похоже, в ядре (как и в 2009.05 нужно конфигурировать) - со старым 2.6.30 (в котором не работает rtc) запустилось.
Для ядра .applied_patches_list такой:
linux-2.6.35.4-0010-arm-includes.patch
linux-2.6.35.4-0020-tion9315.patch
-
> со старым 2.6.30 (в котором не работает rtc)
Не совсем по теме, но rtc там работало, и если даже почему-то перестало, то это легко исправить, так как используется готовый драйвер совместимой ИМС RTC и программный I2C.
-
Да, я не так выразился - у меня не завелось, тут описывал проблему:
http://www.zao-zeo.ru/forum/index.php?topic=63.0 (http://www.zao-zeo.ru/forum/index.php?topic=63.0)
Есть какие-нибудь соображения, как сделать, чтоб заработало? Или куда копать - дело в ядре и драйверах или в КФС?
-
Не заводится VGA. В файле /mach-ep93xx/tion9315.c после
{
.name = "mtf-tw70sp941-av",
.refresh = 60,
.xres = 800,
.yres = 480,
.pixclock = 30060,
.left_margin = 1,
.right_margin = 1,
.upper_margin = 1,
.lower_margin = 1,
.hsync_len = 256,
.vsync_len = 45,
.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
// .flag
/* Pixel clock, porches, etc */
// NULL, 60, 800, 480, 39721, 40, 24, 39, 9, 96, 2, 0, FB_VMODE_NONINTERLACED
},
добавил по аналогии
{
.name = "vga640x480",
.refresh = 60,
.xres = 640,
.yres = 480,
.pixclock = 35242,
.left_margin = 40,
.right_margin = 96,
.upper_margin = 60,
.lower_margin = 32,
.hsync_len = 24,
.vsync_len = 11,
.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
},
В u-boot panel=vga640x480.
pixclock подглядел в Documentation/fb/framebuffer.txt, остальное в патче к ядру 2.6.20.21.
Промахнулся здесь, или где-то еще надо править?