请选择 进入手机版 | 继续访问电脑版

芯虎论坛

 找回密码
 立即注册
查看: 4993|回复: 5

华大HC32F460 HC32F4A0加速程序运行速度

[复制链接]

22

主题

34

帖子

430

积分

虎背熊腰

Rank: 3Rank: 3

积分
430
发表于 2021-3-12 15:01:26 | 显示全部楼层 |阅读模式
华大单片机HC32F4xx系类(HC32F460 HC32F4A0)可以运行最高200Mhz,但内部Flash在 CPU运行频率达到33M后,就需要加入不同的等待周期。
所以实际程序在内部FLash内运行时,是跟不上CPU速度,也就不能达到最高运行速度200Mhz。
如下图:可以看到在最高200Mhz时,读Flash中的指令需要等待5个CPU时钟周期,那大概200M运行时实际CPU能够跑到不到40Mhz。


那怎么能够使程序运行的快,跑出实际CPU的频率呢?
两种方法:
1.理所应当想到的第一种方法就是把关键程序或需要运行速度的代码搬到SRAM内运行。
   这个方法不在本贴讨论范围内,不过原理和细节都不太复杂。
   这里提醒以下两点,具体做法也不难,不管是谁家的MCU这种SRAM内运行的方法都是一样的。
   1)只需要注意中断向量表要重映射到SRAM中,如果想把中断搬运到SRAM中运行的话。
   2)还有一点是,搬运到SRAM内运行的代码如果有调用Flash内代码的,也是会影响速度。需要再把调用链上所有代码一同搬运到SRAM内。

2.就是在华大HC32Fxx系列MCU内,有一个1K大小的FLash Cache,可以使运行FLash内的代码加速,或读取Flash内数据加速。
  使运行在Flash内的代码执行速度和CPU速度同频。当然,既然是读的cache,那么如果CPU没有命中cache中的内容,还是会从Flash中取数据和指令的。
   所以在整个程序运行期间 cache起到了加速作用,而不能认为每个运行时段程序运行的速度都会和CPU一致。
   

如果HCLK是200Mhz,那么使能cache后,可以加速程序运行速度到200Mhz。
千万别认为程序每时每刻都运行在200M,所以也不要用忙等待的方式做延时函数,建议使用systick做忙等待延时函数

我做了一个试验,测试一段代码运行时在不开启cache和开启cache的运行表现:
测试的这段代码:


运行结果:
无cache时flash_run_performance_test函数使用了728023个10ns(10纳秒),
有cache时flash_run_performance_test函数使用了259880个10ns
大家可以计算出测试函数花的时间,有cache时和无cache时速度的对比,是多少倍。


以下是我的开启/关闭Flash cache函数:


总结下:就是华大HC32F4XX系列ARM cortex-M4的这颗MCU速度还是不错的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

3

帖子

273

积分

虎背熊腰

Rank: 3Rank: 3

积分
273
QQ
发表于 2021-3-15 10:18:39 | 显示全部楼层
好文章,牛掰
回复

使用道具 举报

0

主题

1

帖子

4

积分

虎视眈眈

Rank: 1

积分
4
发表于 2021-8-13 14:33:04 | 显示全部楼层
感谢!!!!!
回复

使用道具 举报

0

主题

3

帖子

12

积分

虎视眈眈

Rank: 1

积分
12
发表于 2021-9-23 17:54:24 | 显示全部楼层

感谢

本帖最后由 printf6000 于 2021-9-23 17:58 编辑

感谢楼主的分享,能否把整个代码发过来看看,我这里用您的代码,有些部分会报错!谢谢!
回复

使用道具 举报

22

主题

34

帖子

430

积分

虎背熊腰

Rank: 3Rank: 3

积分
430
 楼主| 发表于 2021-9-24 08:52:34 | 显示全部楼层
printf6000 发表于 2021-9-23 17:54
感谢楼主的分享,能否把整个代码发过来看看,我这里用您的代码,有些部分会报错!谢谢! ...

我们加一下微信或QQ,你微信或QQ私信给我,我给你发代码
回复

使用道具 举报

0

主题

3

帖子

12

积分

虎视眈眈

Rank: 1

积分
12
发表于 2021-9-24 10:04:39 | 显示全部楼层
好的,我的QQ:3336066,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|芯虎论坛 ( 辽ICP备18019618号 )

GMT+8, 2022-5-20 21:17 , Processed in 0.173910 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表