Чому модеми виснуть 1
From. Mikle Likhachev
Subj. Чому модеми виснуть.
Хочеться внести деяку ясність в це питання - чому вони виснуть.
А все - простіше простого: так в точності через те ж, через що виснуть і самі машини, а саме:
- Помилки в програмі (а в модемі - процесор і програма)
- Збої в роботі апаратури (а модем - вельми складна штука)
- Криве залізо (фірма солідна, тому висне не кожен п'ятий, як 386-е плати виробництва Тайваню, а тільки кожен п'ятдесятий)
- Перешкоди, наведення, задерта частота на шині і ін. Зовнішні чинники
Запис в ПЗУ, якщо "пощастило", призводить до негайного зависання, що пояснюється багом в апаратурі, і, як ви розумієте, принципово непереборно. Цікаво, що на ПЗУ навіть не розлучена нога записи, так що баг прихований десь всередині замовного кристала. А пишуть вони туди помилково, ми це підправили тільки недавно, оскільки раніше "не щастило", а після чергової перекомпіляції раптом стали виснути прошивки у половини бетатестером. Очевидно, що оригінальні прошивки як і раніше туди пишуть.
Якщо "пощастило", і в регістрі, в якому з боку DSP виставляється код функції, з самого початку варто код ініціалізації Touch Tone, жодна роботіковская прошивка взагалі не запуститься, оскільки перша ж ініціалізація DSP викличе встановлення бітів готовності, за якими запуститься підпрограма обслуговування Touch Tone, яка, в свою чергу, знову переініціалізірует DSP, і так - вічно. Іншими словами, кожен 256-ой модем, якщо врахувати ймовірність розподілу біт в байті. летить в урну ще на самій фірмі USR. Очевидно також, що малейшіеі Зміна температури, напруги живлення і т.п. призводять до прояву цього бага і в минулих Техконтроль модемах. Скільки ще таких багів, не помічених нами, поняття не маю. Думаю, що це не останній. Стан же регістрів замовного кристали не обнуляється по ресета апаратно.
В модем вбудований деглюкатор, який кожні півтори секунди скидає весь модем, якщо в нього нічого не пишуть. Тобто, якщо програма зациклилася, то модем буде автоматично перезапущений. Так ось, цей деглюкатор сам - глючний, і якщо він спрацював в момент заднього фронту сигналу запису, то модем намертво висне, до виключення живлення.
В деякі, незрозумілі для нас проміжки часу, модем впадає в такий режим, коли з бітових портів Новомосковскется сміття, в результаті чого є ненульова ймовірність негайного і без причин розриву зв'язку з довільними і маячними кодами, в основному - Loop Loss disconnect. Hе лікується.
Останнім часом часто-густо РОБОТІКС роблять так: модеми, надіслані на гарантійний ремонт, ремонтують, наклеюють новий серійний номер, запечатують в коробку і. продають як нові. Якщо ви купили модем, нібито новий, але при цьому на ньому не дві наклейки, а одна або три, якщо він - аж 93-го року випуску, або початок 94-го (з ліжечком), якщо на ньому видно сліди пайки, а часто - такого
якості пайки, що мимоволі думаєш, де ж вони таких негрів з кривими руками знайшли. - то це і є типовий приклад нової комерційної політики USR. За статистикою, таких модемів відсотків 5-10 від загального числа.
Якщо модем запускається через раз, дає збої, висне. в залежності від температури, або працює не у всіх машинах, то це - глючний кварц. Через мої руки пройшло вже штук двадцять таких.
На жаль, це далеко не повний список причин зависання модемів USR, у мене просто не вистачить терпіння викласти тут все, на що я надивився за останні півроку, так як через мої руки пройшло не одна сотня модемів.
Але не все так страшно, як може здатися - ймовірність напоротися на глючний екземпляр досить невелика - десь один з 30-50. Скажімо, справа з мультикарта або материнськими платами йде істотно гірше.
Виникає питання. а чому ж буває так, що до апгрейда НЕ вис, а після апгрейда - висне. Відповідь проста: те, що Вісло спочатку, просто не пішло за межі заводу USR, а полетіло у відро для сміття. А ми-то не можемо проводити відбраковування, ми-то повинні повернути 100% взятих на апгрейд модемів! Крім того, приблизно з тією ж імовірністю буває і протилежне - до апгрейда вис, а після - ні. Але адже про це ніхто не говорить, це приймають як належне, радіючи, що тепер все Ok. З досвіду, ймовірність таких проблем десь 1 шт. на 50 примірників.