Перепрошивка модемов с убитой прошивкой (на чипах L2800)

Хочу поделиться с Вами опытом загрузки микропрограмм (прошивок) для модемов (на базе микропроцессора L2800) с чистым или неудачно прошитым EEPROMом.
Согласно техническому описанию L28MCU, я думаю что уже ни для кого не секрет о возможностях аппаратной загрузки модемов собранных на процессорах этой фирмы. На всякий случай привожу выдержки из официальной документации:

1.3.1 Design Changes Incorporated in the L28 from the L39.
<...>
7. Modified masked Boot Loader to allow flash loading of blank external memory.
<...>
When 0 is not present in BSR7 (ES3, ES2, ES0), the internal ROM is enabled. This allows a bootstrap routine in internal
ROM to be run, e.g., to configure the ES Speed register to select the effective clock width during external memory access
or flash loading of external ROM. When the internal ROM is enabled, the external transceivers are disabled for
addresses within the BSR7 range.

Order No 1198 L28MCU Technical Reference Manual
©1999, Conexant Systems, Inc.

Однако в Интернете мне не удалось найти сведений как проделать такую операцию. Надеюсь что это описание позволит снять данное упущение. Предлагаемое решение с успехом было применено на модемах IDC-5614BXL/VR+, ACORP 56-EMS, JAGUAR-V.90 с убитой прошивкой.

Пункт №1.

Берем модем c убитой прошивной или с чистым flash-ROM и отключаем ножку ОЕ ЕЕROMа от схемы. Подключаем к ней переключатель, который в нормально замкнутом состоянии обеспечивает контакт со схемой, а в нормально разомкнутом (через сопротивление 1КОм) к 5 вольтам (я сознательно опускаю нумерацию контактов EEPROMов и другие подробности так как схемотехника модемов достаточно разнообразна. Еще хочу отметить, что более правильный путь не переключатель, а соответствующая схема на элементах ИЛИ-НЕ чтобы избежать дребезга контактов). Таки образом, если на ОЕ в момент включения модема будет подан высокий уровень(Hi), MCU не может прочитать содержание EEPROMа и переходит к аппаратной загрузке. Здесь надо сделать два уточнения:
1. Совершенно очевидно, что в случае невозможности считывания MCU модемной микропрограммы (прошивки), устройство перестает быть модемом и не может быть определено с помощью каких либо специализированных программ для работы с модемом пытающихся инициализировать или прочитать что-либо из него.
2. При включении модема MCU не всегда входит в режим HARD BOOTa, поэтому операцию вкл./выкл. приходится выполнять многократно (по хорошему - надо сделать кнопку аппаратного сброса MCU).

Пункт №2.
Настраивем любую терминальную программу DOS или WINDOWS (TELEMAX,BITWARE,HYPER TERMINAL): выбираем нужный Com порт, скорость 19200 или 38400 или 57600, 8 бит, контр. четр. - нет, стоп бит - 1, упр. потоком - аппаратное, и снимем все инициализационные строки модемов.

Пункт №3.
После настройки и запуска терминалки, с учетом вышеизложенных уточнений пункта N1 включаем модем с OE в Hi, затем переводим переключатель в другое положение и пытаемся набрать команду АТ** или АТ**1, АТ**2, в зависимости от выбранной скорости. В случае если за 15-20 включений Вам не удалось набрать команду, то скорее всего у Вас проблемы с настройкой терминалки или аппартной частью модема (еще одно уточнение - даже команда АТ на которую MCU отвечает ОК не позволяет в дальнейшем набрать АТ**n (где n=0,1,2). Таким образом набирать надо сразу АТ**n после чего Вы получаете приглашение Download Initiated...

Пункт №4.
Выбираем ASCII протокол и загружаем UPLOADER.

Пункт №5.

Выбираем протокол указанный UPLOADERом (HEX или ASCII) и загружаем микророшивку.

За кривые руки и непонимание вышеизложенного ответственности не несу.
С уважением Дмитрий Бондарчук.

P.S. Таким способом вероятней всего можно прошить любые модемы собранные на базе L28xx фирмы Rockwell/Conexant или сделать программатор на их базе.

________________________
Автор: Дмитрий Бондарчук

 

 

SpyLOG