由于Python有強大的社區支持,且是一款比容易入門的腳本語言,因此一些非IT領域的人都選它作為入門語言。但是它不能進行一些底層的操控,在硬件領域并不起眼。然而那都是若干年之前的事情了。隨著硬件性能的不斷提升,編程開發語言的優劣開始變得不那么明顯。
如今在硬件圈同樣非常關注Python
如下是樹莓派的板子,樹莓派能干啥?
在這部分內容開始之前,先帶大家回顧一段《生活大爆炸》里的情節。在第一季開播時,這部劇里就有非常炫酷的一幕——幾個室友湊在一起用電腦遠程控制了家里的家居。提到的遠程控制都是指自己控制自己的設備,而不是別人的,請注意千萬不要非法操作。
樹莓派和Arduino應用Python的的例子實在是多,比如,利用Raspberry Pi的硬件和Python語言來完成一個機器人制作。實際上如今,Python可以直接進行單片機的開發了!
用Python語言開發STM32單片機
MicroPython基于ANSI C,語法跟Pyton 3基本一致,可以通過Python腳本語言開發單片機程序。它擁有自家的解析器、編譯器、虛擬機和類庫等。我們熟悉的ARM處理器,像STM32F405、STM32f407等上面可以直接運行Python語言。用戶完全可以實現硬件底層的訪問和控制,LED流水燈、LCD顯示、電壓檢測、電機控制、SD卡訪問等都是輕松玩轉。
Python應用在在實時嵌入式系統中
眾所周知,Python跑在Linux與Windows上都沒問題,諸如Raspberry Pi等單板計算機也不在話下。這么牛?在實時嵌入式系統中是否也有Python的一席之地?答案是肯定的。
Python在實時嵌入式系統開發中的主要應用如下:
設備調試和控制
在嵌入式軟件開發過程中,開發人員常常需要分析總線通信量,如USB、SPI或I2C。有的分析僅僅是出于調試目的,但有時則需要控制總線分析儀并發送信息至嵌入式系統。許多總線分析儀和通信工具都有友好的用戶接口,可以用來控制工具。他們通常還提供一種方法來開發腳本,也可以用來控制工具。Python是一種普遍支持的腳本語言,有時則是一些工具的接口,或是用來控制工具。
自動化測試
通過Python控制工具在嵌入式系統中發送和接收消息的能力,使得利用Python構建自動化測試(包括回歸測試)成為可能。Python腳本可以設置嵌入式系統進入不同的狀態,設置配置文件,并測試所有可能的干擾以及系統與外部環境的相互作用。使用Python開發自動化測試的好處是,回歸測試可以開發持續測試并訓練系統。任何的代碼變動導致的bug或不合格的結果都將被實時的檢測出來。
數據分析
通過Web簡單地搜索Python庫,你會發現,有許多免費強大的Python庫都可以用來開發應用程序。Python可以用來接收非常重要的嵌入式系統數據,然后存儲到數據庫或是本地進行分析。開發者還可以使用Python開發實時可視化功能來展現臨界參數,或是存儲這些參數用于后續分析。使用Python進行數據分析的優點之一是當基礎性工作完成之后,新功能的植入會顯得比較簡單。
實時軟件
Python已經證實了自己的強大性和易使用性,甚至發現它是作為一門編程語言進入實時嵌入式系統。是的,嵌入式軟件本身就是用Python寫的而不是C/C++。用于實時軟件最廣泛的Python版本是MicroPython,大多是設計在ARM Cortex-M3/4微控制器上運行。MicroPython并不孤立。Synapse和OpenMV公司在嵌入式系統中既使用MicroPython也使用他們自己的Python port。對MicroPython感興趣的讀者可能對DesignNews(EDN的姐妹機構)的繼續教育課程也感興趣。
學習面向對象編程
Python是一門免費的編程語言,可以跨多個平臺使用,對于學生和非編程人員而言比較簡單。該語言與C語言不同,它也是現代式的,并且可以在自由形態的腳本類型中結構化,或是作為一個復雜的面向對象的體系結構。Python本身也很靈活。甚至還有這種情景:沒有編程經驗的電氣工程師可以利用Python寫出有用的測試腳本或用最少的時間實施電板檢查。
Python的學習曲線并不陡峭,熟悉Python學習曲線的開發人員發現,當你有了其它語言的基礎之后,學習Python比學習任意其他的編程語言都要簡單。出于這些原因,當開發人員看到Python扮演著編程孵化器角色,并吸收其它缺乏經驗的工程師對宜早不宜遲的設計周期做出貢獻時,不應該感到驚訝。
Python+FPGA?
據說是有人用Digilent的PYNQ-Z1板卡實現了超強的加速性能。
FPGA的開發都是基于硬件描述語言,從開始的VHDL到現在更為流行的Verilog,軟件應用也從由最開始的匯編語言發展到現在的C/C++實現,這些都是目前為大多數FPGA開發者所熟悉的FPGA發展路程。
然而最近IEEE收錄了一篇關于使用Python開發FPGA應用的論文。
各位教授就基于Python的開發結果與已經存在的基于C語言的開發及手動開發結果進行了比較分析。在論文中,各位教授還對PYNQ開發環境的優缺點進行了闡述:
首先來說,PYNQ應用開發框架是一個開源的開發環境,提供了標準的可以約束芯片I/O引腳的“Overlay”比特流,同時,開發人員可以在此開發環境中,利用Python對FPGA進行快速編程開發。
通過C/C++實現這項研究的一般圖像處理管道性能,以及定制的硬件加速器和Python實現的性能結果,幫助我們更好地理解了Python + FPGA開發環境的性能和能。結果,通過PYNQ實現較c實現速度提高了30倍之多,當Python實現時有更加有效的可用庫時,比如OpenCV,其性能可以增長更多。
Python軟件實現和FPGA性能潛力的結合是一個非常有意義的工作,將會開創出一個類似于樹莓派和Arduino的廣大的開發者社區。
-
嵌入式系統
+關注
關注
41文章
3620瀏覽量
129681 -
python
+關注
關注
56文章
4807瀏覽量
84975
原文標題:Python用于硬件開發?文末掃碼送課程
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論