国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MicroPython 在嵌入式開發中的興起

陳韻瑄 ? 2023-01-04 11:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

換崗:MicroPython嵌入式開發中的崛起

MicroPython 技術演進

計算機編程語言是對技術發展的一項引人入勝的研究。從機器代碼和匯編語言到 CBOL 和 FORTRAN 等第一批高級語言,向更強大但更易于理解的語言邁進使得開發周期更快,并將編程帶給越來越廣泛的創作者,從專業到業余。

Arduino 和 Raspberry Pis 出現之前,許多原型制造商開始使用 PBASIC微控制器,例如 BASIC Stamp。在專業的嵌入式領域,C 編程語言長期以來一直占據著至高無上的地位。實際上,Arduino“編程語言”由一組 C/C++ 函數組成。這允許抽象出各種嵌入式設備編程的復雜性,從而對那些剛剛開始嵌入式電子教育的人更加友好。因此,雖然 C 語言的主導地位仍然相當穩固,但變革之風正在醞釀之中。輸入 Python 編程語言。

根據 2020 年 7 月的 IEEE 研究,Python 是 2020 年最流行的編程語言。它的創建者 Guido van Rossum 解釋說,創建 Python 的原因如下:

“我在 CWI 的 ABC 小組實施解釋性語言方面擁有豐富的經驗,并且通過與這個小組的合作,我學到了很多關于語言設計的知識。這是許多 Python 特性的起源,包括使用縮進進行語句分組和包含非常高級的數據類型。”

Guido 繼續解釋其他語言對 Python 設計選擇的影響:

“Modula-3 是用于異常和其他一些 Python 特性的語法和語義的起源。”

還:

“我在 Amoeba 中處理錯誤的經歷讓我敏銳地意識到異常作為一種編程語言特性的重要性。”

Python 編程語言于 30 多年前首次發布。Python 代碼首先被編譯成字節碼,然后提供給解釋器,這是一個大型 C 程序(看,你就是無法避免 C)。Python 的一個流行方面是交互式解釋器模式或讀取-評估-打印-循環 (REPL),這是一種通過命令行交互式提示與 Python 交互以在將代碼提交到.py文件之前測試概念的方法。MicroPython 固件也可以在沒有編譯器的情況下構建和運行,因為虛擬機可以運行預編譯 ( .mpy) 程序。

快進到 2014 年,MicroPython 發布了。對于具有桌面編程經驗的人,您可能會使用稱為 CPython 的特定 Python 實現,這是該語言的參考實現。MicroPython 只是另一種實現,它針對內存和處理受限的硬件(例如微控制器)進行了優化。MicroPython 包含完整的 Python 3 編譯器、運行時和 Python 標準庫的子集。順便說一句,MicroPython 已經分叉到 CircuitPython 中,后者更專注于教育和創客社區。以下是 MicroPython 在嵌入式開發中的多功能性和影響力的示例。

使用 MicroPython 對微控制器進行編程的快速和骯臟

MicroPython 解釋器可用于許多具有各種硬件功能的開發板上。獲取基于MicroPython的開發板時,首先要做的是將解釋器固件更新到最新版本。這是通過訪問 MicroPython固件網站并為您的特定開發板下載最新的設備固件更新 ( .dfu) 文件來完成的。每塊板都有不同的進入更新模式的物理方法。它通常涉及在向電路板供電時將某個引腳短接至電壓或接地。將開發板插入計算機并設置為更新模式后,啟動一個名為dfu-util的實用程序,將新固件刷入開發板。

確切的使用機制dfu-util將因您的主機系統操作系統(Windows、Mac OS、Linux)而異。如果使用基于 Windows 的主機,可能需要一些額外的步驟。

完成后,從開發板上拔下 USB 電纜并重新插入。開發板應枚舉為可移動介質,例如 USB 閃存驅動器或光盤。該驅動器應列為/flash,并且應包含以下四個文件:

