您的位置 首页 技术

浅析MCU内部的RAM上电之后的初始值相关问题

浅析MCU内部的RAM上电之后的初始值相关问题-首先我们明确一个问题,我们都知道,根据RAM的特性,MCU每次上电之后RAM里面的值是随机的。也就是说RAM上电后的初始值可以是0xAA,也可以是0x55,也可以是其它任何的值,这个都是正常的。明确了这个基本原理之后,我们来看一下下面这个跟RAM的初始值的使用相关的一个问题。

因为作业的原因,笔者常常接到工程师问询MCU内部的RAM上电之后的初始值究竟是什么,有什么特性和规则。今日笔者就以运用RH850F1K的过程中遇到的几个问题与咱们做一个沟通。

首要咱们清晰一个问题,咱们都知道,依据RAM的特性,MCU每次上电之后RAM里边的值是随机的。也便是说RAM上电后的初始值可所以0xAA,也可所以0x55,也可所以其它任何的值,这个都是正常的。清晰了这个根本原理之后,咱们来看一下下面这个跟RAM的初始值的运用相关的一个问题。

最近有工程师在开发的轿车文娱体系中遇到了一种状况,便是他在运用RH850F1K的过程中,发现每次上电后RAM的值如同都是固定的。依照软件规划的初衷,他想经过判别RAM的值然后知道这次复位是掉电复位仍是MCU内部复位——比方“看门狗”复位。假如是掉电复位,则对RAM进行初始化;假如是MCU内部复位,则不对RAM进行初始化,然后可以坚持用户之前的一些设置,比方频道、界面信息等。

大致的规划思路和流程如下:

MCU复位后,软件会判别某个变量的值:假如不是0x55,就以为这是上电复位,一切的RAM需求初始化,并把该变量的值写为0x55;假如是0x55,就以为这是“看门狗”复位,这时分则不改动一些变量的值,比方记载路程相关的数据。相关的C言语代码为:

if (variable != 0x55)

{

初始化一切变量;

variable = 0x55;

}

else

{

只改动部分变量的值;

}

测验的过程中,测验工程师发现了一个问题:关于99%的MCU来讲,上述的逻辑都是没有问题的,可是关于单个MCU却存在固定性的问题。

依照规划的初衷,原本咱们以为上电后RAM的值是随机的,可是关于某些单个MCU来讲,测验工程师发现上电后RAM的值会固定的是0x55,或许呈现0x55的几率十分高。

针对这个现象,笔者也从单个MCU的特性方面做了解说:首要咱们仍是回到文章开始说到的问题,依据RAM的特性,上电后RAM是任何值都是正常的,根据这个条件,咱们可以说测验工程师遇到的现象是正常的。那么为什么单个MCU的RAM上电后会倾向于某个特定值呢?咱们知道半导体器材的规划是十分复杂的,外观很小的一个芯片都是芯片内部数百万计的各种极端小的元器材建立而成的,而这些的原材料根本都是硅。关于每个特定的芯片而言,其特性数据都是有一些偏好的,也包含上电后RAM的初始值,所以当咱们看每个MCU的电气特性数据的时分,这些数据根本都是一个规模值,而不是确认的值。

别的,上面软件自身的规划也是有缺点的,或许说鲁棒性欠好。假定上电后RAM的初始值是彻底随机的,那么这样总会碰到随机值恰好是0x55的状况。根据这种考虑,我主张软件工程师从头规划了判别的条件。比方判别RAM若干不接连地址的值,而且运用校验的算法,比方比较简单的校验和,这样可靠性就大大提高了。

笔者在作业过程中,从前多个客户遇到过相似的问题,这个问题也具有必定的普遍性,除了前面说到的轿车文娱体系,在车身、外表,乃至工业使用中的电表等都会涉及到,期望这篇文章可以协助规划工程师少走一些弯路。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/346081.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部