<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 如何保證MCU上電后RAM的初始值唯一?

          如何保證MCU上電后RAM的初始值唯一?

          作者: 時間:2019-01-03 來源:網(wǎng)絡 收藏

            由于工作的原因,筆者經(jīng)常接到工程師詢問內(nèi)部的RAM上電之后的初始值到底是什么,有什么特性和規(guī)律。今天筆者就以使用RH850F1K的過程中遇到的幾個問題與大家做一個交流。

          本文引用地址:http://www.ex-cimer.com/article/201901/396288.htm

            首先我們明確一個問題,我們都知道,根據(jù)RAM的特性,每次上電之后RAM里面的值是隨機的。也就是說RAM上電后的初始值可以是0xAA,也可以是0x55,也可以是其它任何的值,這個都是正常的。明確了這個基本原理之后,我們來看一下下面這個跟RAM的初始值的使用相關的一個問題。

            最近有工程師在開發(fā)的汽車娛樂系統(tǒng)中遇到了一種情況,就是他在使用RH850F1K的過程中,發(fā)現(xiàn)每次上電后RAM的值好像都是固定的。按照軟件設計的初衷,他想通過判斷RAM的值從而知道這次復位是掉電復位還是內(nèi)部復位——比如“看門狗”復位。如果是掉電復位,則對RAM進行初始化;如果是MCU內(nèi)部復位,則不對RAM進行初始化,從而可以保持用戶之前的一些設置,比如頻道、界面信息等。

            大致的設計思路和流程如下:

            MCU復位后,軟件會判斷某個變量的值:如果不是0x55,就認為這是上電復位,所有的RAM需要初始化,并把該變量的值寫為0x55;如果是0x55,就認為這是“看門狗”復位,這時候則不改變一些變量的值,比如記錄里程相關的數(shù)據(jù)。相關的C語言代碼為:

            if (variable != 0x55)

            {

            初始化所有變量;

            variable = 0x55;

            }

            else

            {

            只改變部分變量的值;

            }

            在測試的過程中,測試工程師發(fā)現(xiàn)了一個問題:對于99%的MCU來講,上述的邏輯都是沒有問題的,但是對于個別MCU卻存在固定性的問題。

            按照設計的初衷,本來我們認為上電后RAM的值是隨機的,但是對于某些個別MCU來講,測試工程師發(fā)現(xiàn)上電后RAM的值會固定的是0x55,或者出現(xiàn)0x55的幾率非常高。

            針對這個現(xiàn)象,筆者也從單個MCU的特性方面做了解釋:首先我們還是回到文章最初提到的問題,根據(jù)RAM的特性,上電后RAM是任何值都是正常的,基于這個前提,我們可以說測試工程師遇到的現(xiàn)象是正常的。那么為什么個別MCU的RAM上電后會偏向于某個特定值呢?我們知道半導體器件的設計是非常復雜的,外觀很小的一個都是內(nèi)部數(shù)百萬計的各種極其小的元器件搭建而成的,而這些的原材料基本都是硅。對于每個特定的而言,其特性數(shù)據(jù)都是有一些偏好的,也包括上電后RAM的初始值,所以當我們看每個MCU的電氣特性數(shù)據(jù)的時候,這些數(shù)據(jù)基本都是一個范圍值,而不是確定的值。

            另外,上面軟件本身的設計也是有缺陷的,或者說魯棒性不好。假定上電后RAM的初始值是完全隨機的,那么這樣總會碰到隨機值恰好是0x55的情況?;谶@種考慮,我建議軟件工程師重新設計了判斷的條件。比如判斷RAM若干不連續(xù)地址的值,并且使用校驗的算法,比如比較簡單的校驗和,這樣可靠性就大大提高了。

            筆者在工作過程中,曾經(jīng)多個客戶遇到過類似的問題,這個問題也具有一定的普遍性,除了前面提到的汽車娛樂系統(tǒng),在車身、儀表,甚至工業(yè)應用中的電表等都會涉及到,希望這篇文章能夠幫助設計工程師少走一些彎路。



          關鍵詞: MCU 芯片

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();