boot.py:包含特定開發板的配置信息。

main.py:包含您的特定應用程序的源代碼。

pybcdc.inf:這是一個 Windows 驅動程序文件,可以讓主機作為串行 USB 設備與開發板接口

readme.txt:開發人員可以在其中向最終用戶或可能希望派生 main.py 文件以滿足自己需求的開發人員留下任何注釋的文件。

可以通過主機上的串行終端使用 REPL 與開發板進行交互。或者,我們可以使用代碼編輯器來編輯主.py文件。MicroPython 和相關開發板的一個巧妙特性是源代碼保留為用戶可訪問的文件。只需將開發板插入計算機,它就會枚舉為可移動存儲設備。然后可以在最終用戶選擇的代碼編輯器中直接查看和編輯源代碼文件。然后彈出開發板,拔下電源并給開發板加電,執行新的或修改后的源代碼。

一些開發工具能夠處理 MicroPython。一些更受歡迎的選擇包括:

Mu:一個免費的、準系統的編輯器,有很多花里胡哨的功能,包括代碼完成、REPL、文件管理器,以及通過簡單的鼠標點擊來整理代碼的能力。這是一個很好的入門平臺,在簡單性方面與 Arduino IDE 最為相似。

PyCharm:PyCharm 提供免費社區版和付費專業版,是 Python 開發環境的主力。免費版本包含僅供其他類似開發工具的付費版本使用的功能。調試器、重構、代碼檢查、即時錯誤突出顯示和快速修復等功能都是免費提供的。

Visual Studio Code:萬能的代碼編輯器,已經成為許多開發人員的默認編輯器。Microsoft 提供的這一免費產品易于擴展,并且可以與 GitHub 等其他第三方工具集成。這可以使 Visual Studio Code 成為 MicroPython 項目的一體化開發環境。

編寫 CPython 和 MicroPython 代碼之間的實際差異

MicroPython 已經移植到許多基于 Arm ? Cortex ? -M4的嵌入式平臺(包括STM32、TI CC3200 /WiPy、Teensy boards、Nordic nRF 系列、SAMD21和 SAMD51),此外,它還被移植到其他架構,如 ESP8266ESP32、16 位 PIC、RISC-V(RV32 和 RV64),甚至 Lego Mindstorms EV3。MicroPython 必須應對大量不同的體系結構和嵌入式系統規范,而 CPython 的環境相對更加單一(主要是 x86/x64 和 ARM 體系結構)。因此,CPython 和 MicroPython 之間存在一些并非微不足道的差異。一些主要區別包括:

如何添加自定義庫:與 CPython 不同,MicroPython 不理解當前目錄的概念。因此,雖然它也用于sys.path查找模塊,但它是相對于0:/(指的是開發板的內部閃存)或相對于1:/(指的是 SD 卡,如果開發板配備的話)。創建模塊有兩種方法。

第一種選擇是在閃存或 SD 卡的根目錄下創建一個文件,例如mymodule.py. 然后在 中main.py,只需添加一行 with import mymodule,位于其中的所有功能都module.py將對 可用main.py。

第二個選項是在根目錄中創建一個目錄,例如,mymodule. 在mymodule文件夾,創建一個名為的文件__init__.py并在文件中添加任何需要的自定義函數。然后從內部main.py添加行import mymodule。

在任何一種情況下,要訪問存儲在 SD 卡上的任何模塊,該行sys.path.append('1:/')也必須添加到main.py.

內存管理:CPython 使用自動引用計數作為內存管理的手段,而 MicroPython 使用垃圾收集。

有限的和特定于微的模塊:Python 的主要便利之一是能夠輕松導入提供許多有用功能的代碼——例如解析 JSON、字符串處理或 Web 套接字編程。但是,MicroPython 無法訪問完整的 CPython 模塊。此外,許多標準 CPython 模塊的 MicroPython 實現考慮了嵌入式硬件的內存和處理速度限制。一些模塊使用標準的 Python 名稱。其他人以“u”開頭;例如, import array(CPython) 和import uarray(MicroPython)。

