Skip to content

Commit 492bb1b

Browse files
Merge pull request #969 from cla7aye15I4nd/dev
Added some peripheral details
2 parents 3e265c7 + 5349a26 commit 492bb1b

22 files changed

+601
-74
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ def stm32f411_dma():
99
ql = Qiling(["../rootfs/mcu/stm32f411/dma-clock.hex"],
1010
archtype="cortex_m", profile="stm32f411", verbose=QL_VERBOSE.DEBUG)
1111

12-
ql.hw.create('usart2')
13-
ql.hw.create('dma1')
12+
ql.hw.create('usart2').watch()
13+
ql.hw.create('dma1').watch()
1414
ql.hw.create('rcc')
1515

1616
ql.run(count=200000)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ def stm32f411_freertos():
99
ql = Qiling(["../rootfs/mcu/stm32f411/os-demo.hex"],
1010
archtype="cortex_m", profile="stm32f411", verbose=QL_VERBOSE.DEBUG)
1111

12-
ql.hw.create('usart2')
13-
ql.hw.create('rcc')
14-
ql.hw.create('gpioa')
12+
ql.hw.create('usart2').watch()
13+
ql.hw.create('gpioa').watch()
14+
ql.hw.create('rcc')
1515

1616
ql.hw.systick.set_ratio(100)
1717
ql.run(count=200000)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ def test_mcu_gpio_stm32f411():
99
ql = Qiling(["../../examples/rootfs/mcu/stm32f411/hello_gpioA.hex"],
1010
archtype="cortex_m", profile="stm32f411", verbose=QL_VERBOSE.DEBUG)
1111

12-
ql.hw.create('usart2')
13-
ql.hw.create('rcc')
14-
ql.hw.create('gpioa')
12+
ql.hw.create('usart2').watch()
13+
ql.hw.create('rcc').watch()
14+
ql.hw.create('gpioa').watch()
1515

1616

1717
ql.hw.gpioa.hook_set(5, lambda: print('LED light up'))

examples/mcu/stm32f4_led.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

qiling/hw/char/stm32f4xx_usart.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def __init__(self, ql, label, intn=None):
5959
self.recv_buf = bytearray()
6060
self.send_buf = bytearray()
6161

62-
@QlPeripheral.read_debug
62+
@QlPeripheral.debug_info()
6363
def read(self, offset: int, size: int) -> int:
6464
buf = ctypes.create_string_buffer(size)
6565
ctypes.memmove(buf, ctypes.addressof(self.usart) + offset, size)
@@ -70,7 +70,7 @@ def read(self, offset: int, size: int) -> int:
7070

7171
return retval
7272

73-
@QlPeripheral.write_debug
73+
@QlPeripheral.debug_info()
7474
def write(self, offset: int, size: int, value: int):
7575
if offset == self.struct.SR.offset:
7676
self.usart.SR &= value | USART_SR.CTS | USART_SR.LBD | USART_SR.TC | USART_SR.RXNE

qiling/hw/const/stm32f4xx_dma.py

Lines changed: 108 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from enum import IntEnum
77

88

9-
class DMA_CR(IntEnum):
9+
class DMA_SxCR(IntEnum):
1010
CHSEL = 7 << 25
1111
CHSEL_0 = 1 << 25
1212
CHSEL_1 = 2 << 25
@@ -42,11 +42,114 @@ class DMA_CR(IntEnum):
4242
DMEIE = 1 << 1
4343
EN = 1 << 0
4444

