Firefly开源社区

u-boot 内存读取很慢

86

积分

0

威望

0

贡献

技术小白

积分
86
发表于 2018-1-24 18:00:00     
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

请问大神, 如何解决


回复

使用道具 举报

2710

积分

56

威望

46

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
2710

优秀版主论坛元老

发表于 2018-1-25 09:24:22     
看看是不是DMA的关系
回复

使用道具 举报

86

积分

0

威望

0

贡献

技术小白

积分
86
发表于 2018-1-26 11:13:02     
本帖最后由 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>>
cache.png
2. mmu 需要采用 writeback 方式
( cache-cp15.c 里开  writeback 会引起后面死机, 可能是相关部分需要 flush cache)

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







回复

使用道具 举报

2710

积分

56

威望

46

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
2710

优秀版主论坛元老

发表于 2018-1-26 14:37:00     
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表