此外,一些模塊是特定于嵌入式硬件的。更通用的導入機器模塊允許代碼最大限度地提高各種 MicroPython 友好開發板的可移植性。還有特定于電路板的模塊,例如導入pyb(針對 pyBoard)或導入esp(針對基于 ESP8266 的電路板)。電路板特定模塊利用任何獨特的硬件組件或最大限度地提高效率。例如,pyb.delay(ms)或者pyb.disable_irq()是分別請求延遲或禁用中斷的機制,專門為 pyBoard 量身定制。此處

提供了可用于 MicroPython 的模塊的完整列表。

語法差異:

MicroPython 要求文字數字和關鍵字之間有空格,相比之下,CPython 沒有此要求。

MicroPython 允許使用:=賦值給理解變量,CPython 引發 SyntaxError。

語言和內置類型差異:

MicroPython 中未實現異常鏈接。

內置類型的處理方式不同;例如,MicroPython 不支持刪除數組。

不支持函數的用戶定義屬性。

覆蓋sys.stdin, sys.stdout, 和sys.stderr是不可能的。

CPython 和 MicroPython 之間的全部差異太多,無法在此一一列舉。在大多數情況下,除了最挑剔的 Python 編碼人員之外,其他人的差異應該很小。如果您在嘗試實現您知道可與 CPython 一起使用的功能時遇到錯誤,請查看此站點以獲取CPython 和 MicroPython 之間的強大差異列表。

開發商,集結!

如果優先考慮速度,則可以在 MicroPython 中編寫內聯匯編代碼。內聯匯編程序支持 ARM Thumb-2 指令集的一個子集。內聯匯編隨后被轉換為 Python 函數調用。根據體系結構參考手冊,“... [匯編] 指令對 32 位帶符號整數數據進行操作,除非另有說明。大多數支持的指令僅在寄存器 R0-R7 上運行:在支持 R8-R15 的地方,有說明。從函數返回之前,寄存器 R8-R12 必須恢復到它們的初始值。寄存器 R13-R15 分別構成鏈接寄存器、堆棧指針和程序計數器。”

結論

MicroPython 是進入嵌入式開發世界的令人興奮的新入口。它為專業人士和制造商提供了誘人的新可能性。盡管它可能不適合某些具有極其嚴格的時序和性能要求的邊緣用例,但它可以成為傳統 C 編程語言的有力伙伴。再加上 Python 語言的興起,MicroPython 可以作為希望開始嵌入式硬件開發的桌面應用程序開發人員的橋梁。

.tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px} .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px} .tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px} .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px}

