0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用嵌入式代碼生成器檢查復(fù)雜性

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Lucio Di Jasio ? 2022-06-29 14:44 ? 次閱讀

Raspberry Pi 產(chǎn)品線是一款具有無(wú)線連接功能的 10 美元個(gè)人計(jì)算機(jī)。對(duì)于業(yè)余愛好者、制造商、修補(bǔ)匠、黑客,以及,是的,我們中為數(shù)不多的真正努力設(shè)計(jì)“真正的”電子產(chǎn)品的人來(lái)說(shuō),這是多么美好的時(shí)光啊!

盡管 Raspberry Pi 的“通用計(jì)算”區(qū)別和微控制器MCU) 的“嵌入式”分類存在細(xì)微差別,但兩者的共同目標(biāo)是為開發(fā)人員“控制復(fù)雜性”同時(shí)“吸引新手用戶”。每種類型的平臺(tái)都提供免費(fèi)軟件工具,包括集成開發(fā)環(huán)境 (IDE)、編譯器、鏈接器、模擬器、調(diào)試器以及或多或少的開放中間件和操作系統(tǒng) (OS)。兩者都嚴(yán)重依賴于相似的(如果不相同的話)基于 GNU 的工具鏈。在中間件級(jí)別,一旦較低(直至金屬)驅(qū)動(dòng)程序?qū)颖怀橄?,開源選項(xiàng)再次非常相似。

盡管他們的使命是通過降低復(fù)雜性來(lái)支持開發(fā)人員,但是文檔膨脹的問題在雙方都很明顯。一個(gè)完美的例子是基于 PIC 架構(gòu)的小型 8 位 MCU,PIC16F1619。PIC16F1619 MCU 用于控制小型電器,為此,它在 20 引腳封裝中僅包含 16 kB 閃存、12 個(gè)數(shù)字外設(shè)接口和大約同樣多的模擬支持模塊,但其數(shù)據(jù)表跨越 650 頁(yè)(在添加之前表征數(shù)據(jù)、圖表和圖形)。PIC16F1619 上提供的外設(shè)(例如信號(hào)測(cè)量定時(shí)器 (SMT))需要多達(dá) 50 頁(yè),這幾乎是描述實(shí)際 PIC 內(nèi)核及其整個(gè)指令集所需的頁(yè)數(shù)的兩倍。

Raspberry Pi 方面的問題類似,只是按比例放大(高達(dá) 10 倍)。這里有幾個(gè)數(shù)據(jù)表需要考慮,每個(gè)數(shù)據(jù)表只記錄片上系統(tǒng) (SoC) 的一個(gè)組件,例如外圍設(shè)備、GPU 等。僅內(nèi)核就占據(jù)了 750 多頁(yè)。

不能指望沒有人會(huì)閱讀或簡(jiǎn)單地跟上如此大量的信息。特別是嵌入式開發(fā)人員總是承受著巨大的壓力,要在更短的時(shí)間內(nèi)交付應(yīng)用程序以實(shí)現(xiàn)最快的上市時(shí)間。

迷失在嵌入式軟件架構(gòu)的層層中

解決信息泛濫的一種常見解決方案是使用分層架構(gòu)和抽象硬件細(xì)節(jié)的標(biāo)準(zhǔn)化外圍庫(kù)對(duì)應(yīng)用程序進(jìn)行分區(qū)。這些層可以表示為一個(gè)整齊的堆棧,“應(yīng)用程序”位于硬件抽象層 (HAL) 的頂部。如果需要,可以進(jìn)一步細(xì)化堆棧以識(shí)別 HAL 和其上的中間件層,以實(shí)現(xiàn)常見的服務(wù)/功能,例如網(wǎng)絡(luò)、文件系統(tǒng)和圖形用戶界面 (GUI)。

該軟件架構(gòu)模型源自“計(jì)算”世界,適用于大多數(shù)通用情況。不幸的是,它在嵌入式應(yīng)用程序中存在兩個(gè)基本缺點(diǎn):

1. 分層架構(gòu)簡(jiǎn)化了文檔膨脹問題,只要關(guān)注中間件層提供的標(biāo)準(zhǔn)功能即可。在應(yīng)用范圍的低端,中間件層非常薄,如果存在的話,結(jié)果主要是混淆。因此,開發(fā)人員必須依靠大型應(yīng)用程序編程接口 (API) 形式的 HAL 文檔,這是一個(gè)同樣龐大的材料體,可以跨越數(shù)千頁(yè),而不會(huì)真正揭示設(shè)備的細(xì)節(jié)。當(dāng)出現(xiàn)問題時(shí),開發(fā)人員會(huì)陷入困境或被迫深入研究大量外來(lái)代碼。

2. HAL 層為標(biāo)準(zhǔn)中間件服務(wù)提供了巨大的支持,但由于其剛性性質(zhì),通常最終會(huì)抹去特定設(shè)備的獨(dú)特差異化功能。否則,這些功能可以為特定應(yīng)用程序提供技術(shù)優(yōu)勢(shì),并且可能是首先選擇特定設(shè)備的原因。

