中文字幕无码不卡一区二区三区_少妇被又大又粗又爽毛片久久黑人_91精品国产在热久久无毒不卡_久久久久久亚洲综合网站

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫(kù)分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

看門狗芯片介紹與應(yīng)用場(chǎng)景

更新時(shí)間: 2020-05-07
閱讀量:7513

對(duì)于那些人類無(wú)法持續(xù)監(jiān)視的嵌入式系統(tǒng),看門狗芯片可能是個(gè)很好的解決方案。英銳恩單片機(jī)開發(fā)工程師表示,大多數(shù)嵌入式系統(tǒng)需要自主處理異常,如果運(yùn)算跑偏了,通常不可能等人們重新引導(dǎo)他們。這種情況下需要一個(gè)復(fù)位芯片,以引導(dǎo)嵌入式系統(tǒng)的重啟。

看門狗芯片是一種硬件,可以用來(lái)自動(dòng)檢測(cè)軟件異常,并在發(fā)生任何異常時(shí)重置處理器。一般來(lái)說(shuō),看門狗芯片基于一個(gè)從某個(gè)初始值遞減到零的計(jì)數(shù)器。嵌入式軟件選擇計(jì)數(shù)器的初始值并定期重新啟動(dòng)它。如果計(jì)數(shù)器在軟件重新啟動(dòng)之前達(dá)到零,則認(rèn)為軟件發(fā)生故障,并且處理器的復(fù)位信號(hào)有效。處理器(及其運(yùn)行的嵌入式軟件)將重新啟動(dòng),就像人工操作員已關(guān)閉電源再打開一樣。

如下圖所示,看門狗芯片是處理器外部的芯片。但是,它也可以與CPU包含在同一芯片中。這是在許多單片機(jī)中完成的。無(wú)論哪種情況,看門狗芯片的輸出都直接與處理器的復(fù)位信號(hào)相關(guān)。

media-1074663-0110bcfig1.gif

一、什么是踢狗(也叫:喂狗)

重新啟動(dòng)看門狗芯片計(jì)數(shù)器的過(guò)程有時(shí)稱為“踢狗(喂狗)”。踢狗的作用作用主要是起到復(fù)位重啟的作用,確保機(jī)器能夠一直運(yùn)行。

如下面的案例1中,做了一個(gè)簡(jiǎn)單的示例。這里,我們有一個(gè)無(wú)限循環(huán)來(lái)控制系統(tǒng)的整個(gè)行為。這種軟件體系結(jié)構(gòu)在許多具有低端處理器和基于單個(gè)工作頻率的行為的嵌入式系統(tǒng)中很常見。該看門狗的硬件實(shí)現(xiàn)允許通過(guò)內(nèi)存映射寄存器設(shè)置計(jì)數(shù)器值。

uint16 volatile * pWatchdog =
    (uint16 volatile *) 0xFF0000;

main(void)
{
        hwinit();

        for (;;)
        {
            *pWatchdog = 10000;
            read_sensors();
            control_motor();
            display_status();
        }
}

案例1:踢狗

假設(shè)循環(huán)必須每五毫秒至少執(zhí)行一次。(假設(shè)必須至少經(jīng)常向電動(dòng)機(jī)提供新的控制參數(shù)。)如果看門狗芯片的計(jì)數(shù)器初始化為與經(jīng)過(guò)的時(shí)間(即10000毫秒)對(duì)應(yīng)的五毫秒的值,并且軟件沒(méi)有錯(cuò)誤,看門狗芯片將永遠(yuǎn)不會(huì)到期,軟件將始終在達(dá)到零之前重新啟動(dòng)計(jì)數(shù)器。

二、軟件異常

看門狗芯片可以使系統(tǒng)擺脫許多危險(xiǎn)情況。但是,如果要有效,必須在整個(gè)軟件設(shè)計(jì)中考慮復(fù)位看門狗芯片。設(shè)計(jì)人員必須知道其軟件可能出什么問(wèn)題,并確保看門狗芯片能夠檢測(cè)到它們(如果有的話)。

系統(tǒng)掛起有多種原因。導(dǎo)致執(zhí)行無(wú)限循環(huán)的邏輯謬誤是最簡(jiǎn)單的。假設(shè)這種情況發(fā)生在案例1的read_sensors()調(diào)用中。其他任何軟件(ISR除外,如果仍然啟用中斷)都不會(huì)再次運(yùn)行。

另一種可能性是,在循環(huán)的一次通過(guò)期間,異常數(shù)量的中斷到達(dá)。在ISR中花費(fèi)的任何額外時(shí)間就是沒(méi)有花費(fèi)在執(zhí)行主循環(huán)上的時(shí)間??赡軙?huì)給電機(jī)新的控制指令帶來(lái)危險(xiǎn)的延遲。

