MicroPython 開機過程:
當 MicroPython 啟動時,首先會進行硬體初始化。包括啟動 CPU、初始化記憶體、設置內部時鐘頻率等基本操作。
部分 MicroPython 硬體平台(如 ESP32)有一個引導程式,它負責選擇將要啟動的韌體或進行系統更新。如果存在多個韌體,Bootloader 會選擇其中一個來加載。
在硬體初始化和引導程式完成後,MicroPython 的核心韌體會被載入到記憶體中,並開始執行。這韌體包括了 Python 直譯器、標準函式庫、以及其它底層支援程式。
當韌體開始執行後,系統會初始化一些關鍵模組,如文件系統、定時器、串口通信模組等。這些模組在後續的 Python 腳本中會被使用。
如果文件系統中存在 boot.py 腳本,系統會自動執行它。這個腳本通常用來進行一些初步的系統設置。
例如我們會在 boot.py 中設定無線網路連線的設定:
import network
def connect_to_wifi(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('Connecting to network...')
wlan.connect(ssid, password)
while not wlan.isconnected():
pass
print('Network config:', wlan.ifconfig())
connect_to_wifi('your_SSID', 'your_PASSWORD')
boot.py 執行完成後,如果文件系統中存在 main.py,MicroPython 會自動執行它。這是使用者定義的主程序,用來執行應用邏輯。如果沒有 main.py,系統會進入 REPL(Read-Eval-Print Loop),等待用戶輸入命令。
如果 main.py 結束執行,或在啟動過程中未找到 main.py,系統會進入 REPL 模式。這是一個交互式的 Python 解釋器,用戶可以在其中輸入和執行 Python 代碼。
總結:
boot.py 設定影響整個系統地執行環境而 main.py 設定個別設備功能,讓使用者可自行定義。但要小心的事情是,如果這兩個程式編寫錯誤,就可能會造成系統無法連接與使用。
當你因為 boot.py 或 main.py 程式設定錯誤,造成電腦主機無法透過通訊界面連接玩學機,你有幾個方法可以救回它:
import os
os.remove('boot.py') # 刪除 boot.py
os.remove('main.py') # 刪除 main.py
這樣做可以避免錯誤的腳本在下次重啟時再次執行,從而恢復對系統的控制。
如果無法進入安全模式或手動刪除文件,你可以嘗試重新燒錄 MicroPython 韌體。這樣做會覆蓋現有的檔案系統,進而刪除 boot.py 和 main.py。