这个问题涉及在飞思卡尔i.mx设备上运行SDMA引擎(i.MX535是否具体)?
我想从UART接收大于32字节的数据包,并使用SDMA引擎自动获取它们。这可能吗?有没有人有关于SDMA使用的其他信息?
修改:我将更加具体地了解我的情况和问题。
我已设法加载并运行自己的SDMA脚本。测试台是,
此设置适用于小于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读取数据的脚本吗?
答案 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寄存器读取数据。