ReadMe
Манифест
Электроника
Программное обеспечение:
ЖКИ
VLSI
Разные мелочи
Интерфейсы накопителей
Файловые системы
Элементы пользовательского интерфейса
Модули режимов
Координаторы
Отладочный координатор
Пользовательский интерфейс
Фотографии
 
==> Orfey2

Програмная часть: отладочный координатор

Отладочный координатор - это достаточно примитивный набор процедур, поддерживающих взаимодействие пользователя и плейера через командную строку и интерфес rs232. Раздел инициализации отдочного координатора мало отличается от такого же раздела рабочего координатора, но зато главный цикл состоит всего из четырех инструкций: call playfile, main: call entrestring, call analisestring, jmp main. Т.е. при включении плейер начинает воспроизводить очередной файла до нажатия любой клавиши, после чего циклически выводит приглашение командной строки, ожидает от пользователя её ввода и выполняет введённые команды.

Помимо файла самого координатора (main_debug.asm) отладичик требует ещё трех файлов: debug.actions.asm.inc (процедуры действий, вызываемые по командам пользователя), debug.rs232.asm.inc (процедуры ввода/вывода для rs232), debug.syntax_analyser.asm.inc (анализатор командной строки).

Отладочный координатор заменяет модули режимов, поэтому их отладка его средствами невозможна !

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

Команды отладочного координатора

Значительная часть кода отладчика взята без существенных изменений из проекта телевизор из монитора 32втц201, следовательно и правила построения командной строки похожи.

Все цифры - шестнадцатеричные, если явно не оговорено иное. Команда состоит из одного знака и, возможно, следующих за ним аргументов, разделённых пробелами (иногда точками или любыми не числовыми символами) (между буквой команды и первым аргументом пробел, как правило, ставить не следует). В командной строке можно указать любое количество команд, если синтаксис аргумента предыдущей команды позволяет однозначно отличить аргумент от следующей команды. Т.е. команды "}}}}}i" или "P0 1 3N" являются допустимыми. Отладчик общается с терминалом на скорости 38400 бод/с, 8 бит в слове, без бит чётности. Регистр всех символов учитывается.

Интерфейсы IDE-устройств и SD-карт

Низкий уровень: "]" - чтение и вывод всех регистров IDE-устройства, "[A N" - запись в регистр A значения N, "<" - получить 512 байт в буфер 0, "|" - вывести буфер 0, "-" - вывести буфер 1, ">" - отправить 512 байт из буфера 0.

Высокий уровень: "Rn.m" - чтение сектора IDE в буфер 0, "Wn.m" - запись сектора IDE из буфера 0, "zn.m" - чтение сектора SD в буфер 0, "xn.m" - запись сектора SD из буфера 0. В этих командах n и m - старшая и младшая части адрес (каждая - максимум 4 hex-цифры), разделяемые точкой.

Файловая система

"pDP" - инициализация среды и файловой системы. Здесь D - номер устройства (00/01) и P - номер раздела (00..FF). Обе числа вводятся без разделителя, с ведущими нулями (т.е. идущие подряд цифры преобразуются в 16-ть двоичных разрядов, младшие 8 из которых интерпретируется как номер раздела, а старшие 8 - как номер устройства).

"nN" - выводит содержимое ячейки FAT номер N. N - любое число в диапазоне 0..FFFF (преимущественно, эта команда использовалась для отладки операций с FAT12, так как там наиболее сложный формат FAT. Очевидно, что старшие кластеры FAT32 проверить этой командой нельзя. Но этого и не требовалось).

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

"P" - выводит текущий путь и может изменить его, если после команды следуют аргументы (hex-числа) разделённые пробелом. При выводе помимо собственно цифр пути выводятся также байты аттрибутов, которые заполняются уровнем файловой системы. Их значения подробно описаны в комментариях файла fs.asm.inc.

"m" - активизирует пользовательский интерфейс селектора пути файла модуля path_changer.asm.inc. Выбор происходит с использованием клавиатуры и дисплея плейера, на терминал отладчика ничего не выводится.

"(N" и ")N" - тест процедур file_PrvD и file_NxtD - переход на предыдущий/следующий элемент уровня N в путевом имени. N - уровень, на котором будет выполнен переход. 0 - уровень root-каталога, 1 - подкаталог первого уровня вложенности и т.д..

"N" - выводит полное путевое имя текущего файла в символическом виде.

"t" - выводит содержимое текущего файла на терминал.

"{" и "}" - тест процедур FilePrev и FileNext.

Шина SPI

"Sn" - переключает селектор устройства шины SPI в состояние n (процедура spi_CSCLK_Select). "sn" - отправляет байт n по шине SPI и выводит принятый в ответ байт.

Энергонезависимая память

"w" и "r" записывает и читает в/из энергонезависимой памяти оба буфера IDE.

Прочее

"Ttext" - тест LCD. text - любые символы до перевода строки. Все символы выводятся в строку # 3 LCD. Исключение: "0".."3" - они интерпретируются как команды переключения аттрибутов вывода. Эта команда удобна для проверки кодовых таблиц и оценки качества шрифта.

"o" - активизирует процедуру вывода меню модуля user_router.asm.inc. В качестве примера меню выводится нечто, очень похожее на модуль режима Главного Меню и почти также работающее. Действие происходит с использованием клавиатуры и дисплея плейера, на терминал отладчика ничего не выводится.

"kN" - чтение и вывод содержимого регистра OSCCAL (калибровка скорости внутреннего тактового генератора процессора). Если аргумент N задан - предварительно он записывается в регистр.

"lN" - чтение (и, при наличии аргумента N, модификация) переменной DebugVal. Эта переменная ни на что не вляет, её можно свободно использовать в качестве какого либо отладочного значения (модифицируя исходные тексты).

"?" - вывод краткого списка команд отладчика.

Владимир