智慧復位——程式控制MCU復位
微處理器復位方法:
硬體引腳RESET復位; 用看門狗復位; 程式控制復位。
軟體復位實現方法
首先宣告一個函式指標,指向復位後要開始執行指令的位置:
void (*app_start)(void) = 0x0000;
之後,在自己的程式中想復位的地方呼叫app_start();也就是跳到0x0000位置執行指令。
可以根據不同MCU復位的地址,修改上邊的地址(0x0000)。
實際上你可以跳到任何位置執行或呼叫相應指令或函式。
例項測試
老套路,發煙測試:以Arduino為開發環境來測試。
注意:在AVR微處理器中,為了使Arduino復位時不再進入引導區,使AVR將BOOTRST設定為1。
使用函式指標進行軟體復位的程式碼如下,你能想象到下邊的程式會使LED燈閃亮嗎?
// 0. 引腳定義const int LED_PIN 13 // 定義LED引腳為13號資料引腳(DIG13)static void (*reset_this_CPU)(void) = 0x0000; // 復位本CPU函式指標// 1. 初始化void setup() { pinMode(LED_PIN, OUTPUT); // 初始化D13為輸出 digitalWrite(LED_PIN, HIGH); // D13輸出高電平 delay(1000); // 延時1秒 digitalWrite(LED_PIN, LOW); // D13輸出低電平 delay(1000); // 延時1秒 reset_this_CPU(); // 跳到0x0000地址指標,也就是復位}// 2. 迴圈void loop() { // 此處什麼也沒有啊!}
結論
透過本方法,可以透過軟體方式進行復位,也可以用這個函式指標的方法呼叫任何函式。(實在不理解,請翻一下《微機原理》,謝謝。。。)
感謝一直關注著禾灮成長進步的朋友們。你們的信任、支援和鼓勵,鞭策著我們一路走到了今天。 感謝所有的合作伙伴,我們相互促進,共同見證了彼此的成長。 感謝所有曾經在禾灮彼此倚靠、相互鼓勵、攜手同心、砥礪同行的兄弟姐妹。這裡承載了我們的青春與熱血。 禾灮,感謝有你。 未來,我們將一如既往,砥礪前行。 禾灮·小楊 2018.08.06
作者:禾灮
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4798/viewspace-2816741/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android Studio復位Android
- 測試恢復5==使用2進位制形式檔案恢復控制檔案
- 控制檔案恢復—從自動或二進位制備份中恢復
- AT89S52微控制器復位電路理解
- 就像MCU有8位和16位 如果執行緒以執行緒
- jQuery select下拉選單復位效果jQuery
- STM32G081KBU6 32位微控制器 (MCU)應用
- 恢復被設定為Unused的欄位
- (6)同步復位非同步釋放電路非同步
- 從CVE復現看棧溢位漏洞利用
- 【GMT43智慧液晶模組】例程六:WWDG看門狗實驗——復位ARM
- 【GMT43智慧液晶模組】例程五:IWDG看門狗實驗——復位ARM
- 嵌入式應用,LPC51U68JBD64 32位 MCU 微控制器
- MT2502智慧穿戴模組上按PWRKEY關機和復位問題
- 32位程式注入64位程式
- 自動化,如何無埋點形式復位場景
- 從TCP協議的原理論rst復位攻擊TCP協議
- 二進位制修復中文亂碼的問題
- MySQL二進位制日誌刪除與恢復MySql
- 如何將android studio設定復位,將設定恢復到初始化Android
- CODESYS V3遠端堆溢位漏洞復現(環境配置+復現過程)
- 物聯網多應用刺激32位MCU迅猛增長
- 李開復:AI能在15年內取代40%~50%崗位AI
- DDL操作導致欄位長度變更修復方案
- 控制檔案恢復—從快照中恢復
- 控制檔案修復
- 2015.07.25 STC15微控制器學習日記-時鐘與復位
- redis cluster 故障後,主從位於不同節點的修復。Redis
- 從TCP協議的原理來談談RST復位攻擊TCP協議
- Jpanel元件在每次重新整理後都復位的問題?元件
- 修復identity 型別欄位資料的跳躍(轉)IDE型別
- 兩行程式碼修復瞭解析MySQL8.x binlog錯位的問題!!行程MySql
- rman恢復--丟失控制檔案的恢復
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- RMAN恢復控制檔案
- 手工恢復控制檔案
- 控制檔案恢復—從trace檔案中恢復
- DLink 815路由器棧溢位漏洞分析與復現路由器