www.usrmodem.ru
 Universal Courier Utility
 



ВНИМАНИЕ ! АВТОР НЕ ОТВЕЧАЕТ ЗА ПОСЛЕДСТВИЯ ПРИМЕНЕНИЯ ДАННОГО ПРОГРАМНОГО СРЕДСТВА! ОНО ПРЕДНАЗНАЧЕНО ТОЛЬКО ДЛЯ КВАЛИФИЦИРОВАННЫХ ПОЛЬЗОВАТЕЛЕЙ!

Сие предупреждение в основном связано с тем, что программа вынуждена часто использовать косвенные методы определения тех или иных параметров прошивок. Я не могу проверить все возможные сочетания ключей/прошивок/ модемов/etc, как не могу предугадать и возможные изменения формата в будущих прошивках. Кроме того, некоторые очевидные для меня вещи могут быть совершенно не очевидны для Вас и наоборот. Если Вы обнаружили какие-либо "неправильности" в работе программы, не стесняйтесь сообщить мне об этом письмом, поскольку я не менее Вас заинтересован в устранении лишних глюков.

History:
        " 1.0b.  Конец лета 1998 - первая публичная версия.

        " 1.01b  Доработки :
                - Добавлен пропущенный запуск cfg-файла при восстановлении
                  nvram.
                - Расширена работа с dmf-файлами
                - Переработаны п/п чтения файлов. Вероятно, теперь в них
                  есть ошибки...
                - Добавлено чтение av_sdl.
                - Убрано зависание при молчании модема после стирания
                  флеша (бывает при быстрой загрузке на некоторых AMD).
                - Добавлено чтение/запись ldr-последовательности
                - Добавлена возможность "разделки" DMF на составляющие
                - Добавлен ключ менее жесткого контроля при переводе
                  20->25Mhz.
                - Добавлен ключ отладочного режима.
                - Добавлен примитивный анализ модема
                - Добавлена загрузка спортстера
                - Добавлено чтение chief формата
                - Добавлено чтение/запись hex-формата
                - Добавлено чтение/запись SFF формата
                - Добавлена работа с magic-номерами спортстера
                - Доработана п/п загрузки программ

        "  1.02b 
                - Добавлено распознавание формата SFF/2
                - Добавлен отладочный протокол для посл. порта
                - Добавлен ключик настройки времени игнорирования мусора
                - Добавлен ключ задания серийного номера модема

        " 1.03b 
                - Убрана ошибка при работе с вторым контроллером прерываний
                - Добавлена работа с PCMCIA-модемами
                - Добавлен ключ принудительного задания типа входного файла
                - Добавлена возможность игнорирования контрольной суммы
                - Сделан вариант под Win32 (и сразу-же выброшен в
                  силу диких глюков при работе с com-портом. До момента
                  появления функций управления FIFO под Win32 -
                  останется замороженной).
                - В терминалке добавлена возможность дергания DTR и
                  переинициализации регистра скорости (второе - для PCMCIA)
                - Добавлено распознавание и обработка второго варианта
                  chief-формата (из Internet upgrade wizard).


                        I. НАЗНАЧЕНИЕ ПРОГРАММЫ

      Полная версия программы имеет расширенные возможности. Все функции,
присутствующие только в полной версии далее будут помечаться значком (*).

1) Конвертирование прошивок Курьера из одного формата в другой с
   возможностями преобразования прошивки от Курьера на 20Mhz в прошивку
   для Курьера на 25Mhz, внесения патчей и вставкой других файлов.

2) Загрузка прошивок в Курьер.

2) Мини-терминалка со специальными возможностями.


4) Выгрузка прошивки Курьера из модема на диск в любом поддерживаемом
   формате или выгрузка произвольной части адресного пространства в
   виде образа.

5) Сохранение и восстановление содержимого nvram.

6) (*)Запуск внешних загружаемых модулей в модеме.

7) (*)Запуск программы расширенного тестирования модема.

