-
1 # 使用者56301617983
-
2 # 跟我學微控制器
C、C++、java、python都可以寫微控制器程式,只有C、C++寫微控制器程式的日子早已經過去了,現在java和python也可以編寫微控制器程式了。
C/C++出來的早,早起有很多公司來寫這兩者的編譯器,我們都知道編譯器是可以把C/C++直接編譯為二進位制進氣語言,也就可以編寫微控制器程式了。
JAVA/Python是解釋型的語言,什麼意思呢,這兩種語言並不是直接編譯成二進位制的機器語言,而是透過直譯器(通常稱為虛擬機器)在執行時來翻譯成機器語言執行。那麼如果要完成java和python編寫微控制器程式,就必須把直譯器搬到微控制器上,這樣才能實現java和python在微控制器上執行。
可喜的是已經有人完成了這些工作,在開源網站github上可以找到這些專案。
microPythonmicroPython 是python在微控制器上的一直專案,很多微控制器都已經適配
https://github.com/micropython/micropython
NanoVM:NanoVM 是java在AVR微控制器上的移植
https://github.com/kosch/NanoVM
JavaSTM32java在stm32微控制器上的移植
https://github.com/Cr0s/JavaSTM32
上面是隨便在github上找到的一些開源專案,當然還有其它很多不同的版本,可以根據自己的需求進行搜尋。
-
3 # 日衝資訊 黃
微控制器沒有作業系統,手工直接把機器碼寫到記憶體裡執行。因此,Python之類使用實時編譯的語言無法在微控制器上執行。按照執行方式可分成三類:
編譯方式 將原始碼翻譯成機器碼後執行的方式。這種方式執行速度快,但對作業系統有依存性。混合方式 將原始碼翻譯成中間碼(如,位元組碼)後,在有各OS上的虛擬機器翻譯成其他語言或命令執行。或者,使用實時編譯(JIT)轉換成機器碼後執行。解釋方式 將原始碼逐行翻譯成其他語言或命令後,載入該語言或命令的機器碼並執行相應的處理。該方式執行速度慢,但編碼靈活,不用編譯直接執行比較方便。解釋方式,混合方式都需要在作業系統中配置執行環境,不能在微控制器上執行。只有編譯方式的程式能在微控制器上執行。
-
4 # 和不同
從記憶體方面簡單說說C/Java/Python的區別,不全面,還請諒解。
首先,微控制器上有用Java, Python編寫程式的。但這不是主流,而且也不是標準Java, Python。而C在微控制器上已經普及了最新的C11標準。
這兩者的區別主要有兩點:
執行時系統規模差異:C/C++執行時(Runtime)庫可以很小(數KB規模);Java/Python執行時(Runtime)系統尺寸較大(MB級)記憶體管理方式C/C++程式記憶體由程式碼自己管理:程式在執行狀態的記憶體佔用和分配延遲是可預期的
Java/Python程式記憶體由執行時系統進行動態分配和垃圾收集:程式在執行狀態的記憶體佔用和分配延遲是不可預期的
小結一下:
C執行時系統佔用RAM和ROM都很小(KB級);而Java/Python執行時系統佔用RAM/ROM較多(MB級)
C程式RAM分配的規模和延遲可預期;而Java/Python RAM分配的規模和延遲不可預期
微控制器通常資源很少(KB級),且實時性要求高(需要延遲和資源佔用可預期),所以更適合用C或類似語言編寫程式。 -
5 # 歡奇趣
1.非常重要的一點,就是資源限制。微控制器,全稱為單片微型計算機,是一種處理器晶片,其原理上和我們手機的和電腦處理器晶片是一樣的。只是這是一種針對比較小的電路系統所製造的,出於成本考慮,很多微控制器只有幾K的ROM和不到1K的RAM,在這麼小的平臺上執行其它語言是不太實際的事情。雖然現在的微控制器資源已經擴大了很多,但是由於其特定的使用環境,實在是沒有必要為了執行其它高階語言而浪費資源。如果你真有這樣的需求,你可以考慮其它更高階的處理器,廠家並沒必要為了這樣的需求而開發一款微控制器。
2.C/C++
的特性決定。C/C++已經很好地滿總了嵌入式程式開發,同時還具備其它語言所沒有的特性——可以使用指標,直接對地址操作,這非常符合底層硬體的使用環境。
回覆列表
語言不是重點,重點的是能夠將語言編譯成機器碼的編譯器(如keil),如果java,python有這個編譯器,一樣可以。