歡迎來到培訓(xùn)無憂網(wǎng)!
咨詢熱線 400-001-5729
2021-11-22 21:58:15|已瀏覽:471次
考慮到很多同學(xué)可能是新手,這里首先要談?wù)劷徊婢幾g的概念!
交叉編譯是嵌入開發(fā)中的基礎(chǔ)概念,名字看起來高端大氣上檔次,但其本質(zhì)還是編譯,也就是把 C/C++ 代碼編譯成可執(zhí)行程序,和我們初學(xué) C/C++ 語(yǔ)言時(shí)的 Hello World!程序編譯幾乎完全相同。
那么,你可能會(huì)問,不同之處在哪里?
不同之處僅僅是,Hello World!在本機(jī)編譯,可執(zhí)行程序在本機(jī)運(yùn)行;而交叉編譯則是:程序在本機(jī)編譯,而可執(zhí)行程序在設(shè)備運(yùn)行(即:本機(jī)無法直接運(yùn)行交叉編譯得到的二進(jìn)制文件)。
對(duì)于大型嵌入式企業(yè),開發(fā)環(huán)境一般分為兩個(gè)部分:
代碼編輯環(huán)境
代碼編譯環(huán)境
產(chǎn)品代碼位于代碼服務(wù)器上,每個(gè)員工遠(yuǎn)程登錄代碼服務(wù)器之后創(chuàng)建自己的代碼分支,之后就可以進(jìn)行代碼編輯和編譯了。
其中,代碼編輯是在員工的工作 PC 上完成;而代碼編譯則是在服務(wù)器上完成。編譯得到的二進(jìn)制可執(zhí)行程序,需要拷貝到工作 PC 上之后燒寫到設(shè)備中。大家通過類比可以發(fā)現(xiàn),其實(shí)目前的鴻蒙設(shè)備開發(fā)方式就是企業(yè)級(jí)嵌入式產(chǎn)品的開發(fā)方式,只不過進(jìn)行了縮減而已!
代碼編輯和代碼編譯在“不同的機(jī)器上”,兩臺(tái)機(jī)器通過網(wǎng)絡(luò)互聯(lián),交叉編譯得到的二進(jìn)制文件通過代碼編輯所在的環(huán)境燒寫到設(shè)備。
那么,這有什么問題嗎?
傳統(tǒng)的嵌入式開發(fā)方式對(duì)于程序老手來說,沒有任何問題,用起來游刃有余。但是,對(duì)于新手來說就可能是個(gè)噩夢(mèng)了。
大家可以想想,程序出問題后如何定位?
就目前鴻蒙設(shè)備開發(fā)的情況來說,只有打印日志這一招可用。這一招最常用,可問題也不少......當(dāng)然,有同學(xué)可能會(huì)說:“接個(gè) JTag 斷點(diǎn)調(diào)試就可以解決這個(gè)問題了!”
我想說,理論上確實(shí)如此,但是目前支持鴻蒙系統(tǒng)的開發(fā)板(如:Hi3861 開發(fā)板)幾乎不可能使用 JTag 進(jìn)行調(diào)試!
說得更簡(jiǎn)單一點(diǎn):目前還沒法用 JTag 對(duì)鴻蒙設(shè)備進(jìn)行調(diào)試。所以,得另想辦法,而 Python 是一個(gè)可行的選擇。
Python 語(yǔ)言簡(jiǎn)單而又不失強(qiáng)大,用于設(shè)備應(yīng)用開發(fā)是再合適不過了。并且的,Python 開發(fā)者數(shù)量巨大,如果鴻蒙應(yīng)用開發(fā)能夠支持 Python 語(yǔ)言,那么鴻蒙宇宙又可以增加無數(shù)閃耀的新星!目標(biāo):除 C 語(yǔ)言之外,給開發(fā)者提供另一種選擇,可以使用 Python 語(yǔ)言開發(fā)鴻蒙設(shè)備應(yīng)用程序。
所以,最迫切需要的是一個(gè) Python 語(yǔ)言解釋器,并且能夠作為應(yīng)用的一部分運(yùn)行于設(shè)備上。
如下圖所示:
那么現(xiàn)在的問題就是:如何獲得需要的 Python 語(yǔ)言解釋器?
在這里有同學(xué)可能會(huì)問:為什么不直接移植 MicroPython?而是對(duì) MicroPython 做剪裁?
原因很簡(jiǎn)單,我的想法是讓鴻蒙設(shè)備支持 Python 開發(fā)方式,而不是取代 C 語(yǔ)言開發(fā)方式,更不是取代鴻蒙!
大家要明白 MicroPython 設(shè)計(jì)的初衷是直接運(yùn)行于微控器,使用 Python 控制硬件,所以 MicroPython 本身已經(jīng)具備了一些操作系統(tǒng)的特質(zhì),如果直接移植到設(shè)備(Hi3861 開發(fā)板),那么也就意味著用 MicroPython 替代了鴻蒙,這顯然與期望不符!MicroPython 的語(yǔ)言解釋器是對(duì) Python 的一個(gè)重新實(shí)現(xiàn),非常適合資源受限的嵌入式設(shè)備。
因此,最好的做法就是剪裁 MicroPython 的語(yǔ)言解析器,之后將鴻蒙設(shè)備的系統(tǒng) API 接口綁定到 Python 語(yǔ)言(即:Python 版同名系統(tǒng) API),這樣就可以達(dá)到我的目的了。很顯然,在設(shè)備端需要開發(fā)一個(gè)應(yīng)用引擎。如果需要使用 Python 開發(fā)設(shè)備應(yīng)用程序,直接編譯運(yùn)行這個(gè)應(yīng)用引擎并運(yùn)行于設(shè)備之上。
而設(shè)備應(yīng)用程序由 Python 腳本構(gòu)成,編寫好之后直接傳入設(shè)備中即可。
講到這里相信各位同學(xué)也明白了,設(shè)備應(yīng)用的 Python 腳本其實(shí)根本“不知道”自己執(zhí)行在鴻蒙系統(tǒng)上,這些腳本的執(zhí)行僅僅需要 Python 解釋器和相應(yīng) API 接口。
那么,請(qǐng)大家思考一下,如果這個(gè)引擎運(yùn)行于 Windows 之上會(huì)發(fā)生什么?會(huì)發(fā)生的事情顯然就是:我們可以在 Windows 上執(zhí)行為鴻蒙設(shè)備而編寫的 Python 應(yīng)用腳本。
于是,前面所說的調(diào)試問題就可以迎刃而解了。
在 Windows 上使用純 Python 語(yǔ)言模擬實(shí)現(xiàn)鴻蒙設(shè)備的 API 接口(Python 版),然后使用現(xiàn)有的 Python 開發(fā)環(huán)境調(diào)試設(shè)備應(yīng)用腳本(如:斷點(diǎn)調(diào)試)。
這樣就可以大大提高開發(fā)效率,避免代碼中滿篇的添加 printf 打印語(yǔ)句。python 是使用 Java 語(yǔ)言對(duì) Python 的一個(gè)重新實(shí)現(xiàn),借助它就可以在 Java 中使用 Python 進(jìn)行編碼。
而鴻蒙手機(jī) APP 支持使用 Java 語(yǔ)言進(jìn)行開發(fā),所以理論上可以在手機(jī) APP 中使用 Python 完成部分代碼的編寫!相關(guān)案例我會(huì)在后續(xù)為大家提供出來。
本文由培訓(xùn)無憂網(wǎng)千鋒教育專屬課程顧問整理發(fā)布,希望能夠?qū)ο雽W(xué)習(xí)Python開發(fā)培訓(xùn)的同學(xué)有所幫助。更多Python開發(fā)培訓(xùn)課程歡迎關(guān)注培訓(xùn)無憂網(wǎng)Python開發(fā)培訓(xùn)頻道或添加老師微信:15033336050
注:尊重原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處和鏈接 http://www.hebeijilong.cn/news-id-4523.html 違者必究!部分文章來源于網(wǎng)絡(luò)由培訓(xùn)無憂網(wǎng)編輯部人員整理發(fā)布,內(nèi)容真實(shí)性請(qǐng)自行核實(shí)或聯(lián)系我們,了解更多相關(guān)資訊請(qǐng)關(guān)注python培訓(xùn)頻道查看更多,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費(fèi)申請(qǐng)?jiān)囌n。關(guān)注官方微信了解更多:150 3333 6050