mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 09:10:10 +00:00
ЛР13. Обновление ПО для периферий
This commit is contained in:
@@ -5,11 +5,11 @@
|
||||
00e00413
|
||||
00f00493
|
||||
00000593
|
||||
00100293
|
||||
30429073
|
||||
03400293
|
||||
00028293
|
||||
30529073
|
||||
000102b7
|
||||
30429073
|
||||
00000063
|
||||
0000a383
|
||||
04338263
|
||||
|
@@ -2,11 +2,11 @@
|
||||
02000137
|
||||
0e000193
|
||||
00000593
|
||||
00100293
|
||||
30429073
|
||||
02800293
|
||||
00028293
|
||||
30529073
|
||||
000102b7
|
||||
30429073
|
||||
00000063
|
||||
0000a383
|
||||
00338663
|
||||
|
@@ -2,10 +2,10 @@
|
||||
07000137
|
||||
070011b7
|
||||
96018193
|
||||
00100293
|
||||
30429073
|
||||
02400293
|
||||
30529073
|
||||
000102b7
|
||||
30429073
|
||||
00000063
|
||||
0000a383
|
||||
00038403
|
||||
|
@@ -4,12 +4,12 @@
|
||||
20018193
|
||||
0030a623
|
||||
00100213
|
||||
0040a823
|
||||
00100293
|
||||
30429073
|
||||
0030a823
|
||||
03400293
|
||||
00028293
|
||||
30529073
|
||||
000102b7
|
||||
30429073
|
||||
00000063
|
||||
0000a383
|
||||
00700333
|
||||
|
@@ -11,11 +11,11 @@ d0d18193
|
||||
f7f20213
|
||||
0ff00493
|
||||
00100313
|
||||
00100293
|
||||
30429073
|
||||
04c00293
|
||||
00028293
|
||||
30529073
|
||||
000102b7
|
||||
30429073
|
||||
00000063
|
||||
0000a383
|
||||
00947433
|
||||
|
@@ -7,11 +7,11 @@
|
||||
00100213
|
||||
0040a823
|
||||
00412823
|
||||
00100293
|
||||
30429073
|
||||
03c00293
|
||||
00028293
|
||||
30529073
|
||||
000102b7
|
||||
30429073
|
||||
00000063
|
||||
0000a383
|
||||
00712023
|
||||
|
@@ -5,11 +5,11 @@ aaa18193
|
||||
00005237
|
||||
55520213
|
||||
00100313
|
||||
00100293
|
||||
30429073
|
||||
03400293
|
||||
00028293
|
||||
30529073
|
||||
000102b7
|
||||
30429073
|
||||
00000063
|
||||
0000a383
|
||||
00338863
|
||||
|
@@ -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:
|
||||
|
@@ -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:
|
||||
|
@@ -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:
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user