Перейти к содержимому
Калькуляторы

Rtl8186 Firmware Всем, кто пишет под RTL8186

2 dgreen:

Можно ли сделать так чтобы точка перегружалась, если wlan интерфейс не пингуется минуту (или настроить интервал)? В Линксисах такая фича есть, очень удобно.

Я заметил что в 90% умирает не точка, а wlan, по езернету можно до неё достучаться и перегрузить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вчера вечером запустил базовый вариант новой прошивки. Наконец-то :)

Была масса проблем, связанная в основном с моей невнимательностью :)

1. Перешел на uClibc 29 - осмысленно. В нем переписанно много - и теперь работает пошустрее вроде как (пишут) и, что важно - библиотеки занимают меньше места (проверенно). Но это привело к тому, что пришлось менять библиотеки в toolchain - и, о чем я сразу забыл и промучался лишних 3 часа - хидера тоже :)

2. Собрал BusyBox 1.1.2 - тоже меньше стал. А вот inittab читать все равно не хочет. Надо лезть в нутро и смотреть, почему.

3. Люди, если собераете ramdisk через initrd - следите за размеров его в ядре и при создании самого файла ramdisk. Я не заметил, что у меня эти размеры не совпадают (возился с разными ядрами и исправил не в том) - в итоге корень монтировался, все каталоги есть - а файлов - нет :)

4. Отключил хардварный ватчдог в ядре и перенес его в userlevel. Управление через /proc/watchdog. Отдельным скриптом. Работает. Перегружает точку, если убить скрипт. По просьбе SW добавляю в скрипт пинговалку выбранного списка адресов, ifconfig down - ifconfig up, повторную пинговалку и если нет - то ребут (через ватчдог).

5. Начал переделывать систему сохранения файлов. После всех экспериментов с залитым основным набором софта (включая ipcad) получил libux.bin на 700К, root.bin на 730К - итого где-то 2 по 250К куска на флеше свободных. Хочу сделать их единым куском (логически - разбив сохраняемый файл на 2). Думаю, к концу недели закончу.

6. Сегодня почитаю - поразбираюсь с QoS - вроде как нашел поддержку этого зверя в ядре.

------------------------------------------------

Народ, у меня голова не варит в плане того, что надо в точку запихнуть :)

Я делаю так (если кому что еще надо - пишите - сразу добавлю)

 

kernel 2.4.18

RW filesystem (1024K на root)

RO filesystem (/bin, /lib, /sbin, /usr/bin, /usr/sbin,)

BusyBox 1.1.2 (весь список приводить не буду- там много)

DHCP Server/Client через BusyBox

IPCAD (cisco ip accounting и/или netflow)

dropbear (ssh сервер)

bridge-utils

wireless-utils

 

Скрипты:

Почти все лежат в перегружаемой области - можно все менять. Фиксированный только скрипт, загружающий эту облась в RW filesystem.

Еще надо доделать авирийную ситуацию - переход точки в telnet-server режим с фиксированным адресом (попробую сделать по нажатию и удержанию кнопки) на случай, если налажали со скриптами.

 

 

От веб-интерфейса отказался

От редактора ee (собирал в прошлых прошивках) - отказался

От отдельных пакетов DHCP отказался (есть в BusyBox-е)

 

 

Какие есть еще предложения ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

по мне так надо не всякие фичи довешывать а над стабильностью работать. А то меня в частности задолбали всякие у&0@ы которые частоты постоянно глушат.

 

Так что предлагаю заняться находжением в драйвере кода отвечающего за ack таймаут. А не тупым выкручиванием sifs/difs регистров.

И еще сильно интересует изменение кода баркера он же код dsss. Это позволит сильно повысить устойчивость работы в условиях помех.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

по мне так надо не всякие фичи довешывать а над стабильностью работать

согласен, но есть проблема - пока нет ни одной прошики, работающей в качестве клиента со скрытым SSID окромя фирменных (мои не в счет - они пока виснут, хотя я через нее сейчас к нету и подключен дома)

сильно интересует изменение кода баркера он же код dsss

код dsss выставляется базовой станцией. И то, что БС его берет один на все случаи жизни - это проблема БС.

Все равно использовать 8186 в качестве БС никто не будет. Клиент хороший, а выложить пару килобаксов (это минимум) за организацию БС, а потом сэкономить пару сотен и поставить не нормальный двухкарточный KarlNet, а дешевку - по моему мнению просто глупо. А на станции dsss код будет браться с базы.

