Чому модеми виснуть

eManual.ru - електронна документація


From. Mikle Likhachev
Subj. Чому модеми виснуть?

Хочеться внести деяку ясність в це питання - чому вони виснуть?

А все - простіше простого: так в _точності_ через те ж, через що виснуть і самі
машини, а саме:

1. Помилки в програмі (а в модемі - процесор і програма)
2. Збої в роботі апаратури (а модем - вельми складна штука)
3. Криве залізо (фірма солідна, тому висне не кожен п'ятий, як 386-е
плати виробництва Тайваню, а тільки кожен п'ятдесятий)
4. Перешкоди, наведення, задерта частота на шині і ін. _внешніе_ чинники.

Коли ми тільки починали займатися темою апгрейдів, ми були неприємно
здивовані, що приблизно кожен тридцятий користувач скаржився, що після
апгрейда модем іноді став виснути. Часу на те, щоб знайти помилку в
прошивці, було угробити просто неміряно. А результат - нульовий. точніше,
негативний результат - це теж результат, і ось його-то і хочеться трохи
пояснити. Ось що вдалося з'ясувати в результаті майже піврічних спостережень і
тривалих досліджень:

1. У модемах USRrobotics були, є і будуть помилки, які були виявлені
фірмою на етапі тестування, так як проявляються надзвичайно рідко, і тільки в
специфічних умовах. Наприклад, є явний баг в протоколі V.42, в результаті
якого модеми виснуть _после_ конекту. Вигядіт це так: все взяли, все
передали, і тут-то і завис. Ми цей баг шукали місяці два, і так і не знайшли. його
прояв вельми рідкісне, і залежить від погоди, якості зв'язку, кількості
перепосилок блоків і розташування коду в прошивці. Фірма USR і донині
намагається його відловити, регулярно змінюючи цей модуль, але все без толку.

2. Запис _в ПЗУ_, якщо "пощастило", призводить до негайного зависання, що
пояснюється багом в апаратурі, і, як ви розумієте, принципово непереборно.
Цікаво, що на ПЗУ навіть не розлучена нога записи, так що баг прихований десь
всередині замовного кристала. А пишуть вони туди помилково, ми це підправили тільки
недавно, оскільки раніше "не щастило", а після чергової перекомпіляції раптом
стали виснути прошивки у половини бетатестером. Очевидно, що оригінальні
прошивки як і раніше туди пишуть.

3. Якщо "пощастило", і в регістрі, в якому з боку DSP виставляється код
функції, з самого початку варто код ініціалізації Touch Tone, жодна
роботіковская прошивка взагалі не запуститься, оскільки перша ж ініціалізація
DSP викличе встановлення бітів готовності, за якими запуститься підпрограма
обслуговування Touch Tone, яка, в свою чергу, знову переініціалізірует DSP,
і так - вічно. Іншими словами, кожен 256-ой модем, якщо врахувати ймовірність
розподілу біт в байті, летить в урну ще на самій фірмі USR. Очевидно також,
що малейшіеі Зміна температури, напруги живлення і т.п. приводять до
прояву цього бага і в минулих Техконтроль модемах. Скільки ще таких
багів, не помічених нами, поняття не маю. Думаю, що це не останній.
Стан же регістрів замовного кристали не обнуляється по ресета апаратно.

4. В модем вбудований деглюкатор, який кожні півтори секунди скидає весь
модем, якщо в нього нічого не пишуть. Тобто, якщо програма зациклилася, то
модем буде автоматично перезапущений. Так ось, цей деглюкатор сам - глючний, і
якщо він спрацював в момент заднього фронту сигналу запису, то модем намертво
висне, до виключення живлення.

5. В деякі, незрозумілі для нас проміжки часу, модем впадає в такий
режим, коли з бітових портів читається сміття, в результаті чого є ненульова
ймовірність негайного і без причин розриву зв'язку з довільними і маячними
кодами, в основному - Loop Loss disconnect. Чи не лікується.

6. Останнім часом часто-густо РОБОТІКС роблять так: модеми, надіслані на
гарантійний ремонт, ремонтують, наклеюють новий серійний номер, запечатують в
коробку і. продають як нові. Якщо ви купили модем, нібито новий, але при
цьому на ньому не дві наклейки, а одна або три, якщо він - аж 93-го року випуску,
або початок 94-го (з ліжечком), якщо на ньому видно сліди пайки, а часто - такого
якості пайки, що мимоволі думаєш, де ж вони таких негрів з кривими руками
знайшли. - то це і є типовий приклад нової комерційної політики USR. за
статистикою, таких модемів відсотків 5-10 від загального числа.

7. Якщо модем запускається через раз, дає збої, висне в залежності від температури,
або працює не у всіх машинах, то це - глючний кварц. Через мої руки пройшло
вже штук двадцять таких.

На жаль, це далеко не повний список причин зависання модемів USR, у мене
просто не вистачить терпіння викласти тут все, на що я надивився за останні
півроку, так як через мої руки пройшло не одна сотня модемів.

Але не все так страшно, як може здатися - ймовірність напоротися на глючний
екземпляр досить невелика - десь один з 30-50. Скажімо, справа з мультикарта
або материнськими платами йде істотно гірше.

Виникає питання: а чому ж буває так, що до апгрейда НЕ вис, а після
апгрейда - висне. Відповідь проста: те, що Вісло спочатку, просто не пішло за
межі заводу USR, а полетіло у відро для сміття. А ми-то не можемо проводити
відбраковування, ми-то повинні повернути 100% взятих на апгрейд модемів! Крім того,
приблизно з тією ж імовірністю буває і протилежне - до апгрейда вис, а
після - ні. Але ж про це ніхто не говорить, це приймають як належне,
радіючи, що тепер все Ok. З досвіду, ймовірність таких проблем десь 1 шт. на
50 примірників.

Схожі статті