roboforum.ru

Технический форум по робототехнике.

Робот на базе роутера D Link DIR-320

Ответить

Робот на базе роутера D Link DIR-320

esprit » 14 фев 2011, 07:33

==================================================================================================================
Вставка от =DeaD=

ВНИМАНИЕ!!! На рынке сейчас часто вместо DIR-320 продаётся DIR-320NRU - это совершенно другой по железу роутер и всё что тут описано к нему не имеет отношения. Будьте бдительны!

На текущий момент задача проброски видео и уарта на роутере D-Link DIR-320 решена полностью, при этом в рамках флеш-памяти роутера, т.е. для работы подключение каких-то флешек или usb-хабов не требуется.

Порядок модификации роутера для этой задачи подробно описан в вики на странице [[DIR-320]].

Кроме того от пользователя d3xr есть описание установки прошивки OpenWrt на DIR-320, оно находится на странице [[OpenWrt]]
==================================================================================================================


Вдохновленный темой http://roboforum.ru/forum40/topic5222.html, задумался над созданием робота на базе этого роутера. Первоначальный функционал - управляемый с компьютера робот по каналу Wi-Fi. Робот прошит (так скажем, не без усилий) прошивкой от http://vampik.ru/. На нем завелась Linux-подобная операционка, можно подключиться Телнетом. Задача первая научиться рулить роботом посредством операционной системы. На борту есть USB порт, говорят есть UART. Вот его лицо
face.jpg
, а это спина
back.jpg
.

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 02 мар 2011, 16:15

Ну соберет оно мне это добро с зависимостью от своих библиотек опять, куда его потом девать?
Не буду же я сейчас опытным путём перебирать все терминалы, какие только бывают? :)

Добавлено спустя 1 минуту 3 секунды:
Я не сторонник вероятностного подхода при изготовлении корабликов в бутылке :D

Re: Робот на базе роутера D Link DIR-320

dccharacter » 02 мар 2011, 16:18

=DeaD= писал(а):Ну соберет оно мне это добро с зависимостью от своих библиотек опять, куда его потом девать?
Не буду же я сейчас опытным путём перебирать все терминалы, какие только бывают? :)

Почему?

Там все нормально соберет - смотри на имена. Сначала было мини. Потом миро. Потом пико :-))) Слуш, дождешься, достану с балкона wl500g, потом моск тебе весь вынесу :-))))

Добавлено спустя 2 минуты 3 секунды:
http://optwarefind.nslu2-linux.org/pack ... 93&Package[Target]=Any&Package[Architecture]=Any&Package[Section]=Any&Package[Package]=picocom&commit=Search

Нет у него вообще никаких депендов, он маленький и дубовый - как раз что нужно

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 02 мар 2011, 16:19

Зачем мне мозг выносить, скажи лучше, как явно gcc указать, какие библиотеки использовать.

Re: Робот на базе роутера D Link DIR-320

dccharacter » 02 мар 2011, 16:23

28 кб

Добавлено спустя 50 секунд:
http://ubuntuforums.org/showthread.php?t=874347

Добавлено спустя 3 минуты 14 секунд:
http://www.opennet.ru/man.shtml?topic=l ... &russian=0 <<< !!!, ???

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 02 мар 2011, 16:29

Везде описаны решения проблем, когда система не видит нужную библиотеку, нигде пока не нашел как заставить систему использовать нужную мне системную библиотеку в /lib вместо той, которая в /opt/lib

Добавлено спустя 52 секунды:
picocom думаю соберется с зависимостью от этих же библиотек, что у меня сейчас suart мой собрался.

Re: Робот на базе роутера D Link DIR-320

boez » 02 мар 2011, 16:35

На самом деле то, что нужно DeaD'у - это socat, я уже про него писал, и в прошивках он есть, просто надо его включить и пересобрать. Но вариант со своей прогой тоже нормальный, все равно надо учиться собирать свои проги на роутере.

Посмотрел я на эту прошивку от Олега, тут вот есть инструкция по сборке http://code.google.com/p/wl500g/wiki/Co ... omFirmware. К ней предлагается тулчейн вот этот: http://code.google.com/p/wl500g/downloa ... sel-uclibc