45+
class DMA_SxFCR(IntEnum):
46+
FEIE = 1 << 7
47+
FS = 0x7 << 3
48+
DMDIS = 1 << 2
49+
FTH = 0x3 << 0
50+
51+
class DMA_LISR(IntEnum):
52+
TCIF3 = 1 << 27
53+
HTIF3 = 1 << 26
54+
TEIF3 = 1 << 25
55+
DMEIF3 = 1 << 24
56+
FEIF3 = 1 << 22
57+
TCIF2 = 1 << 21
58+
HTIF2 = 1 << 20
59+
TEIF2 = 1 << 19
60+
DMEIF2 = 1 << 18
61+
FEIF2 = 1 << 16
62+
TCIF1 = 1 << 11
63+
HTIF1 = 1 << 10
64+
TEIF1 = 1 << 9
65+
DMEIF1 = 1 << 8
66+
FEIF1 = 1 << 6
67+
TCIF0 = 1 << 5
68+
HTIF0 = 1 << 4
69+
TEIF0 = 1 << 3
70+
DMEIF0 = 1 << 2
71+
FEIF0 = 1 << 0
72+
73+
class DMA_HISR(IntEnum):
74+
TCIF7 = 1 << 27
75+
HTIF7 = 1 << 26
76+
TEIF7 = 1 << 25
77+
DMEIF7 = 1 << 24
78+
FEIF7 = 1 << 22
79+
TCIF6 = 1 << 21
80+
HTIF6 = 1 << 20
81+
TEIF6 = 1 << 19
82+
DMEIF6 = 1 << 18
83+
FEIF6 = 1 << 16
84+
TCIF5 = 1 << 11
85+
HTIF5 = 1 << 10
86+
TEIF5 = 1 << 9
87+
DMEIF5 = 1 << 8
88+
FEIF5 = 1 << 6
89+
TCIF4 = 1 << 5
90+
HTIF4 = 1 << 4
91+
TEIF4 = 1 << 3
92+
DMEIF4 = 1 << 2
93+
FEIF4 = 1 << 0
94+
95+
class DMA_LIFCR(IntEnum):
96+
CTCIF3 = 1 << 27
97+
CHTIF3 = 1 << 26
98+
CTEIF3 = 1 << 25
99+
CDMEIF3 = 1 << 24
100+
CFEIF3 = 1 << 22
101+
CTCIF2 = 1 << 21
102+
CHTIF2 = 1 << 20
103+
CTEIF2 = 1 << 19
104+
CDMEIF2 = 1 << 18
105+
CFEIF2 = 1 << 16
106+
CTCIF1 = 1 << 11
107+
CHTIF1 = 1 << 10
108+
CTEIF1 = 1 << 9
109+
CDMEIF1 = 1 << 8
110+
CFEIF1 = 1 << 6
111+
CTCIF0 = 1 << 5
112+
CHTIF0 = 1 << 4
113+
CTEIF0 = 1 << 3
114+
CDMEIF0 = 1 << 2
115+
CFEIF0 = 1 << 0
116+
117+
class DMA_HIFCR(IntEnum):
118+
CTCIF7 = 1 << 27
119+
CHTIF7 = 1 << 26
120+
CTEIF7 = 1 << 25
121+
CDMEIF7 = 1 << 24
122+
CFEIF7 = 1 << 22
123+
CTCIF6 = 1 << 21
124+
CHTIF6 = 1 << 20
125+
CTEIF6 = 1 << 19
126+
CDMEIF6 = 1 << 18
127+
CFEIF6 = 1 << 16
128+
CTCIF5 = 1 << 11
129+
CHTIF5 = 1 << 10
130+
CTEIF5 = 1 << 9
131+
CDMEIF5 = 1 << 8
132+
CFEIF5 = 1 << 6
133+
CTCIF4 = 1 << 5
134+
CHTIF4 = 1 << 4
135+
CTEIF4 = 1 << 3
136+
CDMEIF4 = 1 << 2
137+
CFEIF4 = 1 << 0
138+
139+
class DMA_SxPAR(IntEnum):
140+
PA = 0xffffffff << 0
141+
142+
class DMA_SxM0AR(IntEnum):
143+
M0A = 0xffffffff << 0
144+
145+
class DMA_SxM1AR(IntEnum):
146+
M1A = 0xffffffff << 0
147+
45148
class DMA(IntEnum):
46149
PERIPH_TO_MEMORY = 0
47-
MEMORY_TO_PERIPH = DMA_CR.DIR_0
48-
MEMORY_TO_MEMORY = DMA_CR.DIR_1
150+
MEMORY_TO_PERIPH = DMA_SxCR.DIR_0
151+
MEMORY_TO_MEMORY = DMA_SxCR.DIR_1
49152

50153
PDATAALIGN_BYTE = 0
51-
PDATAALIGN_HALFWORD = DMA_CR.MSIZE_0
52-
PDATAALIGN_WORD = DMA_CR.MSIZE_1
154+
PDATAALIGN_HALFWORD = DMA_SxCR.MSIZE_0
155+
PDATAALIGN_WORD = DMA_SxCR.MSIZE_1

0 commit comments

Comments
 (0)