代碼生成器:讓機(jī)器做它最擅長(zhǎng)的事情!

由于堆疊的軟件架構(gòu)會(huì)導(dǎo)致性能損失和獨(dú)特功能的扁平化,現(xiàn)代 MCU 開發(fā)人員在使用標(biāo)準(zhǔn)化 HAL 時(shí)獲得的收益會(huì)減少。然而,強(qiáng)調(diào)快速開發(fā)的嵌入式控制市場(chǎng)的新一代代碼生成器為解決這個(gè)難題提供了一條出路。

代碼配置器/生成器做機(jī)器最擅長(zhǎng)的事情,顯著縮短或消除重復(fù)和容易出錯(cuò)的搜索數(shù)據(jù)表以配置硬件外圍設(shè)備和構(gòu)建 HAL 的過程。用戶還可以從單個(gè)代碼配置器界面了解特定的硬件外圍功能,從而完全減少對(duì)數(shù)據(jù)表的需求。因此,HAL 成為嵌入式開發(fā)項(xiàng)目的靈活組成部分,可以在工程師優(yōu)化應(yīng)用程序性能時(shí)快速且頻繁地重新生成。

代碼配置器工具的顯著特點(diǎn)包括:

· 與流行的 IDE 完全集成,允許工具(和用戶)了解項(xiàng)目上下文(涉及的型號(hào)/部件號(hào)、使用中的中間件庫(kù)等)

· 支持獨(dú)特而復(fù)雜的外圍設(shè)備,例如前面提到的 SMT。例如,SMT 可以在一個(gè)頁(yè)面/對(duì)話框中直觀地呈現(xiàn)給用戶,其中包括一些直觀的滾動(dòng)列表和復(fù)選框(圖 2)。

· 一個(gè)模板引擎,將用戶配置轉(zhuǎn)換為一小組完全定制的函數(shù),減少必須傳遞給每個(gè)函數(shù)的參數(shù)數(shù)量,并保證大多數(shù)硬件抽象在編譯時(shí)靜態(tài)執(zhí)行。生成的 API 是最小的,需要學(xué)習(xí)的功能很少,并利用一致和直觀的命名約定。這提高了性能和代碼密度(代碼示例 1)。

· 由非常短的(C 語(yǔ)言)源文件組成的輸出,用戶可以完全檢查,提供學(xué)習(xí)和手動(dòng)優(yōu)化的機(jī)會(huì)?,F(xiàn)代代碼配置器以靈活的方式將生成的代碼與用戶代碼混合在一起,從而保持完整性并允許充分利用高級(jí)硬件功能。

poYBAGK79OaAYSddAAEt40zaQYU538.png

【圖2 | 此處顯示的是 Microchip Technology, Inc. 的 MPLAB 代碼配置器 (MCC) 中的信號(hào)測(cè)量定時(shí)器 (SMT) 選項(xiàng)的屏幕截圖。

pYYBAGK79O6AHfHpAAMWWwlgwfc288.png

[代碼示例 1 | SMT 外圍源文件 (smt1.c) 的此示例部分顯示了 MCC 生成的代碼的節(jié)儉性。]

一旦外圍配置完成,開發(fā)人員可以立即專注于應(yīng)用程序。使用代碼生成器,嵌入經(jīng)典的“Hello, World!” 示例(總是轉(zhuǎn)換為閃爍的 LED)變成了兩行代碼練習(xí)。

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5NzY1YzQ3NDQ3OWMucG5nJnZlcnNpb249MDAwMCZzaWc9ZTAyZTUyYTlkYjcwNzMxM2VlZjAwM2UxM2JhYzhiNjE253D

[代碼示例 2 | 創(chuàng)建“Hello, World!”只需要兩行代碼。使用 MCC 的應(yīng)用程序。]

