Пошаговая отладка процессора

В предыдущей записи мы показали отладочное устройство. Нам удалось использовать его по назначению и совместить с процессором. В результате получилось вот такое устройство:
step_by_step

Что это такое? Это наш процессор в режиме пошаговой отладки. По сути — это микроконтроллер, который умеет выполнять «зашитые» в него программы. Мы работаем над тем, чтобы он стал умнее и научился выполнять больше функций.

Сколько ресурсов FPGA занимает это устройство? Ответ на этот вопрос показан на следующей картинке:

resources

Напомним пример blink_led.asm из поставки МакроАссемблера — вот так выглядит отладочный дамп примера blink_led (файл blink_led.mif_dbg генерируется автоматически):

0000: 21 44 ; XOR R4, R4
0002: 72 04 ; LD_MR MR32, R4
0004: 00 ; NOP
0005: 90 11 11 ; LOAD R0, 0x1111
0008: 91 ff e0 ; LOAD R1, 0xffe0
000b: f2 ff fe ff f0 ; LOAD R2, 0xfffefff0
0010: 53 21 ; LOAD R3, 0x21
0012: 54 14 ; LOAD R4, 0x14
0014: 71 f4 ; LD_MR MR31, R4
0016: 60 10 ; MOV (R1), R0
0018: 54 34 ; LOAD R4, 0x34
001a: 72 04 ; LD_MR MR32, R4
001c: 54 41 ; LOAD R4, 0x41
001e: 72 04 ; LD_MR MR32, R4
0020: 54 52 ; LOAD R4, 0x52
0022: 72 04 ; LD_MR MR32, R4
0024: 36 00 ; INC R0, 0
0026: 01 ; DEBUG
0027: 0a ; **ERR1**
0028: f3 aa aa aa aa ; LOAD R3, 0xaaaaaaaa
002d: 60 13 ; MOV (R1), R3
002f: 70 13 ; LD_MR MR1, R3
0031: 36 00 ; INC R0, 0
0033: 8f ff fa ; JMP -6
0036: 05 ; **ERR1**
0037: 00 ; NOP
0038: 00 ; NOP
0039: 00 ; NOP
003a: 00 ; NOP
000f:

Режим пошаговой отладки прошившки blink_led в удалённом терминале. Первая строка показывает состояние процессора после сигнала сборса. Любое нажатие на клавишу в терминале выполняет одну команду процессора.

step_by_step

На первый взгляд — выглядит не очень понятно, но если присмотреться, то можно обнаружить что состояние сигналов соответствует дампу, показанному перед картинкой.

Скачать образ этой прошивки для платы Марсоход2 можно здесь: «Аппаратный трассировщик для Марсохода» файл lesson_2.zip


Оставить комментарий