審核編輯hhy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5198

    文章

    20445

    瀏覽量

    334003
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90025
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    嵌入式開發常用函數速查表

    嵌入式開發,掌握常用函數的用法可以大大提高開發效率。無論是單片機初學者還是有一定經驗的工程師,熟悉函數庫和調用方式都是必備技能。今天,我們為大家整理一份
    的頭像 發表于 01-19 09:06 ?303次閱讀
    <b class='flag-5'>嵌入式開發</b>常用函數速查表

    什么是嵌入式應用開發

    概述 所謂的嵌入式應用開發就是嵌入式操作系統下進行開發、軟硬件綜合開發 ?
    發表于 01-12 16:13

    性能與性價比兼得!迅為RK3562開發板開啟嵌入式開發新選擇

    性能與性價比兼得!迅為RK3562開發板開啟嵌入式開發新選擇
    的頭像 發表于 12-23 16:10 ?1264次閱讀
    性能與性價比兼得!迅為RK3562<b class='flag-5'>開發</b>板開啟<b class='flag-5'>嵌入式開發</b>新選擇

    分享一個嵌入式開發學習路線

    法,這些語法嵌入式開發至關重要。 2. 技能進階期(2-3個月) 從51單片機過渡到主流的ARM Cortex-M系列(嵌入式就業核心平臺),學會使用STM32單片機,掌握
    發表于 12-04 11:01

    C語言嵌入式開發的應用

    C 語言汽車電子控制系統開發的主導地位。 2、設備驅動程序 設備驅動程序是嵌入式系統連接硬件和軟件的橋梁,它負責實現
    發表于 11-21 08:09

    嵌入式開發的關鍵點介紹

    嵌入式開發在現代科技扮演著非常重要的角色。隨著物聯網的發展,嵌入式系統的需求也越來越大。嵌入式開發不僅需要開發人員具備深入的硬件知識和編程
    發表于 11-13 08:12

    GT2440嵌入式開發系統用戶手冊

    電子發燒友網站提供《GT2440嵌入式開發系統用戶手冊.pdf》資料免費下載
    發表于 10-28 17:05 ?2次下載

    恩智浦如何攻克兩大嵌入式開發難題

    我們的身邊,嵌入式系統無處不在。而隨著技術的進步和應用的拓展,今天的嵌入式開發也面臨著諸多新課題、新挑戰。
    的頭像 發表于 10-27 09:28 ?1776次閱讀

    新一代嵌入式開發平臺 AMD嵌入式軟件和工具2025.1版現已推出

    AMD 2025.1 版嵌入式軟件和工具是面向新一代嵌入式系統開發而打造的綜合平臺,全面加速概念構想到部署落地。 2025.1 版嵌入式軟件和工具的新 增功能 AMD
    的頭像 發表于 08-20 09:15 ?3976次閱讀

    嵌入式開發就業還有前景嗎?

    智能家居領域,嵌入式開發的主要工作是開發各種智能化設備和系統,如智能照明、智能安防、智能家電等。嵌入式開發人員需要掌握相關的硬件和軟件技術,如處理器、傳感器、通信技術、操作系統等,
    發表于 07-16 10:47

    明遠智睿SSD2351開發板:嵌入式開發領域的新型新星

    物聯網、智能家居、智能網關、視頻監控等新興技術領域迅猛發展的今天,嵌入式開發作為這些創新背后的核心驅動力,其重要性日益凸顯。而在嵌入式開發的眾多環節
    的頭像 發表于 07-01 16:47 ?727次閱讀

    嵌入式開發入門指南:從零開始學習嵌入式

    隨著物聯網、智能硬件的發展,嵌入式開發成為熱門技能之一。以下將為初學者提供一份詳細的嵌入式開發入門指南,涵蓋學習路徑、必備工具、推薦資源等內容。 1. 嵌入式系統的定義與應用嵌入式系統
    發表于 05-15 09:29

    嵌入式開發:高門檻的系統性工程與 996 的行業困局

    嵌入式開發的門檻,往往被培訓機構和表象所掩蓋。許多人誤以為 “用 C 語言寫個跑 ARM 上的程序” 就是嵌入式,實則連皮毛都未觸及。真正的嵌入式開發是硬件與軟件深度融合的系統性工程
    的頭像 發表于 04-09 11:06 ?980次閱讀
    <b class='flag-5'>嵌入式開發</b>:高門檻的系統性工程與 996 的行業困局

    Python嵌入式系統的應用場景

    你想把你的職業生涯提升到一個新的水平?Python嵌入式系統中正在成為一股不可缺少的新力量。盡管傳統上嵌入式開發更多地依賴于C和C++語言,Python的優勢在于其簡潔的語法、豐富的庫和快速的
    的頭像 發表于 03-19 14:10 ?1492次閱讀

    BlackBerry QNX推出通用嵌入式開發平臺

    BlackBerry有限公司(紐交所代碼:BB;多倫多證券交易所代碼:BB)旗下部門QNX今日宣布推出QNX 通用嵌入式開發平臺(General Embedded Development
    的頭像 發表于 03-11 16:04 ?1189次閱讀