которые частоты постоянно глушат
в драйвере кода отвечающего за ack таймаут

Adron, а где связь между длительностью ожидания ответа и зашумленностью эфиоа ? Или я не понял что-то с АСК ?

 

над стабильностью работать

тут я целиком и полностью согласен. Но стабильность - это прежде всего стабильность софта.

А если дрова, которые, к сожалению, HAL - виснут, то либо писать их заново (долго), либо искать обход за счет перестройки софта.

Плюс стабильность того же uClibc 26 оставляет желать лучшего, если честно. По крайней мере, после пересборки 28 пропали необяснимые глюки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

КАТАСТРОФА (похоже).

Достаточно пессимистическое начало, но я серьезен.

Начну по поряку.

Вчера решил таки заставить бизибоксовский инит поднимать inittab - не одного меня его отсутствие огорчало.

Быстро понял, что проблема в запуске ядра сч параметром single - это как всегда реалтековцы постарались. Вынес условной компиляцией в конфиг.

Но попутно открылась проблема ... компилятора.

В начале инита есть строчка вида

 

if(argc > 1 && !strcmp(argv[1],"-q")) { ...... }

 

я не первый год (даж не первый десяток лет :) ) пишу на сях - и если argc=2, argv[1]="single" - то я понимаю, что попасть внутрь условного блока мы не должны.

Так вот, именно в этом месте мы туда попадаем.

Попробывал отдельным файликом сделать - не попадаем. Т.е. это не конкретный глюк компилера, а условный - т.е. при определенных условиях он формирует неправильный код.

 

Поскольку такая конструкция используется достаточно часто - мне даже

страшно думать, насколько ошибочно собирается ядро именно этим вот компилятором :(

 

Если у кого есть другой toolchain - может проверите у себя ?

Код из BusyBox 1.1.2 init/init.c, функция init_main

 

А я пошел искать последнии версии gcc и пытаться собрать их для MIPS ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, в догонку - Adron-у о кодах Баркера.

Они используются только в 802.11 базовом (1 и 2 Мбит). Выше - CCK и PBCC

Здесь лежит неплохое описание, и в конце страницы - табличка используемых кодировок

http://www.ferra.ru/online/networks/25619/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

КАТАСТРОФА (похоже).

Достаточно пессимистическое начало, но я серьезен.

Начну по поряку.

Вчера решил таки заставить бизибоксовский инит поднимать inittab - не одного меня его отсутствие огорчало.  

Быстро понял, что проблема в запуске ядра сч параметром single - это как всегда реалтековцы постарались. Вынес условной компиляцией в конфиг.  

Но попутно открылась проблема ... компилятора.

В начале инита есть строчка вида

 

if(argc > 1 && !strcmp(argv[1],"-q")) { ...... }

 

я не первый год (даж не первый десяток лет :) ) пишу на сях - и если argc=2, argv[1]="single" - то я понимаю, что попасть внутрь условного блока мы не должны.  

Так вот, именно в этом месте мы туда попадаем.

Попробывал отдельным файликом сделать - не попадаем. Т.е. это не конкретный глюк компилера, а условный - т.е. при определенных условиях он формирует неправильный код.

 

Поскольку такая конструкция используется достаточно часто - мне даже  

