ЛР13. Обновление ПО для периферий

This commit is contained in:
Andrei Solodovnikov
2024-11-23 17:17:48 +03:00
parent 5797bf3190
commit 001fe2d91e
14 changed files with 63 additions and 62 deletions

View File

@@ -5,11 +5,11 @@
00e00413
00f00493
00000593
00100293
30429073
03400293
00028293
30529073
000102b7
30429073
00000063
0000a383
04338263

View File

@@ -2,11 +2,11 @@
02000137
0e000193
00000593
00100293
30429073
02800293
00028293
30529073
000102b7
30429073
00000063
0000a383
00338663

View File

@@ -2,10 +2,10 @@
07000137
070011b7
96018193
00100293
30429073
02400293
30529073
000102b7
30429073
00000063
0000a383
00038403

View File

@@ -4,12 +4,12 @@
20018193
0030a623
00100213
0040a823
00100293
30429073
0030a823
03400293
00028293
30529073
000102b7
30429073
00000063
0000a383
00700333

View File

@@ -11,11 +11,11 @@ d0d18193
f7f20213
0ff00493
00100313
00100293
30429073
04c00293
00028293
30529073
000102b7
30429073
00000063
0000a383
00947433

View File

@@ -7,11 +7,11 @@
00100213
0040a823
00412823
00100293
30429073
03c00293
00028293
30529073
000102b7
30429073
00000063
0000a383
00712023

View File

@@ -5,11 +5,11 @@ aaa18193
00005237
55520213
00100313
00100293
30429073
03400293
00028293
30529073
000102b7
30429073
00000063
0000a383
00338863

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);