使用多任務(wù)內(nèi)核時(shí),可能會(huì)發(fā)生死鎖。例如,一組任務(wù)可能會(huì)卡在彼此之間等待,并且其中一個(gè)需要一些外部信號(hào),從而使整個(gè)任務(wù)組無(wú)限期地掛起。

如果此類故障是瞬態(tài)的,則每次看門狗引起的復(fù)位后,系統(tǒng)可能會(huì)在一段時(shí)間內(nèi)正常運(yùn)行。但是,發(fā)生故障的硬件可能會(huì)導(dǎo)致系統(tǒng)不斷重置。因此,計(jì)算看門狗引起的復(fù)位次數(shù)并在固定次數(shù)的故障后放棄嘗試可能是明智的。

20200507183652.png

三、Karate框架接口測(cè)試

實(shí)際的看門狗實(shí)現(xiàn)通常會(huì)具有一個(gè)與案例1中的軟件相比更為復(fù)雜的軟件接口。當(dāng)重置看門狗所需的指令集非常簡(jiǎn)單時(shí),有漏洞的軟件可能會(huì)偶然執(zhí)行此操作??紤]一個(gè)錯(cuò)誤,該錯(cuò)誤導(dǎo)致將值10000一次又一次地寫入內(nèi)存中的每個(gè)位置。此代碼將定期重新啟動(dòng)看門狗計(jì)數(shù)器,并且看門狗可能永遠(yuǎn)不會(huì)咬人。為防止這種情況,許多看門狗實(shí)現(xiàn)要求使用兩個(gè)或多個(gè)連續(xù)寫入的復(fù)雜序列來(lái)重新啟動(dòng)看門狗芯片。

如果看門狗內(nèi)置在你的單片機(jī)中,則在設(shè)備復(fù)位時(shí)可能不會(huì)自動(dòng)啟用它。你必須確保在硬件初始化期間啟用它。為了提供保護(hù)以防止意外禁用看門狗的錯(cuò)誤,硬件設(shè)計(jì)通常使得一旦啟用看門狗芯片就無(wú)法禁用它。

如果你的軟件可以比看門狗周期更快地完成一個(gè)完整的循環(huán),那么案例1中的結(jié)構(gòu)可能對(duì)你來(lái)說(shuō)很好。如果你的軟件的某些部分需要很長(zhǎng)時(shí)間才能完成,那么挑戰(zhàn)就更大了。假設(shè)你有一個(gè)循環(huán),等待元素加熱到一定溫度再返回。許多看門狗芯片的最長(zhǎng)持續(xù)時(shí)間約為兩秒鐘。如果你要延遲的時(shí)間超過(guò)該時(shí)間長(zhǎng)度,則可能必須在等待循環(huán)中踢狗。如果你的軟件中有很多這樣的地方,看門狗的控制可能會(huì)出現(xiàn)問(wèn)題。

系統(tǒng)初始化是代碼的一部分,通常需要比看門狗芯片的最大時(shí)間更長(zhǎng)的時(shí)間。也許進(jìn)行內(nèi)存測(cè)試或從ROM到RAM的數(shù)據(jù)傳輸會(huì)減慢此速度。因此,某些看門狗可以比其后繼踢等待更長(zhǎng)的時(shí)間來(lái)等待他們的第一個(gè)踢。

隨著將控制線程添加到軟件中(以ISR和軟件任務(wù)的形式),在代碼中僅放置一處看門狗變得無(wú)效。所以,選擇合適的踢腳間隔也是一個(gè)重要問(wèn)題,這只能以系統(tǒng)特定的方式解決。

以上就是英銳恩單片機(jī)開發(fā)工程師分享的有關(guān)看門狗芯片的介紹與應(yīng)用場(chǎng)景。英銳恩專注單片機(jī)應(yīng)用方案設(shè)計(jì)與開發(fā),提供8位單片機(jī)、16位單片機(jī)、32位單片機(jī)、運(yùn)算放大器和模擬開關(guān)。

南靖县| 宜阳县| 龙山县| 沈丘县| 应用必备| 德阳市| 云龙县| 普格县| 藁城市| 土默特左旗| 香格里拉县| 余庆县| 安达市| 贵港市| 教育| 古交市| 综艺| 吉林省| 璧山县| 蓬安县| 葵青区| 内江市| 许昌市| 蒙自县| 聊城市| 南阳市| 柳江县| 南和县| 台中县| 杭州市| 麦盖提县| 衡山县| 乡宁县| 呼和浩特市| 邵武市| 乌拉特前旗| 萨迦县| 博乐市| 南昌市| 安徽省| 安远县|