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

(網(wǎng)盤)ARM嵌入式Linux系統(tǒng)開發(fā)詳解

嵌入式系統(tǒng)開發(fā)設(shè)計

評論