單片機嵌入式系統軟體復位的幾種方式

2021-01-20 電子產品世界

飛思系列的8位單片機沒有特定的控制寄存器可以實現軟體復位,當程序運行過程中代碼需要強行產生一個復位時必須通過一些軟體技巧實現:

本文引用地址:http://www.eepw.com.cn/article/148513.htm

軟復位,程序從頭運行,硬體不復位。復位腳無復位脈衝輸出

這可以通過直接獲取復位向量的方式來實現:

void ForceReset(void)

{

uniON {

void (*vector)(void);

byte c[2];

} softReset;

softReset.c[0] = *(byte*)0xFFFE; //get the reset vector

softReset.c[1] = *(byte*)0xFFFF;

softReset.vector(); //re-STart the code flow

}

硬復位,程序從頭運行,內部所有硬體模塊和寄存器同時復位,復位腳有復位脈衝輸出

這必須結合FSL 8位單片機內部的架構特點來實現:

1)COP(看門狗)復位

這是最簡單的一種方式。程序死循環然後等看門狗作用產生復位。你必須事先啟動看門狗功能,復位過程將有少許延時。

void ForceReset(void)

{

DisableInterrupts; //disable all interrupt

for(;;); //wait for watch-dog reset

}

2)非法尋址復位

當指令對某一個不存在的內存空間進行尋址操作時單片機會產生硬體復位。

void ForceReset(void)

{

asm JMP 0xD000; //jump to illegal address will result a RESET

}

注意不同晶片其有效內存空間配置不同,具體地址需參考晶片數據手冊做適當調整。

3)非法指令復位

當執行一條不存在的指令編碼時單片機會產生硬體復位。這裡又可以分兩種手段:

a) 利用「合法」指令在特定配置模式下的「非法性」,例如STOP指令。

如果在晶片的配置寄存器SOPT中設定STOPE位為0禁止STOP指令,你若再執行STOP就會認為是非法指令從而立即產生復位。

void ForceReset(void)

{

asm STOP; //illegal STOP will result a RESET, note SOPT_STOPE must be 0

}

如果你的應用中正常情況下不會用到STOP,就可以用這種方式。如果你本來就要用STOP指令就不能用這種方式產生復位,因為SOPT寄存器在復位後只能被寫一次。

b) 人為製造非法指令然後強行運行。

這是比較通用的一種方法,這個S08內核系列均可適用。在單片機的指令表中確認一條不可能出現的指令編碼,例如0x9E10,將其填入RAM中然後強制運行,即可立即產生復位。

void ForceReset(void)

{

byte illegalCode[2];

illegalCode[0] = 0x9e;

illegalCode[1] = 0x10; //illegal instruction

((void (*)(void))illegalCode)(); //execute illegal instruction will result a RESET

}

linux作業系統文章專題:linux作業系統詳解(linux不再難懂)

