PDA

Bekijk de volledige versie : OpenWRT (Buildroot & FPU)



ryzhov_al
06-11-2011, 18:24
lly, theMIROn, несмотря на то, что ваш тулчейн сконфигурирован (http://code.google.com/p/wl500g/source/browse/toolchain/toolchain/uClibc/config/0.9.32/common) с UCLIBC_HAS_FLOATS=y, у меня с ним не собирается zlib.so при использовании CFLAGS="... -msoft-float":

(cd /media/openwrt/trunk/build_dir/target-mipsel-unknown-linux-gnu/zlib-1.2.5; AR=mipsel-uclibc-ar AS="mipsel-uclibc-gcc -c -Os -pipe -mips32 -mtune=mips32 -fno-caller-saves -fhonour-copts -msoft-float" LD=mipsel-uclibc-ld NM=mipsel-uclibc-nm CC="mipsel-uclibc-gcc" GCC="mipsel-uclibc-gcc" CXX="mipsel-uclibc-g++" RANLIB=mipsel-uclibc-ranlib STRIP=mipsel-uclibc-strip OBJCOPY=mipsel-uclibc-objcopy OBJDUMP=mipsel-uclibc-objdump SIZE=mipsel-uclibc-size LDSHARED="mipsel-uclibc-gcc -shared -Wl,-soname,libz.so.1" CFLAGS="-Os -pipe -mips32 -mtune=mips32 -fno-caller-saves -fhonour-copts -msoft-float -fpic -fhonour-copts" ./configure --prefix=/usr --shared --uname=Linux );
Checking for shared library support...
Tested mipsel-uclibc-gcc -w -c -Os -pipe -mips32 -mtune=mips32 -fno-caller-saves -fhonour-copts -msoft-float -fpic -fhonour-copts -fPIC ztest17214.c
Tested mipsel-uclibc-gcc -shared -Wl,-soname,libz.so.1 -Os -pipe -mips32 -mtune=mips32 -fno-caller-saves -fhonour-copts -msoft-float -fpic -fhonour-copts -fPIC -o ztest17214.so ztest17214.o
/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-linux-uclibc-ld: Warning: ztest17214.so uses hard float, ztest17214.o uses soft float
No shared library support; try without defining CC and CFLAGS
Почему? У нас в тулчейне всё же используется hard float и мне необходимо подкрутить OpenWRT Buildroot для того, чтобы исключить ключ -msoft-float из CFLAGS?

lly
06-11-2011, 18:40
lly, theMIROn, несмотря на то, что ваш тулчейн сконфигурирован (http://code.google.com/p/wl500g/source/browse/toolchain/toolchain/uClibc/config/0.9.32/common) с UCLIBC_HAS_FLOATS=y, у меня с ним не собирается zlib.so при использовании CFLAGS="... -msoft-float":

А откуда ты вытащил "-msoft-float"? Я его не вижу в zlib/Makefile (https://dev.openwrt.org/browser/trunk/package/zlib/Makefile?rev=28783), значит в .config SOFT_FLOAT=y ?
"-msoft-float" имеет смысл только в случае отсутствия FPU, FPU-эмулятора в ядре и наличия хорошей математической библиотеки. А у нас эмулятор в ядре.

ryzhov_al
06-11-2011, 18:56
А откуда ты вытащил "-msoft-float"?OpenWRT buildroot подарил, в дефолтной конфигурации. Напомню, что я пересобираю им пакеты.
ОК, я уберу soft float. Посмотри, пожалуйста, на другие ключи в составе CFLAGS постом выше. Всё ли в порядке?

lly
06-11-2011, 19:09
OpenWRT buildroot подарил, в дефолтной конфигурации.
Придётся поднастроить...

Посмотри, пожалуйста, на другие ключи в составе CFLAGS постом выше. Всё ли в порядке?

зачем-то два раза пробилось -fhonour-copts, но это косметика
я бы очень внимательно посмотрел зачем добавили -fno-caller-saves , обычно эта опция не нужна. Cпецифично для zlib?

ryzhov_al
07-11-2011, 05:53
Придётся поднастроить...


зачем-то два раза пробилось -fhonour-copts, но это косметика
Мой косяк.

я бы очень внимательно посмотрел зачем добавили -fno-caller-saves , обычно эта опция не нужна. Cпецифично для zlib?
Нет. Тоже OpenWRT Buildroot подарил, в CONFIG_TARGET_OPTIMIZATION. Убрал.

ryzhov_al
18-10-2012, 09:15
А откуда ты вытащил "-msoft-float"? Я его не вижу в zlib/Makefile (https://dev.openwrt.org/browser/trunk/package/zlib/Makefile?rev=28783), значит в .config SOFT_FLOAT=y ?
"-msoft-float" имеет смысл только в случае отсутствия FPU, FPU-эмулятора в ядре и наличия хорошей математической библиотеки. А у нас эмулятор в ядре.Странно как-то. В моём (http://wl500g.info/entry.php?2929-TP-Links-TL-MR3020) TP-Link TL-MR3020 полноценный FPU есть (http://wl500g.info/showthread.php?30444-%D1%F0%E0%E2%ED%E5%ED%E8%E5-%EF%F0%EE%E8%E7%E2%EE%E4%E8%F2%E5%EB%FC%ED%EE%F1%F 2%E8-%EF%F0%EE%F6%E5%F1%F1%EE%F0%EE%E2-%F0%EE%F3%F2%E5%F0%EE%E2), но при сборки софта OpenWRT'шники всё равно используют soft float. Почему?

kernel 3.3.8,
gcc 4.6.3,
uClibc 0.9.33.2.
Или тулчейн сам перенаправляет float point операции в FPU блок? В составе тулчейна libm есть, в составе /lib/* на устройстве тоже.

lly
18-10-2012, 09:39
Странно как-то. В моём (http://wl500g.info/entry.php?2929-TP-Links-TL-MR3020) TP-Link TL-MR3020 полноценный FPU есть (http://wl500g.info/showthread.php?30444-%D1%F0%E0%E2%ED%E5%ED%E8%E5-%EF%F0%EE%E8%E7%E2%EE%E4%E8%F2%E5%EB%FC%ED%EE%F1%F 2%E8-%EF%F0%EE%F6%E5%F1%F1%EE%F0%EE%E2-%F0%EE%F3%F2%E5%F0%EE%E2), но при сборки софта OpenWRT'шники всё равно используют soft float. Почему?

А с чего ты взял что там железный FPU? Я спеки поленился искать, есть линк?
Они видимо считают что soft-float быстрее чем FPU-эмулятор в ядре.

AndreyUA
18-10-2012, 09:52
Странно как-то. В моём (http://wl500g.info/entry.php?2929-TP-Links-TL-MR3020) TP-Link TL-MR3020 полноценный FPU есть (http://wl500g.info/showthread.php?30444-%D1%F0%E0%E2%ED%E5%ED%E8%E5-%EF%F0%EE%E8%E7%E2%EE%E4%E8%F2%E5%EB%FC%ED%EE%F1%F 2%E8-%EF%F0%EE%F6%E5%F1%F1%EE%F0%EE%E2-%F0%EE%F3%F2%E5%F0%EE%E2), но при сборки софта OpenWRT'шники всё равно используют soft float. Почему?

kernel 3.3.8,
gcc 4.6.3,
uClibc 0.9.33.2.
Или тулчейн сам перенаправляет float point операции в FPU блок? В составе тулчейна libm есть, в составе /lib/* на устройстве тоже.
Интересная железка, а как у него работают 3G модемы с родной прошивой? Я игрался с WL-330N3G, там rt3070 и хороший мешочек :)

ryzhov_al
18-10-2012, 10:01
А с чего ты взял что там железный FPU? Я спеки поленился искать, есть линк?Нет, спеки на AR9331 не нашёл, только Wiki (http://wiki.openwrt.org/toh/tp-link/tl-mr3020) по роутеру.
С чего взял? Только по косвенным признакам:


нет упоминаний о Algorithmics/MIPS FPU Emulator в dmesg,
шустро проходит (http://wl500g.info/showthread.php?30444-%D1%F0%E0%E2%ED%E5%ED%E8%E5-%EF%F0%EE%E8%E7%E2%EE%E4%E8%F2%E5%EB%FC%ED%EE%F1%F 2%E8-%EF%F0%EE%F6%E5%F1%F1%EE%F0%EE%E2-%F0%EE%F3%F2%E5%F0%EE%E2) FPU-test, наравне с Raspberry Pi, где FPU, насколько знаю, есть,

Но в конфиге ядра CONFIG_MIPS_FPU_EMU=y. Противоречиво как-то.
Вот (http://pastebin.com/8M4nTCWu) бутлог и содержимое /proc/cpuinfo.


Интересная железка, а как у него работают 3G модемы с родной прошивой? Я игрался с WL-330N3G, там rt3070 и хороший мешочек :)Нет, заводскую прошивку снёс первым делом после сохранения (http://pastebin.com/eGed3m7M) оригинального образа флеша. Оригинальная прошивка при использовании роутера для своих нужд малопригодна.
А железяка да, рулит. Я, скажем, не ожидал, что она будет читать с подключенного USB-HDD со скоростью 34МБайт/c.

LnrMn
19-10-2012, 17:07
Сначала взял MR3020 (999р. месяц назад).. Поковырял.. Получился 3020+. (64MB RAM)
Есть же WR703! В России ,почему-то, нет его. Зато есть WR702..
Купил в ДНС WR702 (790р. две недели как). Он на "микротике".
ОЗУ 16МБ, Флеш 2МБ. С виду (по внутренностям) .. ну полный отстой... Однако - полный аналог 703.
Традиционно - перепаиваем оперативку, флеш, допаиваем USB разъем..
Получаем 3020+, реально WR702 +++ (RAM, FLASH, USB).

+ Меньше размером и дешевле ~на 30%.
- Serial - маленькие площадки. Кому-то будет трудно сделать консоль.
жирный минус Нужны ОЗУ и Флеш , паяльник и программатор. ;)

Мне, офигенно, понравилось в опенвроте работа с флешкой!! ВАЩЕ прозрачно!
поясняю - на jaffs флеш встаёт в "оверлей" и .. Читаем матчасть на OpenWRT.

А что наиболее!!! --- С полпинка, на UBUNTU ВСЁ СОБИРАЕТСЯ БЕЗ БУБНОВ!!!
Правильные, главное, рабочие тулчейны для сборки. Не отваливаются из за отсутствия, какого-либо, пакета.
Просто докачивает его, тихо... Аттитуда... меня очень порадовала!!!

RyzhovAl угу это правда Раз уж разговорились... Вот ..как-то.. так, IMHO.

ryzhov_al
19-10-2012, 20:02
Традиционно - перепаиваем оперативку.Приятный сюрприз в том, что используются те же чипы (http://wiki.openwrt.org/toh/tp-link/tl-wr703n#mb.ram.mod), что и для апгрейда Wl-500g premium v1.

LnrMn
19-10-2012, 20:05
Приятный сюрприз в том, что используются те же чипы (http://wiki.openwrt.org/toh/tp-link/tl-wr703n#mb.ram.mod), что и для апгрейда Wl-500g premium v1.

Которыми мы запаслись впрок :)

ryzhov_al
19-10-2012, 20:06
Которыми мы запаслись впрок :)Аналогично. Вот и заначка пригодилась:)
Сейчас поди сыщи эти DDR1 с нужной организацией банков.

ryzhov_al
11-02-2013, 12:52
staticroute, Megagloom, обратите внимание на очень убедительный FPU Emulator в новых чипах Atheros'а. Что в TL-MR3020, что в WNDR3800, что в TL-WDR4300.
Может у них числодробилка FPU аппаратная?

staticroute
11-02-2013, 13:36
staticroute, Megagloom, обратите внимание на очень убедительный FPU Emulator в новых чипах Atheros'а. Что в TL-MR3020, что в WNDR3800, что в TL-WDR4300.
Может у них числодробилка FPU аппаратная?

интересно, пока что-то ничего не нагуглил

ryzhov_al
18-04-2013, 16:23
Да, да, я всё ещё ношусь с chroot и ищу куда его присунуть:)

Для того, чтобы воспользоваться ванильным репозиторием OpenWRT на текущей прошивке необходимо:

1. Подготовить образ корневой файловой системы OpenWRT

Проще всего с помощью Image Builder'а на PC:

wget http://downloads.openwrt.org/attitude_adjustment/12.09/brcm47xx/generic/OpenWrt-ImageBuilder-brcm47xx-for-linux-i486.tar.bz2
tar -xf ./OpenWrt-ImageBuilder-brcm47xx-for-linux-i486.tar.bz2
cd ./OpenWrt-ImageBuilder-brcm47xx-for-linux-i486/
make image
cd ./build_dir/target-mipsel_uClibc-0.9.33.2/
tar -cvzf ./root-brcm47xx.tgz ./root-brcm47xx/

и переправить его на носитель, подключенный к роутеру. Не важно стоит ли на роутере Optware/Entware, лишь бы был доступен аплет chroot. Если его в составе вашей прошивки нет, воспользуйтесь моим статическим бинарником (http://files.ryzhov-al.ru/Routers/chroot-binary/chroot.tgz).

2. Подготовить образ на роутере


cd <folder>
tar -xvzf ./root-brcm47xx.tgz
mount -o bind /dev <folder>/root-brcm47xx/dev
mount -o bind /proc <folder>/root-brcm47xx/proc
mount -o bind /sys <folder>/root-brcm47xx/sys

3. Всё!

Пора нырять в OpenWRT:

chroot ./root-brcm47xx
mkdir /var/lock
opkg update
opkg install <you name it>
/etc/init.d/<you name it> start

Будет работать подавляющее большинство пакетов. Только приготовьтесь к редким глюкам, связанными с отсутствующими в нашем ядре syscall'ами: прошивка OpenWRT основана на более современном ядре.

MercuryV, ты планировал портировать Entware на Iomega iConnect? Пожалуйста! Только выбери (http://downloads.openwrt.org/attitude_adjustment/12.09/) target kirkwood.
Я планировал использовать Entware на своём WD My Book Live. Пожалуйста! Только мне придётся выбрать target ppc40x.

Засада теоретически может возникнуть только в отсутствии chroot на нужной платформе.

ryzhov_al
18-04-2013, 16:56
Вообще, Entware подходит к интересному рубежу (MercuryV, я тебе уже проговаривал это): нам скоро будет больше нечего взять от OpenWRT. Топ NN пакетов у них в более-менее актуальном состоянии, остальные — в довольно замшелом, требующим обновления. Можно, конечно, уйти в отрыв от OpenWRT, поддерживая у себя идиллию, но у нас на это просто не хватит человеческих ресурсов. Нам до сих пор всё успешно удаётся разруливать по той причине, что мы не ввязываемся в крупные авантюры, например, не пытаемся поддерживать несколько target'ов, только MIPSEL.

У нас за это время родился свой собственный фид (http://wl500g-repo.googlecode.com/svn/feeds/rtndev/) с довольно уникальными наработками. Что дальше? Можно влиться со своими наработками в OpenWRT комьюнити и использовать свои наработки только что показанным способом (http://wl500g.info/showthread.php?30901) у нас здесь. Это просто один из многих вариантов.

Я очень рад, что мне удалось привлечь в ряды разработчиков Entware таких толковых коллег. Нам, коллеги надо определяться: куда будем двигаться дальше? Приглашаю к дискуссии.

ЗЫ Вариант вливания в OpenWRT один из самых стрёмных: во-первых, там мы себе больше не хозяева, во-вторых, половину наших наработок просто не примут, в-третьих, OpenWRT — это вечная бета в десяти скомпилированных вариантах, несовместимых друг с другом.

Скорее всего всё закончится изысканием «второго дыхания», чтобы уйти в отрыв от первоисточников.

LnrMn
18-04-2013, 17:26
А, хочу!
Только проблема.... У меня AC66U.

Attitude Adjustment, вполне, себя хорошо показал на мелких [3020 и 703 (Atheros 9331)].

ryzhov_al
18-04-2013, 17:30
Attitude Adjustment, вполне, себя хорошо показал на мелких (3020 и 703).
В чём проблема? На роутере не требуется никаких Entware/Optware, как организовать стартовые скрипты в заводской прошивке я расписывал. Если в заводской прошивке в bb нет аплета chroot, то возьми мой статический бинарник и распакуй на подключенный USB-носитель.

LnrMn
18-04-2013, 17:35
Пока не хочу быть пионером OpenWrt на AC66U.

ryzhov_al
18-04-2013, 17:38
Пока не хочу быть пионером OpenWrt на AC66U.Не хочешь — не кушай ©.

LnrMn
18-04-2013, 17:44
Не хочешь — не кушай ©.

А по существу?? Как его, OpenWrt, накатить на AC66U?

ryzhov_al
18-04-2013, 18:17
А по существу?? Как его, OpenWrt, накатить на AC66U?По существу постом выше написано. Как устанавливать — в этой теме, как запускать автоматически — в другой. Больше разжёвывать нечего.

lly
19-04-2013, 07:09
У нас за это время родился свой собственный фид (http://wl500g-repo.googlecode.com/svn/feeds/rtndev/) с довольно уникальными наработками. Что дальше? Можно влиться со своими наработками в OpenWRT комьюнити и использовать свои наработки только что показанным способом (http://wl500g.info/showthread.php?30901) у нас здесь. Это просто один из многих вариантов.
Если есть желание и возможность, наработки IMHO лучше влить в OpenWRT.

А насчёт остального - сложно сказать, сильно зависит от того, насколько хватит «второго дыхания» :)

lly
03-09-2013, 07:38
На устройство, удовлетворяющее требованиям:
...
2) ядро 2.6+ с неотключенным FPU Emulation
...
Кстати, если у кого есть идеи какую именно прогу(пакет), интенсивно использующую матем. операции(FPU), можно погонять для проверки предположения OpenWRT'шников что эмуляция soft-float на наших девайсах сильно лучше ядерной(как у нас сейчас), просьба высказываться.

P.S. В теории они правы, но практика иногда показывает обратное :rolleyes:

ryzhov_al
03-09-2013, 07:57
Кстати, если у кого есть идеи какую именно прогу(пакет), интенсивно использующую матем. операции(FPU), можно погонять для проверки предположения OpenWRT'шников что эмуляция soft-float на наших девайсах сильно лучше ядерной(как у нас сейчас), просьба высказываться.Пакет lmbench-lat-ops — this benchmark measures the time for a floating point multiplication (http://www.ptxdist.org/development/kernel/arm-benchmarks-20100729_en.html).

lly
03-09-2013, 08:06
Пакет lmbench-lat-ops — this benchmark measures the time for a floating point multiplication (http://www.ptxdist.org/development/kernel/arm-benchmarks-20100729_en.html).
Подходит, IMHO. Как поступим:

тулчейн с soft-float мне собрать или кто-нибудь из вашей команды найдёт время?
на каких девайсах гоняем? - у меня под рукой WL500gpV1, RT-N16

ryzhov_al
03-09-2013, 08:41
Тест, правда, от libm не зависит:

$ ldd /opt/sbin/lat_ops
libgcc_s.so.1 => /opt/lib/libgcc_s.so.1 (0x77060000)
libc.so.0 => /opt/lib/libc.so.0 (0x76faf000)
ld-uClibc.so.0 => /opt/lib/ld-uClibc.so.0 (0x77084000)


тулчейн с soft-float мне собрать или кто-нибудь из вашей команды найдёт время?Найдёт. Пока только в душе́ не знаю как его сделать soft-float.


на каких девайсах гоняем? - у меня под рукой WL500gpV1, RT-N16Результаты усреднения пятикратных тестов:



lat_ops test (-O2 -pipe -mips32 -mtune=mips32)
Asus RT-N66U hard-float, ns
D-Link DIR-320 hard-float, ns


integer bit
1,69
4,35


integer add
1,846
7,414


integer mul
11,962
17,144


integer div
48,426
84,928


integer mod
31,94
33,994


int64 bit
1,728
4,31


uint64 add
2,142
7,454


int64 mul
18,688
48,918


int64 div
313,154
693,442


int64 mod
217,25
477,43


float add
693,75
2277,282


float mul
680,648
2254,784


float div
1340,226
3632,144


double add
722,28
2440,968


double mul
793,168
2653,588


double div
3426,86
8310,334


float bogomflops
4472,2
13706


double bogomflops
6785,4
19386,4

lly
06-09-2013, 19:12
Тест, правда, от libm не зависит:
Для начала это не важно, в libm реализация sin/cos/etc.

Найдёт. Пока только в душе́ не знаю как его сделать soft-float.
Должно бы быть достаточно выставить CONFIG_SOFT_FLOAT=y

Результаты моего прогона на N16 (./lat_ops -N 10 -W 1)


lat_ops test
Asus RT-N16 hard-float, ns
Asus RT-N16 soft-float, ns


integer bit
2.25
2.25


integer add
3.34
3.34


integer mul
15.81
15.79


integer div
65.69
65.62


integer mod
42.32
42.25


int64 bit
4.49
4.49


uint64 add
9.47
9.46


int64 mul
22.82
22.77


int64 div
428.60
431.89


int64 mod
312.28
311.94


float add
945.15
819.55


float mul
874.52
577.90


float div
1799.03
1598.06


double add
988.20
884.54


double mul
1030.27
901.81


double div
4005.38
3826.92


float bogomflops
5279.00
3505.00


double bogomflops
7625.00
6036.00


т.е. выигрыш в среднем ~15-25%, но и бинарники примерно на 15% увеличиваются.
Хм, даже не знаю что сказать...

ryzhov_al
23-04-2014, 17:44
Для пользователей кинетиков и DD-WRT'шников создал фид Entware с soft-float, теперь есть возможность сравнить бенчмарки hard- и soft-float на разных машинах. Разница очень заметная:



lat_ops -N 10 -W 1
RT-N66U last asuswrt-merlin
RT-N14U last padavan's build


integer bit
1%
0%


integer add
1%
0%


integer mul
0%
0%


integer div
0%
0%


integer mod
-1%
0%


int64 bit
-1%
1%


uint64 add
2%
0%


int64 mul
-1%
0%


int64 div
0%
0%


int64 mod
0%
0%


float add
50%
52%


float mul
58%
53%


float div
25%
31%


double add
42%
43%


double mul
36%
32%


double div
26%
18%


float bogomflops
54%
57%


double bogomflops
42%
39%




Проценты в таблице — выигрыш по скорости выполнения бенчмарка. Положительные значения — тест выполняется быстрее при переходе с hard- на soft-float, отрицательные — медленнее. 50% означает то, что тест выполняется вдвое быстрее. Сырые данные здесь (https://docs.google.com/spreadsheets/d/1c3KcAHD_coXIoegHghp893aKZgzRlA664N4JMFm45Go/edit?usp=sharing).


т.е. выигрыш в среднем ~15-25%, но и бинарники примерно на 15% увеличиваются.
Хм, даже не знаю что сказать...При том, что у меня выигрыш на FP-операциях получился в среднем ~40%, суммарный объём всех имеющихся бинарников Entware подрос на ~10%.

Toher
05-02-2015, 18:16
Нужно изменить файлы в /var. /var является линком на /tmp.
/tmp - виртуальная ac/
А откуда формируется содержимое я не понимаю. У Гугла спрашивал, но мы друг друга не поняли.

OpenWrt:/# ls -la|grep var
lrwxrwxrwx 1 root root 4 Oct 1 18:09 var -> /tmp
OpenWrt:/# mount |grep /tmp
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)