小编car*_*one的帖子

kmalloc中的缓冲区也是DMA安全缓冲区吗?

我正在为SPI连接的LCD编写帧缓冲驱动程序。我使用kmalloc分配缓冲区,该缓冲区很大-150KB。给定kmalloc分配缓冲区的方式,ksize报告使用更多内存的方式-大约256KB。

SPI spi_transfer结构采用指向tx和rx缓冲区的指针,这两个缓冲区都必须是DMA安全的。由于我希望tx缓冲区大约为16KB,我可以在kmalloced视频缓冲区中分配该缓冲区,并且仍然是DMA安全的吗?

这可以被认为是过早的优化,但是视频缓冲区中有太多的备用空间,很难使用它!基本上,分配的内存之间没有区别:

kmalloc(videosize)
Run Code Online (Sandbox Code Playgroud)

kmalloc(PAGE_ALIGN(videosize) + txbufsize)
Run Code Online (Sandbox Code Playgroud)

因此,可以将kptr返回并执行以下操作:

txbuf = (u8 *)kptr + PAGE_ALIGN(videosize);
Run Code Online (Sandbox Code Playgroud)

我知道“ DMA安全”的部分要求是适当的对齐方式-与我认为的CPU缓存行大小...-但是页面对齐是否可以这样做?

顺便说一句,我不确定tx和rx是否可以指向同一位置。spi.h标头也不清楚(实际上明显不清楚)。鉴于rx缓冲区永远不会超过几个字节,因此尝试找出麻烦来是很愚蠢的!

linux-device-driver linux-kernel dma

5
推荐指数
1
解决办法
3874
查看次数

用于 FP 的 Cortex A9 会胜过 C6000 DSP

我目前使用的是没有硬件 FPU 的 OMAP L138 处理器。我们将使用 FP 密集型算法处理光谱数据,因此 ARM 端将不够用。我不是算法人,而是“动态时间扭曲”(我不知道这是什么意思,不)。最初的性能数字是:

Core i7 Laptop@
2.9GHz :1 秒Raspberry Pi ARM1176 @ 700MHz:12 秒
OMAP L138 ARM926 @ 300MHz:193 秒

更糟糕的是,树莓派大约是我使用的电路板价格的 30%!

我确实有一个 TI C674x,它是 OMAP L138 中的另一个处理器。问题是我是否最好花几周时间尝试:

  • 学习 DSPLINK、互操作库和工具链,更不用说为 Code Composer 或
  • 将 L138 扔掉并转移到像 Pandaboard 这样的 Dual Cortex A9,可能会在此过程中遭受功率损失。

(当我查看 A8 上的 FPU 性能时,它并没有比 Rasp Pi 有所改进,但 Cortex A9 似乎有所改进)。

我明白答案是“视情况而定”。这里的其他人说“你解锁了一个令人难以置信的快速 DSP,如果分配正确的工作,它可以轻松地超越 Cortex-A8”但是对于定义的工作集,我是否最好跳到 A9,即使我不得不购买外部DSP 以后?

arm signal-processing ti-dsp

1
推荐指数
1
解决办法
3008
查看次数