关于STM32G473程序运行于Flash和Ram速度问题,向大家请教一下。之前用的是F4系列的程序(没有指定ram区),移植到G473里运行后发现速度变慢了接近20us;然后尝试指定Ram区运行后,速度跟F4差不多了。请问这是怎么回事呀?G473跟之前的F4系列硬件架构上有区别么?请大佬指教。 |
jjjjjjjjjjjjjjj
比较好奇你是怎么测出来的,这两个型号都是M4内核,但是主频和DMPS略有不同
在RAM区读指令速度应该比从FLASH读指令速度要快一点的。
比较好奇你是怎么测出来的,这两个型号都是M4内核,但是主频和DMPS略有不同 ...
我用了个100us中断,里面都是相同的算法,之前用的是F405(168MHz),实际运行时间在60us左右;现在换到G473(170MHz),不指定ram的话,测试接近80us了。两个测试都是用DO电平测的。
想知道怎么测试代码在不同区域执行的速度。之前弄到SDRAM执行去了,但是不知道怎么测速度,哪位大佬知道
我用了个100us中断,里面都是相同的算法,之前用的是F405(168MHz),实际运行时间在60us左右;现在换到G4 ...
是否能进一步看看是哪段程序慢了,还是整体慢了?
我用了个100us中断,里面都是相同的算法,之前用的是F405(168MHz),实际运行时间在60us左右;现在换到G4 ...
看看编译出的汇编是不是一样的
看看编译出的汇编是不是一样的
不太懂汇编,取了其中一段对比,感觉指令应该是一样的呀。
是否能进一步看看是哪段程序慢了,还是整体慢了?
又对比了1msTask,程序也变慢了20%左右。
看看编译出的汇编是不是一样的
昨天图片上传失败了。拿了其中一段对比,感觉指令一样的。(不懂汇编)
G473的架构更加灵活一些。对于程序放在FLASH中运行,需要打开ART加速器和指令预取使能cache功能,这样才能保证指令0等待取指,与之架构相匹配。 而放在RAM里(CCM sram)里,由于指令总线和数据总线直接连接,并且RAM的速度响应快,直接实现指令0等待取指,所以速度实现最快。 具体可参考官方手册相关部分关于总线的介绍和框图。
G473的架构更加灵活一些。对于程序放在FLASH中运行,需要打开ART加速器和指令预取使能cache功能,这样才能 ...
感谢您,我去查查看。