SDMA飞思卡尔imx535

时间:2013-02-28 10:15:29

标签: c linux-kernel embedded arm

这个问题涉及在飞思卡尔i.mx设备上运行SDMA引擎(i.MX535是否具体)?

我想从UART接收大于32字节的数据包,并使用SDMA引擎自动获取它们。这可能吗?有没有人有关于SDMA使用的其他信息?

修改:我将更加具体地了解我的情况和问题。

我已设法加载并运行自己的SDMA脚本。测试台是,

  1. 在UART2上设置UART通信(9600,原始)(不使用标准的Freescale UART驱动程序)。
  2. 设置阈值级别为16的UART2 rx dma请求。
  3. 为UART2设置SDMA通道,运行 UART 2外部存储器等脚本。
  4. 此设置适用于小于32字节的数据包,但如果大小超过32字节,则会在设置RX FIFO Overrun位的情况下丢弃数据。如果我们使用在UART2上启用SDMA的标准Freescale UART驱动程序(使用 DMA ERROR 标签从UART打印出状态寄存器),则会发生同样的错误。

    Q1。有人设法在UART2等普通 UART上接收大于32字节的数据包。暗示我的剧本中有一个BUG。

    正常 UART如何表明它们也是直接连接到SDMA内核的共享UART。我也在UART3上测试了这个UART脚本。我的结论和观察是:
    首先,我使用标准的Freescale UART驱动程序进行测试,并使用标准脚本启用SDMA。这适用于大于32字节且波特率为1MHZ的数据包。所以我希望能够使用我自己的脚本和UART驱动程序,但我无法构建一个从UART3 RX寄存器读取的脚本。

    Q2。有人编写了一个从共享UART读取数据的脚本吗?

2 个答案:

答案 0 :(得分:2)

您必须将您的第一个孩子卖给飞思卡尔以获取此类信息。他们有许多内部文件。获得答案并非易事。

尝试并获取此回购:git://git.pengutronix.de/git/imx/sdma-firmware.git

ROM中有各种例程,您需要了解API。通常没有足够的RAM可以将所有代码放在那里,如果你想修改的话。也许你可以使用Sasha的反汇编程序并尝试调整你的一个二进制文件。

IMX25参考在SDMA控制器上有更多 public 文档;我在 IMX53参考手册中很少看到SDMA。

答案 1 :(得分:2)

  

是否有人编写了一个从共享UART读取数据的脚本?

如果要从共享外设读取/写入数据,则必须通过内部SDMA ram(0x1000-0xFFFF)中的内存映射“外设x存储空间”区域访问数据。所以在我的例子中,访问0x3000内部sdma ram从UART3 RXD寄存器读取数据。