Програмная часть: отладочный координаторОтладочный координатор - это достаточно примитивный набор процедур, поддерживающих взаимодействие
пользователя и плейера через командную строку и интерфес rs232. Раздел инициализации
отдочного координатора мало отличается от такого же раздела рабочего координатора, но зато
главный цикл состоит всего из четырех инструкций: Помимо файла самого координатора (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. Эта переменная ни на что не вляет, её можно свободно использовать в качестве какого либо отладочного значения (модифицируя исходные тексты). "?" - вывод краткого списка команд отладчика. |