страшно думать, насколько ошибочно собирается ядро именно этим вот компилятором :(

 

Если у кого есть другой toolchain - может проверите у себя ?

Код из BusyBox 1.1.2 init/init.c, функция init_main

 

А я пошел искать последнии версии gcc и пытаться собрать их для MIPS ...

 

Подожди, в бизибоксе у меня стоит строка if(argc > 1 && (!strcmp(argv[1],"single")||strcmp(argv[1],"-s")||strcmp(argv[1],"1")) { ...... }

То есть при явном указании однопользовательского режима, переходит в блок TRUE, иначе - в FALSE. Вполне логично все указано.

 

А вот в ядре я искал где указана строка с параметрами загрузки - не нашел, щас еще по заголовкам пройдусь.

 

ЗЫ. Насчет файловой системы и монтирования:

#ifdef CONFIG_RTK_MTD_ROOT

//if ((err=sys_mount("tmpfs","/var","tmpfs",flags,"size=800k")))modify by Richard H.

if ((err=sys_mount("tmpfs","/var","tmpfs",flags,"size=900k")))

printk("mount /var file system fail! error code=%dn",err);

else

printk("mount /var file system ok!n");

#endif

меня смущает то, что этот участок кода нагло впихнули в ядро. Именно с этим сталкиваешься, когда по-умолчанию указан модуль rtk_mtd без gw. То есть формально в ядро железно впихнули что, куда и каким объемом монтировать в файловой системе. Причем, насчолько я понимаю, корневая в данном случае ramfs...

 

ЗЫ. От себя хочу сказать - это пипец, а не програмисты там сидят. Я еще в программировании никто, но так делать никогда не буду, не был, и не делаю... :)

 

ЗЫЫ. Напомню, если интересно спецификации лежат на ftp://193.227.250.26/specs/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Гы. Почему-то пришла в голову мысля: "Против лома нет приема, окромя другого лома". Может наплевать на все и просто закомментировать "лишние" строки в бизибоксе и насиьно заставить его читать иниттаб. Или константой определить многопользовательский режим... Все равно single нам не понадобится.

 

Сори за терминологию, понимать-понимаю, а как по-русски сказать...

 

ЗЫ. И еще, ткните плиз где этот сингл указан, а то уже перелопатил, а откуда main.c берет saved_command_line (она ж extern) не найду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подожди, в бизибоксе у меня стоит строка if(argc > 1 && (!strcmp(argv[1],"single")||strcmp(argv[1],"-s")||strcmp(argv[1],"1")) { ...... }  

Это в старом бизибоксе. В новом - обработка опции -q. Проблема не в этом - а в том. что компилятор генерит неправильный код. Обйти то это - нет проблем, заменил отрицание на ==0 - и все. Мне страшно, что где-то в ядре компилятор тоже может так же глюкнуть - вот в чем проблема..

И еще, ткните плиз где этот сингл указан

будешь смеяться...

смотри в /arch/mips/philips/nino/

prom.c - строка 39 - там добавляется ...

я поставил там условную компиляцию - добавлять single или не добавлять

 

Насчет файловой системы и монтирования

меня это перестало интересовать - я по другому файловую делаю и CONFIG_RTK_MTD_ROOT у меня не установлен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Причем, насчолько я понимаю, корневая в данном случае ramfs...  

Если установлен CONFIG_RTK_MTD_ROOT - то корневая sqfs. Поэтому и монтируют /var как tmpfs - писать то туда надо....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Гы. Почему-то пришла в голову мысля: "Против лома нет приема, окромя другого лома". Может наплевать на все и просто закомментировать "лишние" строки в бизибоксе и насиьно заставить его читать иниттаб. Или константой определить многопользовательский режим... Все равно single нам не понадобится.

 

Сори за терминологию, понимать-понимаю, а как по-русски сказать...

 

ЗЫ. И еще, ткните плиз где этот сингл указан, а то уже перелопатил, а откуда main.c берет saved_command_line (она ж extern) не найду.

 

Я кстати так у себя и сделал :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

по мне так надо не всякие фичи довешывать а над стабильностью работать

согласен, но есть проблема - пока нет ни одной прошики, работающей в качестве клиента со скрытым SSID окромя фирменных (мои не в счет - они пока виснут, хотя я через нее сейчас к нету и подключен дома)

сильно интересует изменение кода баркера он же код dsss

код dsss выставляется базовой станцией. И то, что БС его берет один на все случаи жизни - это проблема БС.

Все равно использовать 8186 в качестве БС никто не будет. Клиент хороший, а выложить пару килобаксов (это минимум) за организацию БС, а потом сэкономить пару сотен и поставить не нормальный двухкарточный KarlNet, а дешевку - по моему мнению просто глупо. А на станции dsss код будет браться с базы.

которые частоты постоянно глушат
в драйвере кода отвечающего за ack таймаут

Adron, а где связь между длительностью ожидания ответа и зашумленностью эфиоа ? Или я не понял что-то с АСК ?

 

над стабильностью работать

тут я целиком и полностью согласен. Но стабильность - это прежде всего стабильность софта.

А если дрова, которые, к сожалению, HAL - виснут, то либо писать их заново (долго), либо искать обход за счет перестройки софта.

Плюс стабильность того же uClibc 26 оставляет желать лучшего, если честно. По крайней мере, после пересборки 28 пропали необяснимые глюки.

 

Связь между ack и помехами на самом деле есть.

Если режить проблему с ack то можно перейти на работу полностью в 802.11g стандарте. Так как большая часть помех создается сетями 802.11b то для 802.11g они будут все равно что излучение микроволновки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

то можно перейти на работу полностью в 802.11g стандарте

нехочу :)

ортогональные каналы внутри одной передающей станции возможны, но зашумленноть эфира не дает гарантии ортоганальности между двумя соседними частотами в g диапазоне - что неизбежно приведет к ступору точки. У нас в городе такой шум, что это почти не реально.

 

Я кстати так у себя и сделал :)