在《In 10 Lines of Code》一書中可以找到其他 20 個(gè)有效使用快速開發(fā)工具的實(shí)際示例。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    22905

    瀏覽量

    650097
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16666

    瀏覽量

    347759
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4021

    瀏覽量

    217021
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用C2000?嵌入式模式生成器(EPG)進(jìn)行設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《使用C2000?嵌入式模式生成器(EPG)進(jìn)行設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:13 ?0次下載
    使用C2000?<b class='flag-5'>嵌入式</b>模式<b class='flag-5'>生成器</b>(EPG)進(jìn)行設(shè)計(jì)

    ARM MCU嵌入式開發(fā) | 基于國(guó)產(chǎn)GD32F10x芯片+嵌入的開始

    嵌人系統(tǒng)的分類方法是依照系統(tǒng)主控制芯片的復(fù)雜性進(jìn)行分類??梢苑譃樾?b class='flag-5'>嵌入式系統(tǒng)、中等規(guī)模嵌入式系統(tǒng)、復(fù)雜
    發(fā)表于 09-09 14:48

    Freepik攜手Magnific AI推出AI圖像生成器

    近日,設(shè)計(jì)資源巨頭Freepik攜手Magnific AI,共同推出了革命的AI圖像生成器——Freepik Mystic,這一里程碑的發(fā)布標(biāo)志著AI圖像創(chuàng)作領(lǐng)域邁入了一個(gè)全新的高度
    的頭像 發(fā)表于 08-30 16:23 ?947次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-在線二維碼生成器

    在線二維碼生成器允許用戶將文本、網(wǎng)址、圖片或其他數(shù)據(jù)轉(zhuǎn)換為二維碼形式。二維碼是一種特殊類型的條形碼,它可以通過掃描來(lái)快速識(shí)別和讀取信息。在線二維碼生成器使用特定的算法將這些信息編碼成二維碼,用戶可以
    發(fā)表于 04-24 17:00

    Minitab 交互表格生成器

    生成器
    MinitabUG
    發(fā)布于 :2024年04月03日 15:58:54

    RL78的代碼生成器發(fā)布說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《RL78的代碼生成器發(fā)布說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 01-30 09:48 ?0次下載
    RL78的<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b>發(fā)布說(shuō)明

    MicroClock可編程 時(shí)鐘生成器5X1503數(shù)據(jù)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《MicroClock可編程 時(shí)鐘生成器5X1503數(shù)據(jù)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 01-14 10:56 ?0次下載
    MicroClock可編程 時(shí)鐘<b class='flag-5'>生成器</b>5X1503數(shù)據(jù)手冊(cè)

    HKA5278 128音符旋律生成器一般說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《HKA5278 128音符旋律生成器一般說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 01-10 09:09 ?0次下載

    單片機(jī)代碼自動(dòng)生成器程序

    和輸入/輸出設(shè)備的芯片。它通常用于嵌入式系統(tǒng)中,能夠完成一系列特定的任務(wù)。開發(fā)人員編寫的單片機(jī)代碼負(fù)責(zé)指導(dǎo)單片機(jī)執(zhí)行相應(yīng)的任務(wù)。然而,編寫單片機(jī)代碼是一項(xiàng)繁瑣而容易出錯(cuò)的工作,代碼
    的頭像 發(fā)表于 01-08 14:12 ?2255次閱讀

    TSMaster報(bào)文發(fā)送的信號(hào)生成器操作說(shuō)明

    信號(hào)生成器功能是TSMaster分析中的報(bào)文發(fā)送模塊。信號(hào)生成器用于發(fā)送和配置每個(gè)CAN/LIN信號(hào)的值變化行為,簡(jiǎn)而言之,這是一個(gè)可以控制和調(diào)整CAN/LIN信號(hào)值的功能。我們可選擇的信號(hào)生成器
    的頭像 發(fā)表于 12-23 08:21 ?741次閱讀
    TSMaster報(bào)文發(fā)送的信號(hào)<b class='flag-5'>生成器</b>操作說(shuō)明

    嵌入式開發(fā)學(xué)習(xí)的十三法則分享

    有限性法則 嵌入式計(jì)算不僅需要網(wǎng)絡(luò)快速、一致的計(jì)算,而 且也要求系統(tǒng)能夠井然有序地將其執(zhí)行代碼和數(shù) 據(jù),存儲(chǔ)在一個(gè)“ 共同” 的“ 狹小” 的空間內(nèi)。 四、結(jié)構(gòu)法則 對(duì)于嵌入式
    發(fā)表于 12-21 06:32

    simulink自動(dòng)生成ROS代碼

    當(dāng)我們用simulink完成控制程序的搭建后,我們期望下一次可以直接對(duì)ROS進(jìn)行控制,而不是每次都需要啟動(dòng)matlab和simulink,因此我們可以使用simulink的代碼生成器生成ROS
    的頭像 發(fā)表于 11-15 17:53 ?656次閱讀
    simulink自動(dòng)<b class='flag-5'>生成</b>ROS<b class='flag-5'>代碼</b>

    真隨機(jī)數(shù)生成器TRNG外設(shè)模塊應(yīng)用要點(diǎn)

    國(guó)產(chǎn)車規(guī)微控制器原廠云途半導(dǎo)體設(shè)計(jì)和發(fā)售的YTM32ME微控制器上集成的真隨機(jī)數(shù)生成器TRNG(True Random Number Generator)外設(shè)模塊
    的頭像 發(fā)表于 11-08 14:52 ?1563次閱讀
    真隨機(jī)數(shù)<b class='flag-5'>生成器</b>TRNG外設(shè)模塊應(yīng)用要點(diǎn)

    Python生成器的使用方法

    ( x ) 10000 loops , best of 5 : 52.2 μ s per loop 生成器這么用其實(shí)是速度最慢的一種做法,花費(fèi)了52微秒。我們來(lái)看看如果我改成列表解析會(huì)怎么樣
    的頭像 發(fā)表于 11-03 15:41 ?387次閱讀

    如何使用PIC32MX/PIC32MZ/PIC32MM器件上的DMA CRC生成器

    電子發(fā)燒友網(wǎng)站提供《如何使用PIC32MX/PIC32MZ/PIC32MM器件上的DMA CRC生成器.pdf》資料免費(fèi)下載
    發(fā)表于 09-25 10:02 ?0次下載
    如何使用PIC32MX/PIC32MZ/PIC32MM器件上的DMA CRC<b class='flag-5'>生成器</b>