[AT32F415]

AT32F415的FLASH在主频150M时能无等待执行吗?

[复制链接]
1143|18
手机看帖
扫描二维码
随时随地手机跟帖
desertsailor|  楼主 | 2020-11-18 19:21 | 显示全部楼层 |阅读模式
看了手册,AT32F415和AT32F413的取指方式发生了改变:413是使用大容量RAM缓存,能做到缓存大小范围内的程序零等待执行;而415是增加了预取指缓冲器,能保证在最高主频150M时无跳转的情况下从闪存零等待执行程序吗?

使用特权

评论回复
自己造声卡| | 2020-11-19 08:28 | 显示全部楼层
不能的,况且为什么需要这个功能呢?

使用特权

评论回复
084425| | 2020-11-19 09:55 | 显示全部楼层
413和415的flash原理不同,415需要在150M时参照RM写的配置对应的LATENCY值

使用特权

评论回复
嵌入小菜菜| | 2020-11-19 10:31 | 显示全部楼层
不知道你为什么会有这样的需求

使用特权

评论回复
desertsailor|  楼主 | 2020-11-19 12:41 | 显示全部楼层
嵌入小菜菜 发表于 2020-11-19 10:31
不知道你为什么会有这样的需求

这牵涉到取指执行的效率,国产很多相同ARM内核的处理器就因为这个不同而导致在同频率下整体的性能差异巨大。

使用特权

评论回复
desertsailor|  楼主 | 2020-11-19 12:45 | 显示全部楼层
desertsailor 发表于 2020-11-19 12:41
这牵涉到取指执行的效率,国产很多相同ARM内核的处理器就因为这个不同而导致在同频率下整体的性能差异巨 ...

以GD32F130为例,前32K的FLASH能零等待执行,而取32K以后的FLASH内容则可能有明显延迟,在某些实时性要求严格的地方则根本不能用。

使用特权

评论回复
muyichuan2012| | 2020-11-19 12:58 | 显示全部楼层
desertsailor 发表于 2020-11-19 12:45
以GD32F130为例,前32K的FLASH能零等待执行,而取32K以后的FLASH内容则可能有明显延迟,在某些实时性要求 ...

AT32F415的FLASH 与STM32F103类似,没有零等待的说法,所有flash区域执行效率一样。

使用特权

评论回复
desertsailor|  楼主 | 2020-11-19 13:08 | 显示全部楼层
muyichuan2012 发表于 2020-11-19 12:58
AT32F415的FLASH 与STM32F103类似,没有零等待的说法,所有flash区域执行效率一样。 ...

当然有零等待的说法了,STM32F1手册上没有这样写,是因为确实做不到(取指宽度为64位,若72M主频以2个等待周期连续执行32位指令则必然会断流),但STM32F4手册上则标明了可以零等待执行(跟闪存加速器有关)。

使用特权

评论回复
muyichuan2012| | 2020-11-19 13:14 | 显示全部楼层
desertsailor 发表于 2020-11-19 13:08
当然有零等待的说法了,STM32F1手册上没有这样写,是因为确实做不到(取指宽度为64位,若72M主频以2个等 ...

那叫lantency,系统访问时间和flash等待cycle个数,细节在flash_ACR寄存器有描述。AT3232F415是嵌入式flash,不存在GD32"取32K以后的FLASH内容则可能有明显延迟".

使用特权

评论回复
desertsailor|  楼主 | 2020-11-19 13:27 | 显示全部楼层
GD32F130只是打个比方,它跟415是不一样的,lantency-迟延当然知道了,手册上根据FLASH的速度标明了该如何设置,我的问题是如果按照这样的设置是否能做到顺序(无跳转)执行指令为无等待执行?
看看STM32F4的手册吧:
“Core: ARM® 32-bit Cortex®-M4 CPU with FPU,
Adaptive real-time accelerator (ART
Accelerator™) allowing 0-wait state execution ”

使用特权

评论回复
muyichuan2012| | 2020-11-19 16:02 | 显示全部楼层
本帖最后由 muyichuan2012 于 2020-11-19 16:07 编辑

AT32F415 没有 Adaptive Real-Time Memory Accelerator。

使用特权

评论回复
嵌入小菜菜| | 2020-11-19 17:56 | 显示全部楼层
muyichuan2012 发表于 2020-11-19 16:02
AT32F415 没有 Adaptive Real-Time Memory Accelerator。

收到,感谢分享

使用特权

评论回复
发呆二极管| | 2020-11-19 20:22 | 显示全部楼层
学习一下

使用特权

评论回复
嵌入小菜菜| | 2020-11-20 08:10 | 显示全部楼层
084425 发表于 2020-11-19 09:55
413和415的flash原理不同,415需要在150M时参照RM写的配置对应的LATENCY值

两款芯片有什么区别吗?

使用特权

评论回复
勇敢的大白菜| | 2020-11-20 08:47 | 显示全部楼层
进行宏定义,重新定义一下,看看是否可以。我也没有用过。

使用特权

评论回复
勇敢的大白菜| | 2020-11-24 09:21 | 显示全部楼层
084425 发表于 2020-11-19 09:55
413和415的flash原理不同,415需要在150M时参照RM写的配置对应的LATENCY值

你确认是这样吗?这样搞没有问题吗?

使用特权

评论回复
084425| | 2020-11-27 21:54 | 显示全部楼层
勇敢的大白菜 发表于 2020-11-24 09:21
你确认是这样吗?这样搞没有问题吗?

按照RM和BSP配置,肯定没问题的

使用特权

评论回复
084425| | 2020-11-27 21:56 | 显示全部楼层
嵌入小菜菜 发表于 2020-11-20 08:10
两款芯片有什么区别吗?

具体外设和内存大小区别看选型手册就知道了,flash架构不同,工作效率有所区别,可以简单理解为执行效率413的零等待区>415>413非零等待区

使用特权

评论回复
JXYCTWT| | 2022-5-15 14:14 | 显示全部楼层
/**
  * @brief  flash wait cycle type
AT32F415RC
*/
typedef enum
{
  FLASH_WAIT_CYCLE_0                     = 0x00, /*!< sysclk 1~32mhz */
  FLASH_WAIT_CYCLE_1                     = 0x01, /*!< sysclk 33~64mhz */
  FLASH_WAIT_CYCLE_2                     = 0x02, /*!< sysclk 65~96mhz */
  FLASH_WAIT_CYCLE_3                     = 0x03, /*!< sysclk 97~120mhz */
  FLASH_WAIT_CYCLE_4                     = 0x04  /*!< sysclk 121~150mhz */
} flash_wait_cycle_type;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

512

帖子

2

粉丝