diff --git a/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_hex_instr.mem b/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_hex_instr.mem index be2a0a8..d4de028 100644 --- a/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_hex_instr.mem +++ b/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_hex_instr.mem @@ -5,11 +5,11 @@ 00e00413 00f00493 00000593 -00100293 -30429073 03400293 00028293 30529073 +000102b7 +30429073 00000063 0000a383 04338263 diff --git a/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_led_instr.mem b/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_led_instr.mem index 57fd12f..577b707 100644 --- a/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_led_instr.mem +++ b/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_led_instr.mem @@ -2,11 +2,11 @@ 02000137 0e000193 00000593 -00100293 -30429073 02800293 00028293 30529073 +000102b7 +30429073 00000063 0000a383 00338663 diff --git a/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_vga_instr.mem b/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_vga_instr.mem index 6b16cad..c8752bb 100644 --- a/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_vga_instr.mem +++ b/Labs/13. Peripheral units/firmware/mem_files/lab_13_ps2_vga_instr.mem @@ -2,10 +2,10 @@ 07000137 070011b7 96018193 -00100293 -30429073 02400293 30529073 +000102b7 +30429073 00000063 0000a383 00038403 diff --git a/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_hex_instr.mem b/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_hex_instr.mem index f102738..478d469 100644 --- a/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_hex_instr.mem +++ b/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_hex_instr.mem @@ -4,12 +4,12 @@ 20018193 0030a623 00100213 -0040a823 -00100293 -30429073 +0030a823 03400293 00028293 30529073 +000102b7 +30429073 00000063 0000a383 00700333 diff --git a/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_led_instr.mem b/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_led_instr.mem index 51bbb50..58e72c5 100644 --- a/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_led_instr.mem +++ b/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_led_instr.mem @@ -11,11 +11,11 @@ d0d18193 f7f20213 0ff00493 00100313 -00100293 -30429073 04c00293 00028293 30529073 +000102b7 +30429073 00000063 0000a383 00947433 diff --git a/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_tx_instr.mem b/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_tx_instr.mem index 8f12e9e..82980ac 100644 --- a/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_tx_instr.mem +++ b/Labs/13. Peripheral units/firmware/mem_files/lab_13_rx_tx_instr.mem @@ -7,11 +7,11 @@ 00100213 0040a823 00412823 -00100293 -30429073 03c00293 00028293 30529073 +000102b7 +30429073 00000063 0000a383 00712023 diff --git a/Labs/13. Peripheral units/firmware/mem_files/lab_13_sw_led_instr.mem b/Labs/13. Peripheral units/firmware/mem_files/lab_13_sw_led_instr.mem index 2618557..59473b1 100644 --- a/Labs/13. Peripheral units/firmware/mem_files/lab_13_sw_led_instr.mem +++ b/Labs/13. Peripheral units/firmware/mem_files/lab_13_sw_led_instr.mem @@ -5,11 +5,11 @@ aaa18193 00005237 55520213 00100313 -00100293 -30429073 03400293 00028293 30529073 +000102b7 +30429073 00000063 0000a383 00338863 diff --git a/Labs/13. Peripheral units/firmware/software/ps2_hex.S b/Labs/13. Peripheral units/firmware/software/ps2_hex.S index 28170d9..5558bbe 100644 --- a/Labs/13. Peripheral units/firmware/software/ps2_hex.S +++ b/Labs/13. Peripheral units/firmware/software/ps2_hex.S @@ -11,21 +11,21 @@ See https://github.com/MPSU/APS/blob/master/LICENSE file for licensing details. _start: # Инициализируем начальные значения регистров 0: 030000b7 li x1 , 0x03000000 # сохраняем базовый адрес клавиатуры - 4: 04000137 li x2 , 0x04000000 # сохраняем базовый адрес хекс-контроллера + 4: 04000137 li x2 , 0x04000000 # сохраняем базовый адрес hex-контроллера 8: 0e000193 li x3 , 0x000000e0 # сохраняем сканкод e0 c: 0f000213 li x4 , 0x000000f0 # сохраняем сканкод f0 10: 00e00413 li x8 , 0x0000000e # сохраняем значение e 14: 00f00493 li x9 , 0x0000000f # сохраняем значение f 18: 00000593 li x11, 0x00000000 # сохраняем ноль -1c: 00100293 li x5 , 0x00000001 # подготавливаем маску прерывания единственного - # (нулевого) входа -20: 30429073 csrw mie, x5 # загружаем маску в регистр маски -24: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, -28: 00028293 # только в случае la — это число является адресом +1c: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, +20: 00028293 # только в случае la — это число является адресом # указанного места (адреса обработчика перехвата) # данная псевдоинструкция будет разбита на две # инструкции: lui и addi -2c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +24: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +28: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного + # (нулевого) входа +2c: 30429073 csrw mie, x5 # загружаем маску в регистр маски # Вызов функции main main: diff --git a/Labs/13. Peripheral units/firmware/software/ps2_led.S b/Labs/13. Peripheral units/firmware/software/ps2_led.S index a969628..63828e8 100644 --- a/Labs/13. Peripheral units/firmware/software/ps2_led.S +++ b/Labs/13. Peripheral units/firmware/software/ps2_led.S @@ -14,15 +14,15 @@ _start: 4: 02000137 li x2 , 0x02000000 # сохраняем базовый адрес led-контроллера 8: 0e000193 li x3 , 0x000000e0 # сохраняем сканкод e0 0с: 00000593 li x11, 0x00000000 # сохраняем ноль -10: 00100293 li x5 , 0x00000001 # подготавливаем маску прерывания единственного - # (нулевого) входа -14: 30429073 csrw mie, x5 # загружаем маску в регистр маски -18: 02800293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, -1c: 00028293 # только в случае la — это число является адресом +10: 02800293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, +14: 00028293 # только в случае la — это число является адресом # указанного места (адреса обработчика перехвата) # данная псевдоинструкция будет разбита на две # инструкции: lui и addi -20: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +18: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +1c: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного + # (нулевого) входа +20: 30429073 csrw mie, x5 # загружаем маску в регистр маски # Вызов функции main main: diff --git a/Labs/13. Peripheral units/firmware/software/ps2_vga.S b/Labs/13. Peripheral units/firmware/software/ps2_vga.S index f212d06..1721b26 100644 --- a/Labs/13. Peripheral units/firmware/software/ps2_vga.S +++ b/Labs/13. Peripheral units/firmware/software/ps2_vga.S @@ -15,15 +15,13 @@ _start: 8: 070011b7 li x3, 0x07000960 # количество символов на экране c: 96018193 # данная псевдоинструкция будет разбита на две # инструкции: lui и addi -10: 00100293 li x5, 0x00000001 # подготавливаем маску прерывания единственного - # (нулевого) входа -14: 30429073 csrw mie, x5 # загружаем маску в регистр маски -18: 02400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, +10: 02400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, # только в случае la — это число является адресом # указанного места (адреса обработчика перехвата) - # данная псевдоинструкция будет разбита на две - # инструкции: lui и addi -1c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +14: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +18: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного + # (нулевого) входа +1c: 30429073 csrw mie, x5 # загружаем маску в регистр маски # Вызов функции main main: diff --git a/Labs/13. Peripheral units/firmware/software/rx_hex.S b/Labs/13. Peripheral units/firmware/software/rx_hex.S index f43230f..1e196d6 100644 --- a/Labs/13. Peripheral units/firmware/software/rx_hex.S +++ b/Labs/13. Peripheral units/firmware/software/rx_hex.S @@ -11,21 +11,22 @@ See https://github.com/MPSU/APS/blob/master/LICENSE file for licensing details. _start: # Инициализируем начальные значения регистров 0: 050000b7 li x1 , 0x05000000 # сохраняем базовый адрес uart_rx - 4: 04000137 li x2 , 0x04000000 # сохраняем базовый адрес хекс-контроллера + 4: 04000137 li x2 , 0x04000000 # сохраняем базовый адрес hex-контроллера 8: 0001c1b7 li x3 , 0x0001c200 # устанавливаем бодрейт 115200 c: 20018193 10: 0030a623 sw x3 , 0x0c(x1) 14: 00100213 li x4 , 0x00000001 # устанавливаем parity_bit 18: 0030a823 sw x4 , 0x10(x1) -1c: 00100293 li x5 , 0x00000001 # подготавливаем маску прерывания единственного - # (нулевого) входа -20: 30429073 csrw mie, x5 # загружаем маску в регистр маски -24: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, -28: 00028293 # только в случае la — это число является адресом +1c: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, +20: 00028293 # только в случае la — это число является адресом # указанного места (адреса обработчика перехвата) # данная псевдоинструкция будет разбита на две # инструкции: lui и addi -2c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +24: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +28: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного + # (нулевого) входа +2c: 30429073 csrw mie, x5 # загружаем маску в регистр маски + # Вызов функции main main: 30: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1); diff --git a/Labs/13. Peripheral units/firmware/software/rx_led.S b/Labs/13. Peripheral units/firmware/software/rx_led.S index b33c759..7ac9c96 100644 --- a/Labs/13. Peripheral units/firmware/software/rx_led.S +++ b/Labs/13. Peripheral units/firmware/software/rx_led.S @@ -23,16 +23,16 @@ _start: 28: f7f20213 2c: 0ff00493 li x9, 0x000000ff # сохраняем маску для обнуления старшей части 30: 00100313 li x6, 0x00000001 # сохраняем единицу -34: 00100293 li x5, 0x00000001 # подготавливаем маску прерывания единственного - # (нулевого) входа -38: 30429073 csrw mie, x5 # загружаем маску в регистр маски - -3c: 04c00293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, -40: 00028293 # только в случае la — это число является адресом -40: 00028293 # указанного места (адреса обработчика перехвата) +34: 04c00293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, +38: 00028293 # только в случае la — это число является адресом + # указанного места (адреса обработчика перехвата) # данная псевдоинструкция будет разбита на две # инструкции: lui и addi -44: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +3c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +40: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного + # (нулевого) входа +44: 30429073 csrw mie, x5 # загружаем маску в регистр маски + # Вызов функции main main: 48: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1); diff --git a/Labs/13. Peripheral units/firmware/software/rx_tx.S b/Labs/13. Peripheral units/firmware/software/rx_tx.S index b7003e5..a31e484 100644 --- a/Labs/13. Peripheral units/firmware/software/rx_tx.S +++ b/Labs/13. Peripheral units/firmware/software/rx_tx.S @@ -19,15 +19,16 @@ _start: 18: 00100213 li x4 , 0x00000001 # устанавливаем parity_bit 1c: 0040a823 sw x4 , 0x10(x1) 20: 00412823 sw x4 , 0x10(x2) -24: 00100293 li x5 , 0x00000001 # подготавливаем маску прерывания единственного - # (нулевого) входа -28: 30429073 csrw mie, x5 # загружаем маску в регистр маски -2c: 03c00293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, -30: 00028293 # только в случае la — это число является адресом +24: 03c00293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, +28: 00028293 # только в случае la — это число является адресом # указанного места (адреса обработчика перехвата) # данная псевдоинструкция будет разбита на две # инструкции: lui и addi -34: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +2c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания +30: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного + # (нулевого) входа +34: 30429073 csrw mie, x5 # загружаем маску в регистр маски + # Вызов функции main main: 38: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1); diff --git a/Labs/13. Peripheral units/firmware/software/sw_led.S b/Labs/13. Peripheral units/firmware/software/sw_led.S index 17ec16c..d007785 100644 --- a/Labs/13. Peripheral units/firmware/software/sw_led.S +++ b/Labs/13. Peripheral units/firmware/software/sw_led.S @@ -17,15 +17,16 @@ _start: 10: 00005237 li x4, 0x00005555 # сохраняем спец-код для сброса 14: 55520213 18: 00100313 li x6, 0x00000001 # сохраняем единицу - 1c: 00100293 li x5, 0x00000001 # подготавливаем маску прерывания единственного - # (нулевого) входа - 20: 30429073 csrw mie, x5 # загружаем маску в регистр маски - 24: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, - 28: 00028293 # только в случае la — это число является адресом + 1c: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число, + 20: 00028293 # только в случае la — это число является адресом # указанного места (адреса обработчика перехвата) # данная псевдоинструкция будет разбита на две # инструкции: lui и addi - 2c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания + 24: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания + 28: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного + # (нулевого) входа + 2c: 30429073 csrw mie, x5 # загружаем маску в регистр маски + # Вызов функции main main: 30: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1);