Firefly开源社区

标题: u-boot 内存读取很慢 [打印本页]

作者: xmwvv    时间: 2018-1-24 18:00
标题: u-boot 内存读取很慢
RK3128 u-boot 测试内存速度 , 发现 memcpy 非常慢, 128MB 数据需要 5.036s (才 25MB/s)
后来用汇编直接从 DDR 读取数据, 也要 3.653s; 而往 DDR 写数据非常快, 128MB 只要 0.059s(2.1GB/s)
ddr cache 已经全开了, CPU 设置到了 1.2GHz

u-boot 代码从这个地址载的 https://bitbucket.org/T-Firefly/firenow-lollipop
DDR 配置文件用的是 RK3128_DDR3_300M_V2.05.bin

进内核后, 同样程序测试, 读取和 memcpy 就很快了, 可以到 2GB/s

请问大神, 如何解决



作者: zhansb    时间: 2018-1-25 09:24
看看是不是DMA的关系
作者: xmwvv    时间: 2018-1-26 11:13
本帖最后由 xmwvv 于 2018-1-26 11:17 编辑
zhansb 发表于 2018-1-25 09:24
看看是不是DMA的关系

感谢回复
找到原因了, 是 cache 问题 (操作 sram 也是一样慢):

1. cortex 多核 32 位 需要开启 ACTLR.SMP , mmu 和 cache 才起效. 参考 <<Cortex™-A7 MPCore™ Technical Reference Manual>>

2. mmu 需要采用 writeback 方式
( cache-cp15.c 里开  writeback 会引起后面死机, 可能是相关部分需要 flush cache)

按上面正确开启 cache 后, 汇编读取 128MB 从 3.793 降到 0.085s,  memcpy 128MB 从 5.171s 降到 0.332s!








作者: zhansb    时间: 2018-1-26 14:37





欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1