1. micropython之十萬個為什麼
有鑒於EEWorld壇主的熱情,許諾發個PCBA給我評估。作為回報,我把我的學習體驗貼在壇子了。
因為EE的背景,我最熟悉的是8051匯編和C。不過最近在Arino/mbed上大量用了C++開發。使用Python是從輔助開發工具時開始的,Python可以從物聯網各個環節切入,Python可以用於
FPGA/CPLD,嵌入式軟體,桌面程序,伺服器(Web/IoT Server+BigData)和手機APP開發中。此外,我還為FSL的KL25Z用Python做了自動測試,伺服器,ISP下載等。
所以.......
如果你是工程師,你要學Python;
如果你是很懶的工程師,你更要學Python;
如果你是喜歡DIY的工程師,你更加要學Python。
如果你是喜歡炒股票的工程師,你不學Python就虧了。
適用范圍廣度可以與Python一拼的語言是Java和Javascript。(關於編程語言的爭論我不回復。)
為什麼要用Python
我記得一位高人對我說,要別人的錢,別人的腦子,辦你的事情。Python可以幫你一把。Python自帶很多很多......的庫,所以在物聯網背景下,可以做很多事情。
而且作為膠水語言,Python有多個版本。基於C的CPython和Cython,基於JVM的Jython,基於Python子集和JIT的PyPy,基於.net的IronPython,基於Javascript的Pyjs/Brython,還有被Ruby吸血的RubyPython。所以Python和C/Java/.net-C#/JS/Ruby之間可以很好地互相勾搭。也就是因為這點,Python可以獲取大量的Java企業應用庫......
此外,無論你把Python作為腳本,還是OOP試驗田,還是AOP編程,都可以。作為程序員可以同一工具下完成編程思想的升級改造。
嵌入式版本
Python適用面廣,語法簡單。用於嵌入式是遲早的事情。無論是ARM Cortex-M0/3/4,還是Cortex-A5/7/8/9,MIPS,x86,Quark都不在話下。micropython是目前最流行的嵌入式Python VM和開發環境。官方分支有:STM32HAL/ESP8266/CC3000/UNIX版本,還有細小分支如Teensy(FSL KL),PIC16,而第三方分支有microbit和WiPy/LoPy。前者是micropython為BBC microbit開發,而後者是基於CC3000和ESP32(Wifi+BLE雙模)和LoRa長距離WSN而開發的版本。
其他嵌入式Python還有Pymite和Viper。以及大家交叉編譯的CPython,OpenEmbedded版本,OpenWRT版本,以及Debian/Ubuntu的ARM/MIPS版本,Lego ev3-dev版本.......Symbian版本,Telit GPRS MODEM版本......
所以.......
Python大法好,趕緊到碗里來。
為什麼在嵌入式中使用Python
因為二次開發是現在開發的核心價值。現在的「智能」硬體真的一點兒都不智能,只能夠說是互聯產品,它本身不智能,智能在雲端了。但是用戶應用應該具備二次開發和環境,這以後會是一個標配。所以光有C/C++這種貼近硬體的語言是不夠的,針對應用應該有自己的運行時:Java,Python,Javascript。
micropython的野望
有沒有注意到micropython有個UNIX版本?而UNIX版本中還有組件管理工具:upip?這就是構建micropython生態的節奏。那麼他要和CPython競爭么?我覺得還不是。但是在ARM9等只有busybox的SBC裡面,它的優勢很明顯。大家可以不用自己惡搞CPython了。因為micropython天生就是交叉編譯的。
micropython的限制
由於在裸機上,micropython在設計中不僅需要了解C/Python間區別,還需要了解標准Python和microPython間區別。否則,micropython有個天生的麻煩,不支持JTAG/SWD調試。你們懂得,在於實時有關的環境中,有時候沒有調試讓人抓狂。所以ISR方面需要額外處理。