Тулчейн просто распаковать в любую папку и путь к /bin из этой папки добавить в PATH. Если не собирать сложных вещей, которым нужны какие-то либы из других пакетов, то этого достаточно, саму прошивку и собирать не надо.

Попробовал я собрать твой suart этим тулчейном. Вот такая команда:
Код: Выделить всёРазвернуть
 mipsel-linux-uclibc-gcc suart.c -nodefaultlibs -L~/dev/wl500/hndtools-mipsel-uclibc-4.3.5/lib -lc -s -O3  -o suart

выдала мне приаттаченный файлик.
ldd про него говорит такое:
Код: Выделить всёРазвернуть
www@ubunta-vb:~/dev/tst$ mipsel-uclibc-ldd suart
checking sub-depends for 'not found'
        libc.so.0 => not found (0x00000000)
        /lib/ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x00000000)


По идее этот suart должен заработать на твоем роутере.
Вложения
suart.zip
(9.2 КиБ) Скачиваний: 0

Re: Робот на базе роутера D Link DIR-320

dccharacter » 02 мар 2011, 16:41

Package: socat
Version: 1.7.1.3-1
Target: oleg
Architecture: mipsel
Section: net
Description: A relay for bidirectional data transfer between two independent data channels.
Depends: openssl readline
Download: socat_1.7.1.3-1_mipsel.ipk

Добавлено спустя 58 секунд:
Open ssl 700 kb

Добавлено спустя 1 минуту 15 секунд:
readline 225 kb
ncurses 520 kb
Последний раз редактировалось dccharacter 02 мар 2011, 16:42, всего редактировалось 1 раз.

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 02 мар 2011, 16:42

Ок, всем спасибо заранее, буду вечером пытать, уже есть с чем попробовать поработать! :friends:

Re: Робот на базе роутера D Link DIR-320

boez » 02 мар 2011, 16:46

=DeaD= писал(а):Везде описаны решения проблем, когда система не видит нужную библиотеку, нигде пока не нашел как заставить систему использовать нужную мне системную библиотеку в /lib вместо той, которая в /opt/lib


Dead, я боюсь что нету решения у твоей проблемы - gcc для компиляции нужны либы с символами, они обычно идут с расширением .a. Так вот на роутере их нету физически, они там не нужны и их ради экономии места туда не пишут.

Если сильно хочется - можно взять libc.a и libdl.a из папки /lib тулчейна и положить их куда-нить в /opt/mylibs, после чего дать gcc -nostdlibs -L/opt/mylibs -lc suart.c -o suart и он тогда по идее правильно соберет.

Добавлено спустя 2 минуты 52 секунды:
Да, жырноватая штука socat. Хотя ее для наших целей хорошо бы без ssl собрать. А вообще значит надо собирать suart, к примеру у меня он 4к получился :)

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 02 мар 2011, 16:49

Ну вот же! А можешь *.a файлы выложить эти из тулчейна?

Добавлено спустя 32 секунды:
И сказать размеры файлов *.so которые соотв., чтобы я сверил, та ли версия.

Добавлено спустя 44 секунды:
boez писал(а):А вообще значит надо собирать suart, к примеру у меня он 4к получился :)

Ну да, я и говорю - программа то копеечная, нафиг нам полноценный терминал.

Re: Робот на базе роутера D Link DIR-320

boez » 02 мар 2011, 17:02

Хотя вообще это все жутко странно - откуда в тулчейне, который внутри роутера, взялись другие версии библиотек? Судя по содержимому пакета uclibc-opt, там те же самые libc.so.0 и ld-uClibc.so.0. ну разве что реальная версия ld-uClibc.so чуть другая, но это не должно быть проблемой.

Да, насчет libdl.a это я перепутал, это другая либа, а откуда берется ссылка на ld-uClibc.so я не знаю, скорее всего как-то жестко в линкере задано.

В общем, надо смотреть внимательнее, плюс может быть играться с LD_LIBRARY_PATH - выкидывать оттуда /opt/lib и тогда пробовать запускать.

Re: Робот на базе роутера D Link DIR-320

setar » 02 мар 2011, 17:26

почитал , ужаснулся :)

задача конечная какая ?
терминал на tty получить ??

screen /dev/tty{что_то_там}
minicom -s , установка порта, работа

есть ещё всякие варианты но этого хватит

