过年那几天移植一份代码,结果发现了STM32芯片指令速度会发生变化,本文将讲述这个问题的定位过程,从中你可以看到作者根据问题的现象结合已有的知识,2次否定了出问题的地方,但随着逐步缩小定位范围,认真分析现象,最终还是找回到了出问题的地方,并与网友讨论后,查找芯片手册找到了问题的原因。本文的重点不在于介绍这个问题,而是在于介绍定位这个问题的思路以及过程,很多问题通过仔细分析是可以找到原因的。
导致STM32芯片指令速度变化的问题分析过程
过年那几天将一份代码从TI的LM3S8962芯片移植到ST的STM32F103VB芯片上,结果发现了STM32芯片指令速度会发生变化,本文将讲述这个问题的定位过程,从中你可以看到作者根据问题的现象结合已有的知识,2次否定了出问题的地方,但随着逐步缩小定位范围,认真分析现象,最终还是找回到了出问题的地方,并与网友讨论后,查找芯片手册找到了问题的原因。本文的重点不在于介绍这个问题,而是在于介绍定位这个问题的思路以及过程,很多问题通过仔细分析是可以找到原因的。
现象描述
下面这段延迟时间的函数在LM3S8962芯片上可以产生正确的延迟时间,但在STM32F103VB芯片上却表现出不确定性,有时候可以延迟正确的时间,而有时候则变为正确时间的1.25倍。比如,输入200,正常的延迟时间是2000ms,而出现异常时这段代码则运行了2500ms。
voidDEV_DelayMs(U32uiMs)
{
unsignedinti;
unsignedintj;
j=5998*uiMs;
for(i=0;;i++)
{
if(i==j)
{
break;
}
}
}
背景知识介绍
我写了2个具有任务切换功能的小型操作系统,其中一个我称之为wanlix,需要函数主动调用任务切换函数才能发生任务切换,只有这一个功能,功能虽少,但也非常小巧,编译后只有几百字节,适合程序空间只有几十K的小系统使用。另一个我称之为mindows,是实时抢占式的内核,高优先级的任务会自动抢占低优先级的任务,支持信号量、队列等功能。更多信息,请访问我的新浪博客http://doc.xuehai.net/ifreecoding
其中DEV_DelayMs函数用来在任务中产生延迟,模拟任务的业务,其中mindows拥有tick定时器,操作系统打印出的tick时间会反应出DEV_DelayMs函数的执行时间。
LM3S8962芯片与STM32F103VB芯片指令速度不一样,因此在移植这2个操作系统时对DEV_DelayMs函数内的i、j数值做了精确的调整,并使用了O0(哦零,不优化)优化选项,使之能产生精确的延迟。DEV_DelayMs函数在LM3S8962芯片上工作正常,但在STM32F103VB芯片上却有时正常,有时异常。
原因分析
mindows操作系统的打印带有tick时间(每个tick是10ms),这个问题最先是在mindows上发现的。程序中有一段2000ms的延迟,正常时,串口打印出这段延迟时间是2000ms,
电源控制板设计中的问题与分析(STM32主芯片)_电子/电路_工程科技_专业资料。电源...导致STM32芯片指令速度变... 4页 免费 基于STM32的逆变弧焊电源... 暂无评价...
破坏STM32中断机制引发的异常_IT/计算机_专业资料。...这些寄存器距离芯片内核 最近,速度最快,支持更多的寻址...这说明没有问题的指令+没有问题的数据在某些时 候...
关于STM32软件复位的实现方法_电子/电路_工程科技_专业资料。我用的是STM32F103...这里要注意一个问题:从 SYSRESETRQ 被置为有效,到复位发生器执行复位命令,往往...
实验软件:Keil uVision4 实验硬件:神舟 IV 号开发板 芯片型号:STM32F107VC STM32 启动代码分析、简化、实战汇编基础: 1. 伪指令:EQU 语法格式:名称 EQU 表达式{...
STM32 NVIC 固件库分析与应用 Cortex-M3 处理器和...故障是指指令执行时由于错误的条件所导致的异常。 ...这时用于加快抢断速度的机制,当这在为先前到达的中断...
[回复] 个人分析你这个 IAP 的处理很不可靠,需要...问题是有些长,真不好意思!谢谢! Re: firehood ...STM32 发送升级指令,当 STM32 收到升 级请求后...
参数是否达到要求,并对结果进行了分析, 总结了设计过程中出现问题及其解决方法。...使得 STM32 增强型系列单片机受 益无穷,其采用的 THUMB-2 指令集使得其指令...
力弱的 问题, 而基于 D SP 芯片的 设计成本较高...2014教师资格材料分析辅... 2014小学教师资格考试《...导致STM32芯片指令速度变... 4页 免费 参数定制服务...
实验软件:Keil uVision4 实验硬件:神舟 IV 号开发板 芯片型号:STM32F107VC STM32 启动代码分析、简化、实战汇编基础: 1. 伪指令:EQU 语法格式:名称 EQU 表达式{...
STM32用户基于IAP的程序更新技术_信息与通信_工程科技...的方法是, Bo在ot 区中也加入看门狗 的喂狗指令...和如何开发多核处理器的问题, OPRTS 恒拓开源信息...
我要评论