0

当我通过引用字体数据库从 UART 获取字符代码时,我正在更新外部 ram 中的帧缓冲区。

帧缓冲区大小约为 600kb,在不使用 DMA 的情况下完全填充它大约需要 1.5 秒。外部 ram 大小为 8 MB。帧缓冲区位于数据部分中,因此 SDRAM 控制器将其赋予第二优先级,而文本部分具有最高优先级。SDRAM 控制器配置为在突发模式下运行。

我使用的处理器是运行频率为 200 MHz 的 OMAP 3515 和运行频率为 133 MHz 的外部 RAM。

我试图找到一个最佳解决方案来在 40 毫秒内填充 600kb 的帧缓冲区。请帮助我。

4

1 回答 1

1

启用MMU/MPU并打开i-cached-cache,这样代码就不会与内存移动竞争。使用说明ldmiastmia说明确保你爆线。允许图形内存是可写缓冲的。这允许 ARM 将写入组合在一起。您可以使用HSYNCVSYNC中断来刷新缓冲区。

根据Clifford,您当前的算法可能不是最优的。确保目标至少对齐 32 位。不清楚的是您是简单地复制内存还是是不同的像素格式、步幅等。如果您正在进行密集的平面计算,那么可以加速一些像素解包操作。但是,确保您的i-cache处于打开状态将使任何算法都快很多倍。如果你可以对齐你的字形,这样你就不需要读-修改-写循环到视频内存,你可以加快速度。或者,您可以使用在VSYNCHSYNC中断时将整个比例复制到主视频 RAM的阴影帧缓冲区。

有关允许 ARM 使总线饱和的一些提示,请参阅ARM memtest 。

于 2013-10-28T15:34:00.227 回答