arm (arm9 A9 之类)裸机或者跑rtos,
最简单的避免cache一致性的方法就是粗暴的禁止data cache,这样会极大的影响效率。
如果使能cache,
像gui之类的应用,最底层会频繁访问DDR,并且一般不是连续访问,这样反复的刷cache,也会导致效率非常低。
这种情况一般怎么做比较好?
如果不配置mmu,是不是无法做到直接写通到DDR?
//
linux下的fb,一般配置该区域内存是非cache的,app可以直接访问,无需关心cache问题,这个是mmu保证的吗?
离线
裸机我是切显存的时候显式更新cache到ddr,平常画UI的时候是不用管cache
离线
是做双缓存吗? 双缓存的话,如果分辨率比较高,执行一次memcpy,然后再刷新cache,消耗也比较大吧
离线
没理解gui和性能问题有关?
用GUI基于frame buffer的方式,你就需要更新,这里没有cache,那就每一次都需要写透。有cache就可以减少,在合适的时候flush cache一次就好。
cache的本意就是将频繁访问的数据加速啊
离线
是做双缓存吗? 双缓存的话,如果分辨率比较高,执行一次memcpy,然后再刷新cache,消耗也比较大吧
如果你是全屏刷就可以直接写显存然后切换就可以,不需要memcpy。
离线
全屏幕刷新,一般场合也不可能,除非是较小的屏幕。其实我考虑就是大屏幕这样情况,小屏幕怎么搞都差不多。
看到本站一些演示的移植gui效果,视觉效果还可以,但是响应速度较差,影响体验。
离线
我是这么处理的:显存也在cache区域的内存中,在帧同步中断里把显存对应的cache清理一遍就可以了。
这样,所有cache带来的便利和性能加持都用上了。
离线
裸机我是切显存的时候显式更新cache到ddr,平常画UI的时候是不用管cache
大神,你好,你这个是切换显存的时候,显式更新cache到ddr。这个为什么要cache更新到ddr?不是很懂。请指教。谢谢
离线
大神,你好,你这个是切换显存的时候,显式更新cache到ddr。这个为什么要cache更新到ddr?不是很懂。请指教。谢谢
因为LCD控制器从ddr读数据时是绕过了了cache直接读ddr的。这时候ddr的内容并不是最新的数据
离线
学习了。
离线
直接写显存的象素,用的是720MHzCPU频率,代码基于达克罗德大神的minimal_f1c100s_framebuff,屏幕是4.3寸480*272。
看这个刷新速度一点也不正常哇。
最近编辑记录 xsxusen05 (2020-05-21 22:14:58)
离线
直接写显存的象素,用的是720MHzCPU频率,代码基于达克罗德大神的minimal_f1c100s_framebuff,屏幕是4.3寸480*272。
看这个刷新速度一点也不正常哇。
做个双缓存帧同步切换,就不会这样了。
离线
直接写显存的象素,用的是720MHzCPU频率,代码基于达克罗德大神的minimal_f1c100s_framebuff,屏幕是4.3寸480*272。
看这个刷新速度一点也不正常哇。
用双缓冲了吗?
离线
没有用,只是测试一下而已。
离线
没有用,只是测试一下而已。
如果没用双缓冲,这个现象就是正常的。无法说明CPU慢之类的。
离线
正在 用GUI ,学习下,看是否有帮助
离线
这个现象就是正常的,双缓存搞起来
离线