相關焦點

  • 基於51單片機的嵌入式SNMP代理器設計與實現
    RTL8919A(見圖3)有3種工作方式:跳線方式,網卡的I/O和中斷由跳線決定;即插即用方式,由軟體進行自動配置plug and play;免跳線方式,網卡的I/O和中斷由外接的93C46中的內容決定。
  • 單片機復位電路原理是什麼 單片機復位電路有哪些?
    復位電路,顧名思義,是一種使電路恢復到起始狀態的的設備。那麼問題來了,單片機為什麼需要復位電路呢?單片機復位電路原理是什麼呢?單片機復位電路有哪些種呢?相同之處在於它們都用於使儀器回到起始狀態;不同之處在於,計算機清零按鍵的啟動手段為手動式,而復位電路有三種啟動手段可供選擇,其一是在電路通電時刻立即進行復位操作,其二是在需要復位時手動操作,其三是根據程序或電路運行的需要自動進行操作。對於單片機而言,復位功能是必須存在的,因為單片機的每一次啟動都需要復位,以使CPU及系統各個部件都處於初始狀態,並從初始狀態開始進行工作。
  • 單片機復位電路原理是腫麼樣的呢???
    導讀:復位電路,顧名思義,是一種使電路恢復到起始狀態的的設備。那麼問題來了,單片機為什麼需要復位電路呢?單片機復位電路原理是什麼呢?單片機復位電路有哪些種呢?
  • 51單片機軟體程序復位
    51單片機軟體復位彙編代碼 POP ACC ; pop return address本文引用地址:http://www.eepw.com.cn/article/201611/318163.htm POP
  • STM32復位來源,Cotrex-M系統與內核復位區別
    關注+星標公眾號,不錯過精彩內容作者 |
  • 基於RFID的嵌入式系統是如何實現的
    三、基於RFID的嵌入式系統設計與實現 (一)系統功能 本系統的最初設想是實現一個基於RFID的嵌入式系統,根據嵌入式的可裁剪,便攜等特點實現一個手持式的,能夠有效防碰撞的使若干近距離物體條件下也可以有效識別的RFID系統。
  • 單片機應用系統的可靠性設計
    一、可靠性與可靠性設計 1.現代電子系統的可靠性 現代電子系統具有如下特點:嵌入式的計算機系統.智能化的體系結構;以計算機為核心的柔性硬體基礎,由軟體實現系統的功能;硬體系統有微電子技術的有力支持。
  • Proteus軟體仿真與Keil的51單片機系統設計
    單片機功能越來越強大,價格卻不斷下降的優勢無疑成為嵌入式系統方案設計的首選,同時單片機應用領域的擴大也使得更多人加入到基於單片機系統的開發行列中,推動著單片機技術的創新進步。  然而傳統的單片機系統開發除了需要購置諸如仿真器、編程器、示波器等價格不菲的電子設備外,開發過程也較繁瑣。如圖1所示,用戶程序需要在硬體完成的情況下才能進行聯調,如果在調試過程中發現需修改硬體,則要重新制板。
  • 嵌入式系統中的USB總線接口電路圖
    實驗結果表明,該電路具有成本低、可靠性高等特點,可方便地集成到各種嵌入式系統中。本文引用地址:http://www.eepw.com.cn/article/201612/327017.htm  接口電路設計:單片機與CH375晶片的連接方式有串行接口和並行接口兩種,串行接口連接方式雖然電路連接簡單
  • 關於單片機和嵌入式,它們的區別是什麼
    單片機又是什麼?兩者有什麼區別和聯繫呢?針對兩者之間的問題小編整理了一篇文章,希望對大家理解兩者的基本概念,以及區別有所幫助。 1、從系統組成上區別,單片機由控制器、運算器、存儲器、輸入輸出設備構成,而嵌入式第一步需要結合具體的應用,考慮成本,性能,可擴展性,開發周期等各方面的要求,確定系統的主控器件後,加入微處理器,外圍硬體設備,嵌入式作業系統,應用程式組成。
  • 單片機各大分類與詳解
    軟體抗幹擾設計在工程實踐中,軟體抗幹擾研究的內容主要是:一、消除模擬輸入信號的噪聲(如數字濾波技術);二、程序運行混亂時使程序重入正軌的方法。本文針對後者提出了幾種有效的軟體抗幹擾方法。指令冗餘CPU取指令過程是先取操作碼,再取操作數。
  • 單片機的OLED顯示系統設計與實現
    為了提高圖形信息的顯示速度,並得到更多的顯示效果,文章基於FG_V1.2單片機開發板,依據OLED12864顯示屏的操作時序要求,用51單片機實現了基於0.96英寸OLED屏的顯示系統設計。
  • 單片機最小系統解析(電源、晶振和復位電路)
    圖8-5 單片機復位電路當這個電路處於穩態時,電容起到隔離直流的作用,隔離了 +5 V,而左側的復位按鍵是彈起狀態,下邊部分電路就沒有電壓差的產生我們這個單片機是高電平復位,低電平正常工作,所以正常工作的電壓是 0 V,沒有問題。
  • 基於單片機和FPGA的遠程溫度監控系統
    傳統的溫度測量方式周期長,不能實時監測,而且測量員必須到現場進行測量和啟動功率設備來調整溫度,工作效率非常低,且不便於管理。為此設計了這套遠程測控系統,坐在辦公室裡就可以對現場進行監控,又方便又節省人力。
  • 嵌入式計算機在軟體無線電方面的應用
    摘要:介紹了嵌入式計算機的特點及分類。然後討論了DSP技術在軟體無線電中面臨的挑戰及如何應用DSP技術進行軟體設計。並給出了一 種基於TMS320C5402的軟體無線系統模式。本文引用地址:http://www.eepw.com.cn/article/202217.htm關鍵詞:嵌入式計算機;嵌入式系統;DSP;軟體無線電引言嵌入式計算機通常指埋藏在宿主設備中的微處理機系統,此類計算機一般不被設備使用者注意,亦稱埋藏式計算機,典型機種如微控 制器、微處理器和數位訊號處理器(DSP)等。
  • 關於單片機晶振及復位
    關於晶振 晶振,顧名思義,晶體振蕩器,這就好比人的心臟啊,提供整齊劃一的節拍,如果這個東西不準,或者不起振,單片機玩不轉的,在STC89C52 關於復位電路復位電路,是用來在單片機執行異常的時候,可以讓他從頭開始執行程序,STC89C52RC這款晶片是高電平復位,低電平正常工作,先來看STC89C52RC,我們知道電容的特性是通交隔直,電容是個儲能元件,儲存的是電場的能量,在沒有電到上電的瞬間,電容肯定要充電的,這個時候電容就短路成一根導線了,RST端就被拉到了5V,執行復位指令
  • 嵌入式軟體面試那點事
    首先說個大概的,嵌入式軟體需要掌握什麼東西?1) 對單片機的熟悉程度(包括中斷系統、各種外設模塊、時鐘系統等)2) 對通信協議的熟悉程度(常見的有SPI、UART、I2C等)3) 掌握基本的數據結構(如隊列、棧、鍊表)4) 掌握基本的算法(多種排序算法,數據結構中需要的一些算法)其實嵌入式的東西很龐雜,不是一下子就能說清的,只能想到哪寫到哪了。
  • 我的單片機轉嵌入式Linux之路
    一條是初學單片機之後直接跳到Linux;另一條是單片機->多任務->RTOS->Linux。我走的是第二條路子,無論是工作、還是業餘學習,都是這麼一步一步地走過來的。現在,終於走到了嵌入式Linux。 單片機與嵌入式Linux大家肯定都有所了解了,做嵌入式Linux最好的機會我覺得是應屆畢業的時候。
  • 如何設計在stm32中的復位電路?
    復位的種類有很多:上電復位、掉電復位、復位引腳復位、看門狗復位、軟體復位等。本文探討的就是在stm32中復位電路如何設計。 stm32復位電路設計 復位電路的作用是為了是系統恢復到初始狀態的,單片機的復位方式也是存在好幾種的:上電復位,系統復位,備份區域復位 上電復位:其產生的條件是,當系統上電、掉電,以及系統從待機模式返回時,發生電源復位。電源復位能夠復位除了備份區域寄存器之外的所有寄存器的狀態。
  • 單片機和嵌入式有什麼關係?
    單片機和嵌入式有什麼關係?單片機是不是就是嵌入式呢?等等等等,初學階段總是會遇到很多這樣的問題,下面就一起來了解下。計算機就是一個硬體上包含了CPU、內存和一定外設(IO引腳、網口、I2C接口、串口等),並且可以運行一定的程序的電子系統。而單片機是一種計算機,這種計算機的特點就是「單片」。再來看看嵌入式。嵌入式本質上是一種電子設計方法,這種方法就是將微型計算機嵌入到電子產品內部。