一線(xiàn)研發(fā)之聲:嵌入式C編程經(jīng)驗 之 只有一條清狗語(yǔ)句

發(fā)布時(shí)間:2012-2-21 14:00    發(fā)布者:絕對好文
關(guān)鍵詞: c語(yǔ)言 , SedateFire , 看門(mén)狗 , 清狗
/*****************************************************************
* Filename:    研發(fā)之聲:嵌入式C編程經(jīng)驗 只有一條清狗語(yǔ)句
* Author:SedateFire                            E-mail:SedateFire@126.com   
* Version:1.000                                   Time: 2012-01-05   
* key: 看門(mén)狗   系統架構  os-less  嵌入式
********************************************************************/

一個(gè)好的os-less系統,只有一條清狗語(yǔ)句,它位置就固定在main函數中的
while(1)  /* or for(;;;) */
{
          __watchdog_reset();
}

如果你有兩條以上看門(mén)狗語(yǔ)句,那么會(huì )有什么后果呢? 在系統足夠復雜的時(shí)候,很能引起當機,由于靜電或者程序自身邏輯的原因,進(jìn)入了某個(gè)思維的盲點(diǎn),系統進(jìn)入一個(gè)有清狗語(yǔ)句的死循環(huán)里面,退不出來(lái)。這是最危險的,尷尬的,蒙羞的事情。

那么多出來(lái)的清狗語(yǔ)句,一般會(huì )用在哪里呢?

1.  系統初始化,有些設備初始化需要讀取它的反饋狀態(tài),用while,擔心復位,于是清狗。我一般用While (dev_read_status() && (i--)),這個(gè)i,32位頂天了。一般mcu沒(méi)這么快法。

2. mcu睡眠前清狗。有些人喜歡在系統進(jìn)入睡眠前清狗一下,擔心系統剛好在那一刻復位。這只能說(shuō)明你對自己的程序不了解,主回圈程序一圈下來(lái),最大執行時(shí)間其實(shí)心中有數。函數多少深度寬度心中要有低。如果剛好睡眠前一刻復位,那也有可能在跑別的函數過(guò)程中復位。

3.   某些應用邏輯貌似要需要hold住,比如屏幕的暫停顯示2秒鐘等。許多人生生地把這種邏輯做成“硬延時(shí)”,就是死等。這是一個(gè)令人戚眉的做法,因為這意味麻煩的開(kāi)始。在你需要暫停顯示n秒的過(guò)程中,我的一切用戶(hù)體驗你無(wú)法響應我了,按鍵沒(méi)反應,蜂鳴器不響,led燈不閃爍,一切好像死機了一樣。等到系統顯示完成后,用戶(hù)心中大舒一口氣,心中懸石落地,你終于又回氣兒活過(guò)來(lái)了。這是糟糕的體驗。

好吧,為了改善體驗,許多人就想辦法來(lái)。把用戶(hù)體驗搬到中斷里面做,這是另外一個(gè)麻煩的開(kāi)始,全局變量的增多和跨模塊的判斷,其根源之一始于此,弄個(gè)不好,就是隨機性崩潰。中斷程序變胖,終究是不方便的,于是為了改進(jìn),就只好在中斷程序中置標志位,然后在hold_delay(TIME)函數的循環(huán)中清狗,并且判斷標志位作響應動(dòng)作。許多應用邏輯需要hold住的地方何其多,上九天下地府處處添加,函數深度不可測,邏輯遞歸難判斷,系統大亂的禍患就此埋下。

那如何解決呢,事件--狀態(tài)機,一句話(huà)概括,在當前狀態(tài)下,遇到某某事件,則執行什么動(dòng)作后,進(jìn)入下一個(gè)狀態(tài)。它似表非表,如水般自然,像空氣般無(wú)痕……好了,其實(shí)是我不愿多講,若要具體講下去,恐怕涉及公司知識產(chǎn)權。盡管這個(gè)事件狀態(tài)機思想是個(gè)公開(kāi)的秘密,原理大家都懂,但做得好的還不多見(jiàn)。Hold住本身就是一種狀態(tài),看你如何抽象它了。

佛曰:菩薩畏因,凡夫畏果。那災難之源,是需要敬畏戒懼的,待到結果發(fā)生,悔之莫及。
本文地址:http://selenalain.com/thread-86284-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页