# RuntimeError: DMA channel not started because of address mismatch

**URL:** <https://discuss.pynq.io/t/runtimeerror-dma-channel-not-started-because-of-address-mismatch/8290>\
**Category:** Support\
**Created:** [April 8, 2025, 4:08pm UTC](https://discuss.pynq.io/t/runtimeerror-dma-channel-not-started-because-of-address-mismatch/8290 "2025-04-08T16:08:37Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sunil\_Dabbiru](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/sunil_dabbiru/32/6751_2.png) [@Sunil\_Dabbiru](https://discuss.pynq.io/u/Sunil_Dabbiru)\
**Post date:** [April 8, 2025, 4:08pm UTC](https://discuss.pynq.io/t/runtimeerror-dma-channel-not-started-because-of-address-mismatch/8290/1 "2025-04-08T16:08:37Z")

</div>

- PYNQ version & Board name & Tool Version  
PYNQ Version: 3.0.1, Board Name: Xilinix Ultrascale+ ZCU 111 Development Board, Tool Version: Vivado 2020.2
- Full details of the error message you see, or a detailed description of the problem you experience.  
Erorr Message in PYNQ :

* * *

RuntimeError Traceback (most recent call last)  
Input In [11], in \<cell line: 250\>()  
248 init\_rd\_plot()  
249 init\_det\_plot()  
→ 250 init\_rd\_range\_slice\_plot(v\_0\_bin)  
251 init\_rd\_vel\_slice\_plot(r\_bin)  
252 update\_plot()

Input In [11], in init\_rd\_range\_slice\_plot(v\_bin)  
146 global line, fig\_rd\_slice, line\_cfar\_ca, line\_cfar\_os  
147 fig\_rd\_slice, ax\_rd\_slice = plt.subplots(figsize=(15, 8))  
→ 148 rd\_map = generate\_range\_doppler()  
149 range\_slice = rd\_map[:, v\_bin]  
150 ax\_rd\_slice.set\_xlabel(‘Range (m)’) # Set x-axis label

Input In [11], in generate\_range\_doppler()  
78 def generate\_range\_doppler():  
79 #start\_time = time.time()  
80 for doppler\_bin in range(NUM\_SEQS):  
—\> 81 read\_buffer[doppler\_bin\*NUM\_SYMBOLS : (doppler\_bin+1)\*NUM\_SYMBOLS] = get\_range\_profile()  
82 matrix = np.reshape(read\_buffer, (NUM\_SEQS, NUM\_SYMBOLS)).T  
84 if debug\_doppler:

Input In [11], in get\_range\_profile()  
54 dma\_corr.recvchannel.start()  
55 dma\_corr.recvchannel.transfer(output\_buffer)  
—\> 56 dma\_corr.recvchannel.wait()  
57 return output\_buffer

File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/lib/dma.py:169, in \_SDMAChannel.wait(self)  
167 “”“Wait for the transfer to complete”“”  
168 if not self.running:  
→ 169 raise RuntimeError(“DMA channel not started”)  
170 while True:  
171 error = self.\_mmio.read(self.\_offset + 4)

RuntimeError: DMA channel not started

I have observed that my DMA is not able to acces the PL DDR memory because of the address mismatch. And i’m not sure how to solve this issue.

The address that im allocating in the address editor has an offset of 0x05 making the address 0x05\_0000\_0000 but while generating a buffer it is generating at a diifferent region i.e 0x77d6e000. So this address mismatch is causing the ddr to raise runtime error.

Do you have an solution for this.

output\_buffer = allocate((NUM\_SYMBOLS,), dtype=np.uint64, target=radar.ddr4\_0)

print(hex(output\_buffer.physical\_address))

output: 0x77d62000

 ![image](https://us1.discourse-cdn.com/flex019/uploads/pynq1/original/2X/a/aadb0a3bc125349c43e3f13e7969b7ceb0f4a3c1.jpeg)

---

<div class="post-metadata">

**Author:** ![marioruiz](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/marioruiz/32/2177_2.png) [@marioruiz](https://discuss.pynq.io/u/marioruiz)\
**Post date:** [April 9, 2025, 9:19am UTC](https://discuss.pynq.io/t/runtimeerror-dma-channel-not-started-because-of-address-mismatch/8290/2 "2025-04-09T09:19:06Z")

</div>

Hi @Sunil_Dabbiru,

You already have a topic with this issue. [RuntimeError: DMA channel not started on ZCU 111](https://discuss.pynq.io/t/runtimeerror-dma-channel-not-started-on-zcu-111/8287)

Please, keep the discussion in a single topic.