а я всегда стараюсь найти и исправить причину :) По крайней мере, при переходе на новую версию (если вдруг надо будет) - не прийдется большу ничего коментить :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Привет всем - с праздником.

Интересный праздник труда - но который никто никогда не работает :)

 

Так о чем это я.

Несколько дней провел в всеселом занятии - попытке собрать gcc-4.0.2 + uClibc 0.9.28 ака кросскомпайлер - сделать полный toolchain - как тот, что нам любезно кто-то предоставил (мабуть реалтеки - но в свете последних анализов их кода - я им не верю)

Для начала облазил весь инет - тоолчаайн на uClibc делал вообще только кегел - и на gcc-3.3.3 (вот откуда оказвается растут руки)

Вообще - у него там много итересного для всех, кто с кросскомпиляторами работает - http://kegel.com/crosstool/

Повоевал несколько дней - взял за основу кегелевские скрипты, плюс куски с uClibc, что-то дописал сам - в итоге получил скриптец (набор скриптов), который после запуска вытягивает все нужное с инета, и копилет полносьью дерево разработки - gcc-4.0.2, binutils и uClibc-0.9.28.

Закончил вчера вечером - все вроде нормально, но вот перекомпилеть мои исходники и залить в точку уже не успел. Сегодня вечером проверю - и если все ок - вылью N.leiten-ру на фтп эти скрипты (там немного - 2 с лишним метра).

Пока могу сказать только одно - библиотеки стали меньше процентов на 5 - что уже не может не радывать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ккайф, а я разгребаю свою работу и принимаюсь за точки...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

дядечки, а никто не знает как из юзерспейс опросить кнопочку ресет нашей любимой g700ap ?

как это вообще сделать - видно из бут лоадера (boot/init/main.c)..

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

zuko

напрямую тебя к портам не пустит ядро - это его область данных. Можно через

iwpriv wlan0 write_mem dw,<адрес>,1

прочесть регистр, куда энта кнопочка приставленна.

 

адрес вроде 0xbd010044 или 0xbd010120 - лень в доку лезть... посмотри в rtl_gpio.c, который в linux-2.4.18/drivers/char

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

сорри, read_mem конечно, а не write_mem

сплю с бутылкой пива в руках.. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

о! спасибо!

мне хватит функциональности rtl_gpio.

однако, какова изобретательность, засунули это прямехонько в ядро включая вызов flash reset :)

милые, бесконечно приятные люди :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм, интересненько. Появилась идейка эти все функции, что там описаны привязать к /proc/, дабы иметь управление, так сказать напрямую...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

О, в нашем полку в оношении в риалтековским программерам прибыло - теперь еще и zuko (интересный к стати ник - напоминает кой-кого из лабиринта отражений, ага ? :)

К тати, спасибо зуко за хорошее название - теперь я знаю, как называть риатековцев - "милые, бесконечно приятные люди" :)

 

Теперь о грустном.

gcc-4.0.2 ага кросскомпилер я запустил - но толку ...

в ядре 2.4.18 (и во многих болеепоздних версиях) используються конструкции вида

 

#define func(a) array[a].element

.....

func(i)++; или func(i)--;

 

По умному называется compound statement

так вот - gcc 3.3.* это поддерживает. а выше - нет.

Еще одни "милые, бесконечно приятные люди".

 

В общем - пересобираю теперь 3.3.6 - буду делать все на нем :(

На 3.3.3 не хочу принципиально - он таки глючный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати, в новой официальной прошивке на g700ap (v2.10 Thr, 30 Mar 2006) есть фича "репитер".

В принципе тот же клиент :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

SW,

Кстати, в новой официальной прошивке на g700ap (v2.10 Thr, 30 Mar 2006) есть фича "репитер".

В принципе тот же клиент :)

С этой прошивкой она может работать только "репитером" - интерфейс eth0 там вообще в этом режиме обрубан :( Да и смысл с еще одной кривой прошивки от д-линка, короче как клиент эта прошивка работать не будет ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Работает и как клиент :) не обрубили eth0, единственно точка не пингуется с wi-fi, только по локалке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.