<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: &amp;lt;Вопрос&amp;gt;&amp;lt;Как читать память DMA&amp;gt; </title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9082.html</link>
    <description>C DMA сталкиваюсь впервые. Маны причитаны самая толковая O&apos;Relly (кажеться так его зовут). Недопонимаю как читать DMA. &lt;br&gt;&lt;br&gt;В drname_open вызываю pci_alloc_consistent, получаю виртуальный адрес rx_buf и физический dma_buf, те &lt;br&gt;  rx_buf = pci_alloc_consistent(ppci_dev, len_dma, &amp;dma_buf);&lt;br&gt;&lt;br&gt;Потом записываю в регистры pci Ri...Ri+n физические адреса dma_buf с требуемым смещением. Запись/чтение регистров Ri...Ri+n в BARn все ок (проверяно).&lt;br&gt;&lt;br&gt;Дальше хочу просто хочу прочитать значение в dma. Делаю это в прерывании/или  в ioctl. &lt;br&gt;unsigneg char *pBuf = NULL;&lt;br&gt;for (int i = 0; i &amp;lt; MAX_BYTE_I; i++)&lt;br&gt;&#123;&lt;br&gt;pBuf = &amp;rx_buf&#091;i&#093;;&lt;br&gt;printk(&quot;&amp;lt;1&amp;gt; &#037;x &#092;n&quot;, *pBuf);&lt;br&gt;&#125; &lt;br&gt;Может кто толковое скажет?&lt;br&gt;</description>

<item>
    <title>&amp;lt;Вопрос&amp;gt;&amp;lt;Как читать память DMA&amp;gt;  (Alex_S)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9082.html#3</link>
    <pubDate>Mon, 04 Apr 2011 03:05:35 GMT</pubDate>
    <description>&amp;gt; C DMA сталкиваюсь впервые. Маны причитаны самая толковая O&apos;Relly (кажеться так его &lt;br&gt;&amp;gt; зовут). Недопонимаю как читать DMA.&lt;br&gt;&lt;br&gt; в чем собственно проблема ? &lt;br&gt; DMA - это не память, а способ доступа. &lt;br&gt; грубо говоря, ты устанавливаешь, сколько откуда и куда писать, пинаешь контроллер и он начинает тебе копировать, а ты можешь заниматься другими делами - процессор не участвует.&lt;br&gt;Потом контроллер тебе прерывание выставит, например, когда закончится копирование.&lt;br&gt;как выставил - все, можешь читать каким угодно образом. хоть в цикле побайтно. &lt;br&gt; &lt;br&gt;pci_alloc_consistent, насколко я помню, просто дает тебе буфер приема. Потом ты сообщаешь его контроллеру и программируешь пересылку - через pci регистры или еще как ... &lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>&amp;lt;Вопрос&amp;gt;&amp;lt;Как читать память DMA&amp;gt;  (C)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9082.html#2</link>
    <pubDate>Sat, 02 Apr 2011 22:50:25 GMT</pubDate>
    <description>такому умному как вы врядли можно что то обьяснить!&lt;br&gt;лучше откройте любой драйвер, к примеру сетевой карты&lt;br&gt;и сами разберитесь как он работает&lt;br&gt;тогда и поймете как работает DMA и сами сможете сделать то что вы там с ней хотите&lt;br&gt;</description>
</item>

<item>
    <title>во шариш а (Вова)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9082.html#1</link>
    <pubDate>Thu, 31 Mar 2011 05:44:57 GMT</pubDate>
    <description>от это шарит в кампах пацан а!  О шарит!&lt;br&gt;</description>
</item>

</channel>
</rss>