8) Загрузка прошивки спортстера.

                II. ТИПЫ ВХОДНЫХ И ВЫХОДНЫХ ФАЙЛОВ.

        Тип входного файла определяется автоматически. Формат выходного
        файла задается в командной строке .

	a) sdl -Чтение/запись. При использовании этого типа файла
                предполагается, что он рассчитан на все возможные типы
                Курьеров, поддерживает все страны. Частота прошивки
                определяется контекстным поиском строк 20Mhz и 25Mhz.

	б) xmd -Чтение/запись. В этом формате имеется вся информация
		о прошивке, поэтому нет нужды делать какие-либо предположения.

	в) dmf -Только чтение. Формат содержит еще больше информации,
                чем XMD и является его надмножеством.
                Я решил не делать в ближайшее время функцию создания
                такого вида файлов, поскольку XMD является более удобным
                во всех отношениях форматом.

	г) bin- Чтение/запись. Не имеет никакой информации о типе модема,
		для которого предназначен. При использовании этого типа
                файла предполагается, что он рассчитан на все возможные
                типы Курьеров, поддерживает все страны. Частота прошивки
		определяется контекстным поиском строк 20Mhz и 25Mhz.

	д) def- Чтение/запись. Состоит из bin-файла, и файла с текстовым
		описанием параметров прошивки. По полноте информации
		соответствует XMD формату.

        е) ldr- Чтение/запись. Последовательность, которая передается в
                модем при загрузке прошивки. Не содержит никакой информации,
                аналогична sdl-файлам.

        ж) hex- Чтение/запись. Текстовый вариант формата ldr.

        з) av_sdl - (*) Только чтение. Аналогичен sdl, но по очевидным
                причинам зашифрован.

        и) chief - Только чтение. Некий аналог курьероного sdl.exe,
                но для спортстера. Бывает под dos и win, однако формат
                не зависит от платформы.

        к) sff - Чтение/запись. Аналог ldr формата от Flasher'а. Мне
                известны две разновидности, почти не отличающиеся друг
                от друга. Программа пишет только в первом варианте.


                        III. КОМАНДНАЯ СТРОКА

 Общий вид командной строки:
 ucu command [Src_File]|[Dst_file]|[-switch]

 Команды:

 a -    Анализирует тип модема и выдает кое-какую информацию о нем.
        Функция не завершена и находится в промежуточной стадии.

 e -    (*)Распаковать DMF. Из файла извлекаются все составляющие и
        записываются без каких-либо перекодировок. Можно применять
        для извлечения XMD/HEX файлов или получения файлов Win-модема.

 f -    (*) Вычисление/исправление магического номера по серийному
        номеру в Sportster'e.

 g -    Выгрузить прошивку из модема в файл на диске. Если указаны
	ключи -s или -e с значениями, отличными от 8000/10000, выгрузка
	осуществляется в образ, иначе - в соответствии с ключом -t.
        Требует корректной работы ATG/ATGLK2-команд.
        Допустимые ключи:  -m, -t, -s, -e, -o

 i -    Информация о входном файле и его проверка.
	Ключи не используются.

 j -    (*)Запустить программу в курьере или PCMCIA-спортстере.

 l -    Загрузить входной файл в модем. Для bin/xmd/dmf/def файлов
	проверяется контрольная сумма. Для sdl файла проверяется
	только правильность формата и контрольные суммы отдельных записей.
        После успешного завершения программирования в текущем каталоге
        ищется файл usr.cfg. Если он есть, все его содержимое передается
        в модем. Тип модема (спортстер/курьер) выбирается по входному
        файлу или ключом.
        Допустимые ключи:  -m, -q, -o, -n, -k, -b

 m -    Создать файл с новыми параметрами. Будте осторожны - при создании
	нового файла не проверяется контрольная сумма исходного.
        В урезанной версии работает только для курьеров.
        Допустимые ключи: -t, -o, -c, -p, -i, -k, -b

 n -    Сохранить nvram в файле

 r -    Восстановить nvram из файла

 t -    Запустить терминалку. Там есть внутренняя справка, вызываемая по F1.
	Допустимые ключи: -m

 x -    Загрузка прошивки через x-модем. Работает существенно более медленно
        по сравнению со стандартным вариантом, однако позволяет загружать
        прошивку на системах с нелимитированным временем реакции (win, *nix и
        т.п.)

