打印
[单片机芯片]

在 BOOT 区域与用户 FLASH 区域之间的函数跳转理论上有 1us 的延时?

[复制链接]
1540|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
StarrismNE|  楼主 | 2025-2-20 14:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问这个1us的延时是怎么计算出来的?是因为boot和flash的存储类型不一样吗?还有就是理论1us,那实际会不会高很多呢?

使用特权

评论回复
沙发
WCHTech2| | 2025-2-25 16:25 | 只看该作者
您好,1us是仿真得到的,是在主频48M、1等待下的仿真结果,实际跳转时间和主频以及flash等待时间直接关联,和存储类型无关。对于003、641系列,同条件下跳转时间是固定的,但是放到BOOT区域执行的函数,每次去取址都会额外增加两次的跳转时间,建议尽可能将初始化函数放在BOOT区域运行,而产品功能类程序,或者频繁调用的程序正常放在FLASH中,避免因为运行速度影响产品功能,其他00x系列不需要考虑跳转时间问题

使用特权

评论回复
板凳
guijial511| | 2025-3-3 22:05 | 只看该作者
这个延时理论上和主频有关系才对

使用特权

评论回复
地板
huquanz711| | 2025-3-4 07:44 | 只看该作者
这个延时一般情况下没什么影响吧

使用特权

评论回复
5
Betty996| | 2025-3-18 14:19 | 只看该作者
在嵌入式系统中,Boot 区域 和 用户 Flash 区域 之间的 函数跳转 可能会引入一定的延时,但这个延时通常非常短(如你提到的 1us)。

使用特权

评论回复
6
Carina卡| | 2025-3-18 17:31 | 只看该作者
从 Boot 区域跳转到用户 Flash 区域时,CPU 需要从新的地址读取指令,这会导致 Flash 访问延迟。

使用特权

评论回复
7
across往事| | 2025-3-18 22:05 | 只看该作者
跳转操作会导致 CPU 的指令流水线刷新,重新从目标地址开始取指和执行。

使用特权

评论回复
8
vevive| | 2025-3-19 08:55 | 只看该作者
如果芯片有指令缓存(ICache),跳转可能导致缓存未命中,从而增加延时。

使用特权

评论回复
9
Whosheart| | 2025-3-19 10:32 | 只看该作者
假设 CPU 主频为 48MHz,一个时钟周期约为 20.83ns。Flash 存储器的访问时间通常为几十个时钟周期(例如 50 个周期),即约 1us。

使用特权

评论回复
10
Augenstern星星| | 2025-3-19 18:20 | 只看该作者
流水线刷新和重新取指可能需要几十个时钟周期。跳转操作的总延时可能在 1us 左右。

使用特权

评论回复
11
limerenceforu| | 2025-3-19 23:13 | 只看该作者
Boot 区域和用户 Flash 区域在物理上是相同的 Flash 存储器,访问延迟和性能特性一致。

使用特权

评论回复
12
MercuryStar| | 2025-3-20 10:16 | 只看该作者
一般来说,Boot 区域和用户 Flash 区域位于不同的地址空间,跳转时需要切换地址。

使用特权

评论回复
13
alkaidnext| | 2025-3-20 13:09 | 只看该作者
理论上的 1us 延时是基于理想情况的计算,假设 Flash 访问时间和流水线刷新时间固定。实际延时可能会受到以下因素的影响:Flash 等待状态:如果 Flash 访问需要插入等待状态(Wait States),延时会增加。缓存命中率:如果指令缓存未命中,延时会增加。

使用特权

评论回复
14
Charlene沙| | 2025-3-20 19:00 | 只看该作者
在实际应用中,跳转延时通常在 1us 到几 us 之间,具体取决于芯片的设计和系统状态。

使用特权

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

本版积分规则

9

主题

61

帖子

0

粉丝