樣品申請(qǐng) | 資料下載 | 替換型號(hào)咨詢

如何保證單片機(jī)上電后RAM的初始值唯一?

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


設(shè)計(jì)出狀況


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


大致的設(shè)計(jì)思路和流程如下:


單片機(jī)復(fù)位后,軟件會(huì)判斷某個(gè)變量的值。如果不是0x55,就認(rèn)為這是上電復(fù)位,所有的RAM需要初始化,并把該變量的值寫為0x55;如果是0x55,就認(rèn)為這是“看門狗”復(fù)位,這時(shí)候則不改變一些變量的值,比如記錄里程相關(guān)的數(shù)據(jù)。


相關(guān)的C語(yǔ)言代碼如下:

if (variable != 0x55)

{

初始化所有變量;

variable = 0x55;

}

else

{

只改變部分變量的值;

}

在測(cè)試的過(guò)程中,測(cè)試工程師發(fā)現(xiàn)了一個(gè)問(wèn)題:對(duì)于99%單片機(jī)來(lái)講,上述的邏輯都是沒有問(wèn)題的,但是對(duì)于個(gè)別單片機(jī)卻存在固定性的問(wèn)題。


按照設(shè)計(jì)的初衷,本來(lái)我們認(rèn)為上電后RAM的值是隨機(jī)的,但是對(duì)于某些個(gè)別單片機(jī)來(lái)講,測(cè)試工程師發(fā)現(xiàn)上電后RAM的值會(huì)固定的是0x55,或者出現(xiàn)0x55的幾率非常高。


解決方法


針對(duì)這個(gè)現(xiàn)象,筆者也從單個(gè)單片機(jī)的特性方面做了解釋:首先還是回到文章最初提到的問(wèn)題,根據(jù)RAM的特性,上電后RAM是任何值都是正常的,基于這個(gè)前提,我們可以說(shuō)測(cè)試工程師遇到的現(xiàn)象是正常的。


那么,為什么個(gè)別單片機(jī)RAM上電后會(huì)偏向于某個(gè)特定值呢?


半導(dǎo)體器件的設(shè)計(jì)是非常復(fù)雜的,外觀很小的一個(gè)芯片都是芯片內(nèi)部數(shù)百萬(wàn)計(jì)的各種極其小的元器件搭建而成的,而這些的原材料基本都是硅。對(duì)于每個(gè)特定的芯片而言,其特性數(shù)據(jù)都是有一些偏好的,也包括上電后RAM的初始值,所以當(dāng)我們看每個(gè)單片機(jī)的電氣特性數(shù)據(jù)的時(shí)候,這些數(shù)據(jù)基本都是一個(gè)范圍值,而不是確定的值。


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


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

亚洲爆乳www无码专区| 色综合久久中文字幕无码| 国产一精品一av一免费爽爽| 国产人妻大战黑人20p| 国产精品毛片大码女人| 久久免费的精品国产V∧| 国精产品一区二区三区有限公司| 18岁禁止入内| 成人精品一区二区三区不卡免费看| 亚洲av无码乱码在线观看富二代 | 国产一产二产三精华液区别在哪里| A性色生活片久久毛片牛牛| 精品国模一区二区三区| 综合欧美五月丁香五月| 亚洲区小说区图片区qvod | 在线 | 一区二区三区| 疯狂的交换1—6真实交换3和2| 久久久久99精品成人片三人毛片| 亚洲熟妇丰满多毛xxxx| 欧美久久久无码精品亚洲日韩小说| 国产精品成人无码免费| 国产精品毛片va一区二区三区| 大侦探第八季免费观看完整版高清 | 国精产品一二三产区| 国产超碰人人做人人爱ⅴa| 熟女性饥渴一区二区三区| 欧美大胆a级视频免费| 扒开粉嫩小泬舌头伸进去| 亚洲av无码一区二区三区系列| 国产欧美精品一区二区三区| 樱花草WWW日本在线观看| 国产精品日日做人人爱| 好吊色欧美一区二区三区四区| 久久99精品国产麻豆蜜芽| 老汉的性生生活1一7| 久久久久精品国产亚洲av无码| 偷妻之寂寞难耐2中文字幕| 法国a级情欲片性船| 太大了小峓子受不了春雨| 久久人人爽人人爽人人片av麻烦| 欧美性受xxxx狂喷水|