使用raspberry pi Pico的原因
在硬件產品(單片機)的開發中我們往往需要借助一些額外的儀器/設備進行產品的輔助測試, 假設我們需要一個IO+ADC類型輔助設備, 以往的做法是 原理圖->PCB->程序, 而現在隨着開源硬件的流行很多時候我們沒有必要在重復造輪子。 arduino,raspberry pi,micro:bit,raspberry pi Pico等都是不錯誤的選擇。其中raspberry pi Pico是后來者,並且支持C 和 MicroPython編程,入門比較簡單,單片機開發者可以無門檻上手,幾乎沒有學習成本。
問題來了
我使用的是MicroPython開發方式,客戶端工具使用Thonny。
當我不小心寫了一個錯誤的python程序並且將其下載到Pico運行的時候。
錯誤的程序如圖:
會出現以下問題:
WARNING:root:Unexpected echo. Expected b'%Run -c $EDITOR_CONTENT\r\n', got b'TypeError: function takes'
Connection lost (EOF)
Use Stop/Restart to reconnect.
如圖:
解決方法
python是解釋形語言,我們下載進去的程序其實僅僅是一個文本文件。python僅在運行且運行到該錯誤行時才會報錯。
一些修復嘗試
按照我的理解如果用戶程序錯誤,不應該也不至於造成整個系統的癱瘓。 然而上述這個錯誤我嘗試了很多辦法都無法解決, 包括重新下載MicroPython的.uf2文件
強制擦除MCU的Flash
於是我想起了j-link,因為raspberry pi Pico本身就是一個Cortex-M0內核的單片機,
注意選擇的是M0_0內核, 因為Pico有2個核。
如圖:
或者直接點擊快捷鍵 [F4]
擦除成功
重新連接 Pico,提示更新MicroPython固件(因為剛才擦除了flash),點擊更新
至此,Pico滿血復活
總結
因為Pico我也是剛接觸,不確定是否是固件bug,可能還有其他更好的解決方案。以上方法並不是一個非常好的解決方案,因為並不是所有人都有j-link的。
友情提醒
在Thonny的編輯中,我們是可以 [F5] 先試運行程序的。即使程序有問題因為並沒有保存到MCU中,所以並不會造成如上的變磚問題。