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