ну и напрямую с портом можно работать:
Код: Выделить всёРазвернуть
echo "#1P2000T10000"     >/dev/tty.BT-ECU2-S-DevB;
echo "Q"                 >/dev/tty.BT-ECU2-S-DevB;
readchar=`dd if=/dev/tty.BT-ECU2-S-DevB bs=1 count=1 2>/dev/null`
echo $readchar


или
Код: Выделить всёРазвернуть
#!/bin/bash
t=300
sl=0.3
n=0
exec 3<> /dev/tty.BT-ECU2-S-DevB
while true ; do
let "n++"; echo $n;
echo "#0P500T$t" >&3; sleep $sl;
echo "#0P2500T$t" >&3 ; sleep $sl;
done


если очень хочется либы по другому месту просто можно так сделать
mkdir /opt/lib/
ln -s /lib/нужная_либа /opt/lib/запрашиваемое_имя_либы

пока ничего не подмонтировано будет лежать сим линк, при монтировании там будет содержимое флешки
а то что было глубже по пути /opt станет временно невидно (до отмонтирования)

Re: Робот на базе роутера D Link DIR-320

boez » 02 мар 2011, 17:43

Да, проверил без -L - результат тот же.
Еще надыбал опцию -rpath у линкера - пробуй дома собирать как
Код: Выделить всёРазвернуть
gcc -Wl,-rpath,/lib suart.c -o suart

У меня на результат кросс-компиляции она не влияет, а у тебя может.

Да, еще есть опция, которая указывает где брать ld-uClibc.so:
Код: Выделить всёРазвернуть
-Wl,--dynamic-linker,/lib/ld-uClibc.so


Собрал для попробовать с -Wl,--dynamic-linker,ld-uClibc.so, т.е. вообще без пути - так у меня теперь биг бада бум происходит:
Код: Выделить всёРазвернуть
www@ubunta-vb:~/dev/tst$ mipsel-uclibc-ldd suart
Segmentation fault


Но по f3 зато в тексте видно, что ld-uClibc.so идет без пути.

Так что пробуй по-разному, смотри через ldd и разберешься. Учти, что стрелочки, которые рисует ldd, вернее то что справа от них - это уже результат текущего резолвинга библиотек, это не жесткие привязки внутри экзешника.

А, еще пока искал - прочитал про какой-то кэш лоадера, может у тебя просто пути в /opt/lib закэшировались? а реально с самим экзешником все ОК? Кэш смотится через ldconfig -p. Есть ли он в мелком линухе - не знаю.

Re: Робот на базе роутера D Link DIR-320

dccharacter » 02 мар 2011, 17:45

Простите мне мою назойливость, но:

Package: minicom
Version: 2.4-1
Target: oleg
Architecture: mipsel
Section: misc
Description: Minicom is a serial communication program. It is a Unix clone of the well-known MS-DOS Telix program. It has ANSI color, a dialing directory, dial-a-list, and a scripting language.
Depends: ncurses lrzsz
Download: minicom_2.4-1_mipsel.ipk

ncurses 252 kb, lrzsz 162 kb.

picocom !!! 27кб, НЕТ зависимостей.
Последний раз редактировалось dccharacter 02 мар 2011, 18:09, всего редактировалось 1 раз.

Re: Робот на базе роутера D Link DIR-320

boez » 02 мар 2011, 17:51

setar писал(а):почитал , ужаснулся :)
задача конечная какая ?
терминал на tty получить ??


Да не, то понятно что можно, задача чуть другая: получить связь уарта с TCP сокетом, чтоб никаких терминалов, телнетов и прочих прослоек, делающих непредвиденные вещи с управляющими символами типа Ctrl-C или ctrl-Z там не было. Она в принципе решена, дальше идет разбиралово как это сделать лучше :)

Добавлено спустя 4 минуты 21 секунду:
dccharacter писал(а):Простите мне мож назойливость, но:
picocom !!! 27кб, НЕТ зависимостей.


И как им пробросить уарт на слушающий TCP-порт? Так, чтобы я присоединился туда своей программой-клиентом и любой байт, включая например Ctrl-O или Ctrl-Z вызвал не выпрыгивание окошка опций миникома или остановку программы, а был передан прямо в порт?


Rambler\'s Top100 Mail.ru counter