樣品申請 | 資料下載 | 替換型號咨詢

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

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


設計出狀況


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


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


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


相關的C語言代碼如下:

if (variable != 0x55)

{

初始化所有變量;

variable = 0x55;

}

else

{

只改變部分變量的值;

}

在測試的過程中,測試工程師發現了一個問題:對于99%單片機來講,上述的邏輯都是沒有問題的,但是對于個別單片機卻存在固定性的問題。


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


解決方法


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


那么,為什么個別單片機RAM上電后會偏向于某個特定值呢?


半導體器件的設計是非常復雜的,外觀很小的一個芯片都是芯片內部數百萬計的各種極其小的元器件搭建而成的,而這些的原材料基本都是硅。對于每個特定的芯片而言,其特性數據都是有一些偏好的,也包括上電后RAM的初始值,所以當我們看每個單片機的電氣特性數據的時候,這些數據基本都是一個范圍值,而不是確定的值。


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


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

主站蜘蛛池模板: 亚洲国产女人aaa毛片在线| 国产亚洲综合一区柠檬导航| 亚洲午夜电影一区二区三区| 久久久久久AV无码免费网站| 亚洲色中文字幕无码AV| 亚欧乱色国产精品免费视频| 亚洲人成人网站在线观看| 一级全免费视频播放| 亚洲伦乱亚洲h视频| 一区二区三区免费电影| 久久亚洲2019中文字幕| a级毛片毛片免费观看久潮喷| 亚洲无码在线播放| 免费福利电影在线观看| 亚洲国产一区二区三区青草影视 | 一区二区无码免费视频网站| 久久精品国产亚洲AV久| 搡女人真爽免费视频大全| 青青青亚洲精品国产| 久久亚洲中文字幕精品一区| 叮咚影视在线观看免费完整版| 亚洲情a成黄在线观看动漫尤物| ww4545四虎永久免费地址| 亚洲中文无码永久免费| 免费午夜爽爽爽WWW视频十八禁| 无码日韩人妻AV一区免费l| 在线观看亚洲精品福利片| 91精品国产免费久久国语蜜臀| 亚洲AV无码一区二区三区牛牛| 哒哒哒免费视频观看在线www| 黄 色一级 成 人网站免费| 久久久无码精品亚洲日韩蜜桃| 97国产免费全部免费观看| 亚洲AV综合永久无码精品天堂| 亚洲精品黄色视频在线观看免费资源| APP在线免费观看视频| 亚洲日本人成中文字幕| 亚洲精品网站在线观看不卡无广告| 一级毛片不卡片免费观看| 亚洲精品亚洲人成在线| 久久精品国产精品亚洲精品|