Перейти к основному содержимому

Отладчик CPU

Вкладка Debugger CPUs предназначена для пошаговой отладки программ микровычислителей CPU1 и CPU2 микросхемы. Отладчик позволяет ставить точки останова, выполнять программу по шагам, просматривать и изменять состояние регистров и памяти CPU в реальном времени.

Окно отладчика CPU

Расположение элементов

Окно отладчика разделено на две части по вертикали:

  • Верхняя панель — вкладки CPU1 и CPU2, каждая содержит панель отладки соответствующего микровычислителя.
  • Нижняя панель — вкладки BUF1 и BUF2, отображающие содержимое буферной памяти (по 128 слов в шестнадцатеричном виде).

Панель каждого CPU состоит из трёх колонок:

  • Левая колонка — кнопки управления, адреса точек останова, таблица регистров CPU.
  • Центральная колонка — листинг программы на ассемблере (синтаксическая подсветка, только чтение) и шестнадцатеричные коды инструкций.
  • Правая колонка — память данных CPU (256 слов, 32×8).

Кнопки управления

КнопкаДействие
ResetОтключает CPU, записывает адреса точек останова и команду RUN в регистры P1BG_ctrl / P1BG_data, активирует через tap_event, заново включает CPU. После — считывает регистры из микросхемы.
StopЗаписывает команду STOP (биты command = 01) в P1BG_ctrl и активирует tap_event. CPU останавливается на текущей инструкции.
RunЗаписывает команду RUN (биты command = 00) — CPU выполняет программу до следующей активной точки останова.
StepЗаписывает команду STEP (биты command = 10) — CPU выполняет одну инструкцию и останавливается.
ReadСчитывает регистры CPU из микросхемы. При установленных флажках Mem/Bf1/Bf2 — также считывает память CPU и буферы.

Точки останова (Breakpoints)

Микросхема поддерживает до 2 точек останова на каждый CPU. Точки останова задаются двумя парами полей:

ПолеОписание
Address 1 + enaАдрес (0–511) и флаг включения точки останова 1. Записывается в биты [8:0] и бит [9] регистра P1BG_ctrl.
Address 2 + enaАдрес (0–511) и флаг включения точки останова 2. Записывается в биты [8:0] и бит [9] регистра P1BG_data.

Установка точек останова мышью

Клик на полосе номеров строк (gutter) в листинге ассемблера устанавливает или снимает точку останова на этой строке. Точка останова отображается в виде красного кружка слева от номера строки. Максимум — 2 точки; при установке третьей самая старая удаляется.

Текущая позиция программы (PC) подсвечивается зелёной полосой в gutter, а номер строки выделяется красным цветом.

Принцип работы точек останова

Точки останова реализованы аппаратно в микросхеме. Когда CPU достигает адрес, совпадающий с stop1_pc или stop2_pc (при активном соответствующем флаге stopX_ena), микровычислитель останавливается, и в регистре статуса устанавливается флаг DBG_STOP.

Команда передаётся в микросхему через регистры P1BG_ctrl (адрес 92 для CPU1, 94 для CPU2) и P1BG_data (адрес 93, 95):

БитыПолеНазначение
12:11command00 = RUN (до точки останова), 01 = STOP, 10 = STEP
10tap_eventПереход 0→1 активирует команду
9stop1_enaРазрешение точки останова 1
8:0stop1_pcАдрес точки останова 1

Регистр P1BG_data содержит аналогичные поля для второй точки останова и поле sel_reg для выбора считываемых регистров CPU.

Регистры CPU

После нажатия Read (или автоматически после Reset/Step) в левой таблице отображаются регистры микровычислителя:

Основные регистры

РегистрРазрядностьОписание
pc9 битСчётчик команд (Program Counter). Текущая позиция выполнения программы. Подсвечивается зелёной полосой в листинге.
cur_com14 битТекущая инструкция (отображается в шестнадцатеричном виде).
ron0ron528 бит, знаковыеРегистры общего назначения R0–R5. Состоят из двух 14-битных слов.
ron6, ron756 бит, знаковыеРасширенные регистры R6–R7. Состоят из четырёх 14-битных слов.

Системные регистры и каналы

РегистрРазрядностьОписание
stp1 битФлаг пошагового режима
stop1 битФлаг останова отладчиком (DBG_STOP)
a_hand3 битАдрес мультиплексора HAND
ch_rel9 битСостояние канального релиза
ch0ch7различныеСостояние каналов микровычислителя

Память и буферы

Память данных CPU (правая колонка)

Отображает 256 слов (32 строки × 8 столбцов) памяти данных CPU. Читается с адреса 512 для CPU1 или 1024 для CPU2. Для отображения установите флажок Mem и нажмите Read.

Буферы BUF1 и BUF2 (нижняя панель)

Каждый буфер отображает 128 слов (8 строк × 16 столбцов) в шестнадцатеричном виде:

  • BUF1 — адрес IC 768
  • BUF2 — адрес IC 1280

Для чтения установите флажки Bf1 и/или Bf2 и нажмите Read.

Связь с редактором ассемблера (Asm Editor)

Листинг программы в центре панели отладчика — только для чтения. Непосредственно в отладчике редактировать код нельзя.

Для изменения программы:

  1. Откройте вкладку Asm Editor (редактор ассемблера).
  2. Внесите изменения в исходный код.
  3. Нажмите Save (сохранить файл).
  4. При сохранении в Asm Editor программа автоматически парсится, и обновлённый листинг передаётся в отладчик DebuggerCpus — синтаксически подсвеченный текст и шестнадцатеричные коды обновляются.

Таким образом, цикл отладки выглядит так: редактирование в Asm Editor → сохранение → автоматическое обновление в Debugger → Reset/Step/Run для загрузки и выполнения.

Типовой порядок работы

  1. Откройте вкладку Debugger CPUs.
  2. При необходимости отредактируйте программу в Asm Editor и сохраните — листинг обновится в отладчике.
  3. Установите точки останова кликом на gutter (красные кружки) или введите адреса вручную в поля Address 1/2 и включите флажки ena.
  4. Нажмите Reset — CPU перезагрузится с точками останова и начнёт выполнение (команда RUN).
  5. При достижении точки останова CPU остановится. Нажмите Read для просмотра регистров.
  6. Используйте Step для пошагового выполнения.
  7. Нажмите Run для продолжения до следующей точки останова.
  8. Для просмотра памяти данных установите флажок Mem и нажмите Read.