Назначение ключей:

 -bLETTER       - Установливает параметры входного файла:
                        -b0 - Курьер 20 MHz
                        -b5 - Курьер 25 MHz
                        -bS - Спортстер/TMS
                        -bC - Игнорировать контрольуню сумму

 -c             - Применить при копированни патч для преобразования из
                  20Mhz в 25 MHz. Методика работы взята из моей программы
                  cvt20225. При этом -c вызывает жесткую проверку
                  применимости патча, а -C  - более мягкую.

 -d             - Переход в режим терминала после выполнения заданной
                  операции.

 -e             - Конечный адрес при получении образа через режим "g".
		  Пример: -eF8000

 -fdd           - Время тишины (в единицах по 0.1 сек), которую программа
                  ожидает по завершении некоторых операций (загрузки).

 -g             - Запустить файл с командами после выполнения операции
                  Примеры: -g- - запретить выполнение usr.cfg
                           -g  - выполнить usr.cfg после операции
                                 (по умолчанию он выполняется только
                                  при загрузке флеша)
                           -gFILE - использовать не usr.cfg, а файл 

 -h:hw1[:hw2]   - Установить список допустимых вариантов модема для
                  выходного файла. Параметры в шестнадцатиричном коде.
                  Пример: -h:0:E2:1:D

 -i:OFFSET:FILE - Вставить файл FILE в прошивку по смещению OFFSET от начала
		  прошивки при работе в режиме "m". OFFSET - шестнадцатиричное.
		  Можно использовать несколько ключей в командной строке.
		  Пример: -i:7BFF0:LDSTART.BIN

 -kMODELCODE    - Принудительно установить код модема. В этом случае при
                  загрузке код с модема не запрашивается. Используйте этот
                  ключ только в том случае, когда уверены в работоспособности
                  выбранной Вами прошивки в Вашем модеме.

 -l:lng1[:lng2..]-Установить список допустимых стран для выходного файла.
                  Пример: -L:0:1:2:3:4:5:6

 -mcom:spd:irq - Указать параметры COM-порта
		  com - номера COM-порта (от 1) или его базовый адрес.
                  sdd - требуемая скорость обмена
                  irq - номер прерывания (2-15).

                  Пример: -m1:115200:3 - работа со стандартным COM1 на
                                         скорости 115200.

                  По умолчанию используется COM2 на скорости 115200.

 -nxxxx         - Установка магического номера при загрузке.

 -oLETTERS      - Ключи оптимизации.
                  Нижний регистр отключает оптимизацию, верхний включает.

                  B -   Позволяет создавать внутренние сегменты в sdl.exe
			максимально возможной длины. Если не указан,
                        сегменты создаются с длиной, как у фирменной
                        программы.
			При использовании увеличивает допустимый максимальный
			обьем, который может занимать прошивка.

                  D -   Режим отладки. Блокирует прекращение работы
                        программы, вызванное несопадением патча или
                        ошибочной crc при загрузке sdl, при загрузке
                        по x-модем включает тестовый режим и т.п.

                  F -   В режиме "l" не загружать первичный загрузчик,
			сразу начинать с прошивки. Существенно ускоряет
			процесс загрузки. При работе этого ключа
			выдается сообщение об ошибке контрольной суммы
			блока - это нормально. Включена по умолчанию.

		  L -   Позволяет создавать записи большей длины.
			Стандартная длина записи - 16 байт. При использовании
			записей в 254 байта можно уменьшить длину
			файла примерно на 20% и ускорить загрузку в Курьер.

		  M -   Обрезает неиспользуемые части прошивки. В последних
			16 килобайтах флеша сидит неперешиваемый бут-блок.
			При программировании все данные, выше FC000
                        игнорируются, но стандартный sdl их зачем-то посылает.
			Ключ может использоваться для любого типа
			выходного файла.

                  S -   Если запись целиком состоит из кодов FF, она
                        убирается. Эта оптимизация по умолчанию включена,
                        иначе образ не войдет в sdl.exe, вернее sdl.exe
                        не влезет в память при запуске.

                  T -   Обрезать коды FF, находящиеся в конце записи.
                        Является "усиленным" вариантом ключа S.

                  Z -   (*)Поправить magic-number в спортстере при загрузке.

                  Пример: -oBTSl - Включить оптимизации B,T,B, отключить L

 -p:Patch_File  - Произвести исправления в прошивке при работе в режиме m.
                        Patch_File - dif-файл, получаемый от программы FC
                                     или аналогичной.
                  Можно использовать несколько ключей в командной строке.

                  Пример: -p:Ok_BUSY.DIF

 -qLETTER       - Ответы на возникающие у программы вопросы.
                        Y - ответить утвердительно
                        N - ответить отрицательно
                        Q - при возникновении вопроса завершить работу.
                  Пример: -QY

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

 -s             - Начальный адрес при получении образа через режим "g".
                  Пример: -s80000

 -tLETTER       - Установить тип выходного файла:
                  b - bin
                  d - def+bin
                  e - exe-sdl
                  x - xmd
                  l - ldr
                  s - sff

 -wFILE         - (*)все события, связанные с последовательным портом выводятся
                  в заданный файл протокола.

  Вероятно, необходимо дать некоторые пояснения к работе ключей конвертации,
  патча и замены :
  1) Операции производятся в порядке следования ключей в командной строке.
  2) Все патчи храняться в памяти, посему максимальный суммарный обьем
     патчей - несколько (десятков?) тысяч байт. Для больших замен лучше
     применять вставку файлов.
  3) Алгоритм выявления взаимного наложения патчей, файлов и конвертации
     20->25 Mhz несколько заумен. Проверить его во всех возможных
     сочетаниях - почти невозможная задача. Как следствие - при использовании
     этих ключей проверяйте получившееся. Особенно это касается случаев с
     перекрывающимися  патчами (файлами).
     Если выявятся какие-либо проблемы - пишите.



                  IV. (*)ПРОГРАММА ДИАГНОСТИКИ МОДЕМА.

   Группы функций:
        1) Тестирование цепи определения RING
                В этом режиме на экран выводится последовательность нулей
                и единиц, индицирующих наличие и отсутствие сигнала звонка.
                Частота вывода - 200 Гц. Позволяет определить вид звонка
                (на слух это не всегда понятно) или подстроить входные
                цепи.
                Для завершения режима необходимо нажать '0', любая
                другая клавиша переключает режим стоп/пуск.


        2) Тестирование чтения/записи NVRAM
                При выборе этого теста производится автоматическое
                определение размер nvram, его набора команд и считывает
                текущее состояние в буфер.

                1 - Вывод собержимого NVRAM на экран пословно.
                2 - Тест записи/чтения

                Записывает в nvram различные тестовые последовательности и
                проверяет правильность их считывания. Внимание! Каждая
                операция уменьшает ресурс nvram на 4. (Ресурс nvram
                несколько десятков или сотен тысяч циклов).
                Перед операцией старое содержимое сохраняется, а после
                операции - восстанавливается.

                3 - Редактор nvram
                Позволяет изменять произвольное слово nvram.

                4 - Восстановление nvram из буфера сохранения.

                5 - Подсчет и исправление контрольной суммы nvram

                6 - Повторное считывание nvram в буфера сохранения.


        3) Тестирование ламп и сигналов

                1 - Динамический показ состояния переключателей и клавиши.
                2 - Циклическое зажигание индикаторных лампочек
                3 - Тест цепей.
                    В этом тесте выбирается:
                    1) Выходная цепь.
                    2) режим тестирования:
                        - установить в "0"
                        - установить в "1"
                        - циклическое переключение "0"<->"1"
                        - подключить в входной цепи
                        - подключить к входной цепи с инверсией
                   3) Входная цепь (для двух последних режимов)
                   Выход из трех последних режимов осуществляется нажатием
                   произвольной клавиши.

                4 - Показ аппаратного кода конфигурации модема

                в) Тестирование цепей управления динамиком
                г) Тестирование цепей управления реле

        4) Тест последовательного канала
                а) Анализ параметров входного сигнала
                б) Вывод тестовой последовательности на
                   заданной скорости

        5) Тест таймеров супервизора
                Проверяет генерацию прерываний от различных таймеров

        6) Тест работы DSP
                а) Генерация двухчастотного сигнала заданной
                   частоты, формы и амплитуды
                б) Преобразование Фурье для вх. сигнала
                в) Имитатор АОН-ответа
                г) Анализатор АОН-ответа

        7) Показ информации о микросхеме флеш-памяти (изготовитель,
                конфигурация boot-блоков и т.п.)

        8) Тест/редактор nvram для PNP


              V. Недоделанные предложения

         Что-бы не переписываться по-напрасну, далее следуют те предложения
         по доработке ucu, которые ко мне поступили и которые я
         (пока?) не осуществил или которые в работе:
         - версия на русском языке
         - версия под *nix-системы

         Если у Вас имеются какие-либо дополнительные предложения, я всегда
         рад их выслушать и обсудить.

PS для "хакеров": распространяемую версию невозможно "сломать", поскольку кода, выполняющего специфические функции в ней попросту нет. Эта версия компилируется отдельным проектом, в котором некоторые файлы заменены пустышками.

Константин Норватов, 2:5030/163.44 

Copyright © Андрей Ваваев. Телефон: (095) 324-4206, 233-7498Webdesign © D-Studio Design