mirror of
https://github.com/MPSU/APS.git
synced 2025-09-16 09:40:10 +00:00
ЛР13. Обновление ПО для периферий
This commit is contained in:
@@ -5,11 +5,11 @@
|
|||||||
00e00413
|
00e00413
|
||||||
00f00493
|
00f00493
|
||||||
00000593
|
00000593
|
||||||
00100293
|
|
||||||
30429073
|
|
||||||
03400293
|
03400293
|
||||||
00028293
|
00028293
|
||||||
30529073
|
30529073
|
||||||
|
000102b7
|
||||||
|
30429073
|
||||||
00000063
|
00000063
|
||||||
0000a383
|
0000a383
|
||||||
04338263
|
04338263
|
||||||
|
@@ -2,11 +2,11 @@
|
|||||||
02000137
|
02000137
|
||||||
0e000193
|
0e000193
|
||||||
00000593
|
00000593
|
||||||
00100293
|
|
||||||
30429073
|
|
||||||
02800293
|
02800293
|
||||||
00028293
|
00028293
|
||||||
30529073
|
30529073
|
||||||
|
000102b7
|
||||||
|
30429073
|
||||||
00000063
|
00000063
|
||||||
0000a383
|
0000a383
|
||||||
00338663
|
00338663
|
||||||
|
@@ -2,10 +2,10 @@
|
|||||||
07000137
|
07000137
|
||||||
070011b7
|
070011b7
|
||||||
96018193
|
96018193
|
||||||
00100293
|
|
||||||
30429073
|
|
||||||
02400293
|
02400293
|
||||||
30529073
|
30529073
|
||||||
|
000102b7
|
||||||
|
30429073
|
||||||
00000063
|
00000063
|
||||||
0000a383
|
0000a383
|
||||||
00038403
|
00038403
|
||||||
|
@@ -4,12 +4,12 @@
|
|||||||
20018193
|
20018193
|
||||||
0030a623
|
0030a623
|
||||||
00100213
|
00100213
|
||||||
0040a823
|
0030a823
|
||||||
00100293
|
|
||||||
30429073
|
|
||||||
03400293
|
03400293
|
||||||
00028293
|
00028293
|
||||||
30529073
|
30529073
|
||||||
|
000102b7
|
||||||
|
30429073
|
||||||
00000063
|
00000063
|
||||||
0000a383
|
0000a383
|
||||||
00700333
|
00700333
|
||||||
|
@@ -11,11 +11,11 @@ d0d18193
|
|||||||
f7f20213
|
f7f20213
|
||||||
0ff00493
|
0ff00493
|
||||||
00100313
|
00100313
|
||||||
00100293
|
|
||||||
30429073
|
|
||||||
04c00293
|
04c00293
|
||||||
00028293
|
00028293
|
||||||
30529073
|
30529073
|
||||||
|
000102b7
|
||||||
|
30429073
|
||||||
00000063
|
00000063
|
||||||
0000a383
|
0000a383
|
||||||
00947433
|
00947433
|
||||||
|
@@ -7,11 +7,11 @@
|
|||||||
00100213
|
00100213
|
||||||
0040a823
|
0040a823
|
||||||
00412823
|
00412823
|
||||||
00100293
|
|
||||||
30429073
|
|
||||||
03c00293
|
03c00293
|
||||||
00028293
|
00028293
|
||||||
30529073
|
30529073
|
||||||
|
000102b7
|
||||||
|
30429073
|
||||||
00000063
|
00000063
|
||||||
0000a383
|
0000a383
|
||||||
00712023
|
00712023
|
||||||
|
@@ -5,11 +5,11 @@ aaa18193
|
|||||||
00005237
|
00005237
|
||||||
55520213
|
55520213
|
||||||
00100313
|
00100313
|
||||||
00100293
|
|
||||||
30429073
|
|
||||||
03400293
|
03400293
|
||||||
00028293
|
00028293
|
||||||
30529073
|
30529073
|
||||||
|
000102b7
|
||||||
|
30429073
|
||||||
00000063
|
00000063
|
||||||
0000a383
|
0000a383
|
||||||
00338863
|
00338863
|
||||||
|
@@ -11,21 +11,21 @@ See https://github.com/MPSU/APS/blob/master/LICENSE file for licensing details.
|
|||||||
_start:
|
_start:
|
||||||
# Инициализируем начальные значения регистров
|
# Инициализируем начальные значения регистров
|
||||||
0: 030000b7 li x1 , 0x03000000 # сохраняем базовый адрес клавиатуры
|
0: 030000b7 li x1 , 0x03000000 # сохраняем базовый адрес клавиатуры
|
||||||
4: 04000137 li x2 , 0x04000000 # сохраняем базовый адрес хекс-контроллера
|
4: 04000137 li x2 , 0x04000000 # сохраняем базовый адрес hex-контроллера
|
||||||
8: 0e000193 li x3 , 0x000000e0 # сохраняем сканкод e0
|
8: 0e000193 li x3 , 0x000000e0 # сохраняем сканкод e0
|
||||||
c: 0f000213 li x4 , 0x000000f0 # сохраняем сканкод f0
|
c: 0f000213 li x4 , 0x000000f0 # сохраняем сканкод f0
|
||||||
10: 00e00413 li x8 , 0x0000000e # сохраняем значение e
|
10: 00e00413 li x8 , 0x0000000e # сохраняем значение e
|
||||||
14: 00f00493 li x9 , 0x0000000f # сохраняем значение f
|
14: 00f00493 li x9 , 0x0000000f # сохраняем значение f
|
||||||
18: 00000593 li x11, 0x00000000 # сохраняем ноль
|
18: 00000593 li x11, 0x00000000 # сохраняем ноль
|
||||||
1c: 00100293 li x5 , 0x00000001 # подготавливаем маску прерывания единственного
|
1c: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
||||||
# (нулевого) входа
|
20: 00028293 # только в случае la — это число является адресом
|
||||||
20: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
|
||||||
24: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
|
||||||
28: 00028293 # только в случае la — это число является адресом
|
|
||||||
# указанного места (адреса обработчика перехвата)
|
# указанного места (адреса обработчика перехвата)
|
||||||
# данная псевдоинструкция будет разбита на две
|
# данная псевдоинструкция будет разбита на две
|
||||||
# инструкции: lui и addi
|
# инструкции: lui и addi
|
||||||
2c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
24: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
||||||
|
28: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного
|
||||||
|
# (нулевого) входа
|
||||||
|
2c: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
||||||
|
|
||||||
# Вызов функции main
|
# Вызов функции main
|
||||||
main:
|
main:
|
||||||
|
@@ -14,15 +14,15 @@ _start:
|
|||||||
4: 02000137 li x2 , 0x02000000 # сохраняем базовый адрес led-контроллера
|
4: 02000137 li x2 , 0x02000000 # сохраняем базовый адрес led-контроллера
|
||||||
8: 0e000193 li x3 , 0x000000e0 # сохраняем сканкод e0
|
8: 0e000193 li x3 , 0x000000e0 # сохраняем сканкод e0
|
||||||
0с: 00000593 li x11, 0x00000000 # сохраняем ноль
|
0с: 00000593 li x11, 0x00000000 # сохраняем ноль
|
||||||
10: 00100293 li x5 , 0x00000001 # подготавливаем маску прерывания единственного
|
10: 02800293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
||||||
# (нулевого) входа
|
14: 00028293 # только в случае la — это число является адресом
|
||||||
14: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
|
||||||
18: 02800293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
|
||||||
1c: 00028293 # только в случае la — это число является адресом
|
|
||||||
# указанного места (адреса обработчика перехвата)
|
# указанного места (адреса обработчика перехвата)
|
||||||
# данная псевдоинструкция будет разбита на две
|
# данная псевдоинструкция будет разбита на две
|
||||||
# инструкции: lui и addi
|
# инструкции: lui и addi
|
||||||
20: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
18: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
||||||
|
1c: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного
|
||||||
|
# (нулевого) входа
|
||||||
|
20: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
||||||
|
|
||||||
# Вызов функции main
|
# Вызов функции main
|
||||||
main:
|
main:
|
||||||
|
@@ -15,15 +15,13 @@ _start:
|
|||||||
8: 070011b7 li x3, 0x07000960 # количество символов на экране
|
8: 070011b7 li x3, 0x07000960 # количество символов на экране
|
||||||
c: 96018193 # данная псевдоинструкция будет разбита на две
|
c: 96018193 # данная псевдоинструкция будет разбита на две
|
||||||
# инструкции: lui и addi
|
# инструкции: lui и addi
|
||||||
10: 00100293 li x5, 0x00000001 # подготавливаем маску прерывания единственного
|
10: 02400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
||||||
# (нулевого) входа
|
|
||||||
14: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
|
||||||
18: 02400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
|
||||||
# только в случае la — это число является адресом
|
# только в случае la — это число является адресом
|
||||||
# указанного места (адреса обработчика перехвата)
|
# указанного места (адреса обработчика перехвата)
|
||||||
# данная псевдоинструкция будет разбита на две
|
14: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
||||||
# инструкции: lui и addi
|
18: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного
|
||||||
1c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
# (нулевого) входа
|
||||||
|
1c: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
||||||
|
|
||||||
# Вызов функции main
|
# Вызов функции main
|
||||||
main:
|
main:
|
||||||
|
@@ -11,21 +11,22 @@ See https://github.com/MPSU/APS/blob/master/LICENSE file for licensing details.
|
|||||||
_start:
|
_start:
|
||||||
# Инициализируем начальные значения регистров
|
# Инициализируем начальные значения регистров
|
||||||
0: 050000b7 li x1 , 0x05000000 # сохраняем базовый адрес uart_rx
|
0: 050000b7 li x1 , 0x05000000 # сохраняем базовый адрес uart_rx
|
||||||
4: 04000137 li x2 , 0x04000000 # сохраняем базовый адрес хекс-контроллера
|
4: 04000137 li x2 , 0x04000000 # сохраняем базовый адрес hex-контроллера
|
||||||
8: 0001c1b7 li x3 , 0x0001c200 # устанавливаем бодрейт 115200
|
8: 0001c1b7 li x3 , 0x0001c200 # устанавливаем бодрейт 115200
|
||||||
c: 20018193
|
c: 20018193
|
||||||
10: 0030a623 sw x3 , 0x0c(x1)
|
10: 0030a623 sw x3 , 0x0c(x1)
|
||||||
14: 00100213 li x4 , 0x00000001 # устанавливаем parity_bit
|
14: 00100213 li x4 , 0x00000001 # устанавливаем parity_bit
|
||||||
18: 0030a823 sw x4 , 0x10(x1)
|
18: 0030a823 sw x4 , 0x10(x1)
|
||||||
1c: 00100293 li x5 , 0x00000001 # подготавливаем маску прерывания единственного
|
1c: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
||||||
# (нулевого) входа
|
20: 00028293 # только в случае la — это число является адресом
|
||||||
20: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
|
||||||
24: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
|
||||||
28: 00028293 # только в случае la — это число является адресом
|
|
||||||
# указанного места (адреса обработчика перехвата)
|
# указанного места (адреса обработчика перехвата)
|
||||||
# данная псевдоинструкция будет разбита на две
|
# данная псевдоинструкция будет разбита на две
|
||||||
# инструкции: lui и addi
|
# инструкции: lui и addi
|
||||||
2c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
24: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
||||||
|
28: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного
|
||||||
|
# (нулевого) входа
|
||||||
|
2c: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
||||||
|
|
||||||
# Вызов функции main
|
# Вызов функции main
|
||||||
main:
|
main:
|
||||||
30: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1);
|
30: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1);
|
||||||
|
@@ -23,16 +23,16 @@ _start:
|
|||||||
28: f7f20213
|
28: f7f20213
|
||||||
2c: 0ff00493 li x9, 0x000000ff # сохраняем маску для обнуления старшей части
|
2c: 0ff00493 li x9, 0x000000ff # сохраняем маску для обнуления старшей части
|
||||||
30: 00100313 li x6, 0x00000001 # сохраняем единицу
|
30: 00100313 li x6, 0x00000001 # сохраняем единицу
|
||||||
34: 00100293 li x5, 0x00000001 # подготавливаем маску прерывания единственного
|
34: 04c00293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
||||||
# (нулевого) входа
|
38: 00028293 # только в случае la — это число является адресом
|
||||||
38: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
# указанного места (адреса обработчика перехвата)
|
||||||
|
|
||||||
3c: 04c00293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
|
||||||
40: 00028293 # только в случае la — это число является адресом
|
|
||||||
40: 00028293 # указанного места (адреса обработчика перехвата)
|
|
||||||
# данная псевдоинструкция будет разбита на две
|
# данная псевдоинструкция будет разбита на две
|
||||||
# инструкции: lui и addi
|
# инструкции: lui и addi
|
||||||
44: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
3c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
||||||
|
40: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного
|
||||||
|
# (нулевого) входа
|
||||||
|
44: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
||||||
|
|
||||||
# Вызов функции main
|
# Вызов функции main
|
||||||
main:
|
main:
|
||||||
48: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1);
|
48: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1);
|
||||||
|
@@ -19,15 +19,16 @@ _start:
|
|||||||
18: 00100213 li x4 , 0x00000001 # устанавливаем parity_bit
|
18: 00100213 li x4 , 0x00000001 # устанавливаем parity_bit
|
||||||
1c: 0040a823 sw x4 , 0x10(x1)
|
1c: 0040a823 sw x4 , 0x10(x1)
|
||||||
20: 00412823 sw x4 , 0x10(x2)
|
20: 00412823 sw x4 , 0x10(x2)
|
||||||
24: 00100293 li x5 , 0x00000001 # подготавливаем маску прерывания единственного
|
24: 03c00293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
||||||
# (нулевого) входа
|
28: 00028293 # только в случае la — это число является адресом
|
||||||
28: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
|
||||||
2c: 03c00293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
|
||||||
30: 00028293 # только в случае la — это число является адресом
|
|
||||||
# указанного места (адреса обработчика перехвата)
|
# указанного места (адреса обработчика перехвата)
|
||||||
# данная псевдоинструкция будет разбита на две
|
# данная псевдоинструкция будет разбита на две
|
||||||
# инструкции: lui и addi
|
# инструкции: lui и addi
|
||||||
34: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
2c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
||||||
|
30: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного
|
||||||
|
# (нулевого) входа
|
||||||
|
34: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
||||||
|
|
||||||
# Вызов функции main
|
# Вызов функции main
|
||||||
main:
|
main:
|
||||||
38: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1);
|
38: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1);
|
||||||
|
@@ -17,15 +17,16 @@ _start:
|
|||||||
10: 00005237 li x4, 0x00005555 # сохраняем спец-код для сброса
|
10: 00005237 li x4, 0x00005555 # сохраняем спец-код для сброса
|
||||||
14: 55520213
|
14: 55520213
|
||||||
18: 00100313 li x6, 0x00000001 # сохраняем единицу
|
18: 00100313 li x6, 0x00000001 # сохраняем единицу
|
||||||
1c: 00100293 li x5, 0x00000001 # подготавливаем маску прерывания единственного
|
1c: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
||||||
# (нулевого) входа
|
20: 00028293 # только в случае la — это число является адресом
|
||||||
20: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
|
||||||
24: 03400293 la x5, trap_handler # псевдоинструкция la аналогично li загружает число,
|
|
||||||
28: 00028293 # только в случае la — это число является адресом
|
|
||||||
# указанного места (адреса обработчика перехвата)
|
# указанного места (адреса обработчика перехвата)
|
||||||
# данная псевдоинструкция будет разбита на две
|
# данная псевдоинструкция будет разбита на две
|
||||||
# инструкции: lui и addi
|
# инструкции: lui и addi
|
||||||
2c: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
24: 30529073 csrw mtvec, x5 # устанавливаем вектор прерывания
|
||||||
|
28: 000102b7 li x5 , 0x00010000 # подготавливаем маску прерывания единственного
|
||||||
|
# (нулевого) входа
|
||||||
|
2c: 30429073 csrw mie, x5 # загружаем маску в регистр маски
|
||||||
|
|
||||||
# Вызов функции main
|
# Вызов функции main
|
||||||
main:
|
main:
|
||||||
30: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1);
|
30: 00000063 beq x0, x0, main # бесконечный цикл, аналогичный while (1);
|
||||||
|
Reference in New Issue
Block a user