Не так давно стал обладателем карманного роутера с DX’a. Из плюсов стоит отметить наличие батарейки и чехла в комплекте. На этом хорошее заканчивается.
После краткого знакомства с функционалом девайса понял, что без серьезной доработки напильником юзать сию поделку никак не катит.
Начал с того, что разобрал. Внутри заметен неотмытый флюс, криво припаянные диоды. Антенна одна, smdшная, хотя разведено на плате две. опознать бы рассыпушные кондеры, и можно было бы второй комплект напаять и внешнюю вывести. Но учитывая что их там овер 10 штук и он меньше 0603, желание как-то отпало.
Уарт нашелся легко и непринужденно, куда вскоре была впаяна PBSка.
Унутрях кривой реалтековый загрузчик и ведро 2.4 серии. Частота 390Mhz, ОЗУ — 32, ПЗУ 4 метра в виде SPI флешины, USB 2.0 EHCI.
Гугль выдал мне на RTL8196C большой жирный кукиш. опенврт, дд-врт и прочие на этот чип вроде как забили.
Но кое что я все же нашел. Первое — что человек из проекта Wive-NG ( sfstudio.livejournal.com ) явно богат SDK под этот чип, и русским народным матом ругается в адрес криворуких *** *** ****** изувечивших ядро. Пришлось под openid регистрировать аккаунт для мессаджей и комментов в жжшке и поспрашать человека, и вот что я выяснил:
* SDK есть под 2.6.30, но он его не даст ибо NDA подписал, но оно есть в виде тарболлов которые выкладывают под свои роутеры длинки и иже с ними.
* Собирать надо только наркоманским тулчейном реалтековцев ибо их чип куда-то прокачался от MIPS’a… не в ту сторону.
Ура, сказал я, и попер в сеть за сырцами. Выбор пал на сырцы от TEW-652BRP. Там тот же вроде как чип, и сдк явно внутри подойдет.
Тарболл представлял из себя матрешку. Изрядно задолбавшись распаковвывать архив внутри архива, я нашел там исходники ядра линуха, тулчейна и еще кучки бородатых сопутствующих пакетов на радость археологам.
Далее изучив сырца ядра, я пришел в некое недоумение. Предупреждение относительно качеста сырцов явно было к месту. Ради своей поделки там соорудили новую архитектуру rlx (копия arch/mips) куда добавили поддержку своего камня.
Ладно, их тулчейном, так их тулчейном. Поматюгавшись на их скрипт сборки, который предполагал наличие сырцов с /toolchain (Гадим в корень, ай-ай-ай). Ладно, не гордые, сделал там симлинк на внешний веник со всей этой кухней, начинаем собирать тулчейн. И вот тут меня ждали приключения на всю мою голову. Слабонервным лучше не читать дальше.
Первая бага, от которой сборка вывалилась с ошибкой связана была с uclibc решилась вот этим патчем:
http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-03/msg04460.html
Вторая бага при сборке gcc (кстати, 3.4.6, вот некроманты, а?). Жаловалось на отсутствующий файл c-parse.c
При помощи гугла и медитации допер, что этот файлик генерируется bison’ом, а оный генерировал в той версии файлик правильно, так как в нем была ошибка, и чтобы более новый bison, стоящий у меня в системе этот файлик сгенерил, надо прокрутить странички на 3 наверх, найти его выхлоп (который почему-то в мейкфайле игнорируется и за ошибку не считается), и запомнить строчки, на которые он материться. Далее открыть этот c-parse.y и заменить $$ на $<ttype>$, и все пойдет дальше.
Но если мы обрадовались, что теперь все пройдет как по маслу и завершиться успешно, то нас ждет великий облом. Следующая бага описана и решается здесь:
http://wiki.ok-labs.com/forum#nabble-td3526733
Пожалуй, это была последняя по существу. Правда? Нет! Почти в самом конце, когда паковался libgcc.a я узрел
*** buffer overflow detected ***: mips-linux-ar terminated
По счастью, имея дело с софтом разной степени бородатости и уродства, наученный горьким опытом, я держу при себе сразу все версии gcc которые есть в репозиториях бубунты, да и еще парочку самособранных, со времен когда я LFS собирал. Сборка при помощи gcc 4.1 решила проблему и я получил рабочий тулчейн. Если код, собранный им еще и заработает на роутере… вообще хорошо будет.
Продолжение следует.