在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

如何提高開源嵌入式處理應用程序的性能

電子設(shè)計 ? 來源:郭婷 ? 作者:電子設(shè)計 ? 2019-04-03 08:34 ? 次閱讀

隨著“開源”C / C ++算法成為嵌入式處理應用程序中基于版稅的代碼越來越受歡迎的替代方案,它們帶來了新的技術(shù)挑戰(zhàn)。其中最重要的是如何優(yōu)化所獲取的代碼以在所選處理器上良好地工作。這個問題是至關(guān)重要的,因為為給定處理器系列編寫的編譯器將利用該處理器的優(yōu)勢,可能會犧牲其他領(lǐng)域的低效率。當在不同平臺上直接運行相同的算法時,性能可能會降低。本文將探討將此類開源算法移植到ADI公司的Blackfin ?處理器,并在此過程中概述導致代碼優(yōu)化的“攻擊計劃”。

什么是開源?

通常理解的“開源”定義是指任何帶有源代碼的項目,可供其他程序員使用。開源軟件通常在軟件程序員社區(qū)內(nèi)協(xié)作開發(fā)并自由分發(fā)。例如,Linux操作系統(tǒng)就是以這種方式開發(fā)的。如果一切順利,最終的努力提供了一個不斷發(fā)展,強大的應用程序,經(jīng)過充分測試,因為許多不同的應用程序利用了代碼。鼓勵程序員使用代碼,因為他們不必為此付費或自行開發(fā),從而加快了他們的項目進度。他們成功使用該代碼提供了進一步的測試信息。

“開源”的認證標志由開源倡議(OSI)所有。如果分發(fā)條款符合OSI的開源定義,那么開發(fā)為可自由共享和發(fā)展的代碼可以使用開源商標。這要求根據(jù)某些指導原則將軟件重新分發(fā)給其他人。例如,在通用公共許可證(GPL)下,必須提供源代碼,以便其他開發(fā)人員能夠改進或發(fā)展它。

什么是Ogg?

整個開發(fā)人員社區(qū)都致力于為數(shù)字媒體創(chuàng)建開放標準和應用程序。其中一個組織是Xiph.Org Foundation,一家非營利性公司,其目的是支持和開發(fā)免費,開放的協(xié)議和軟件,以服務于公共,開發(fā)和商業(yè)市場。這個傘式組織(見圖1)負責監(jiān)督視頻 - (Theora),音樂等技術(shù)的管理 - (有損Vorbis和無損Flac),以及語音(Speex)編解碼器。

如何提高開源嵌入式處理應用程序的性能

術(shù)語Ogg表示保存多媒體數(shù)據(jù)的容器格式。它通常用作生成數(shù)據(jù)的特定編解碼器的前綴。我們將在這里討論的音頻編解碼器Vorbis使用Ogg將其比特流存儲為文件,因此它通常被稱為“Ogg Vorbis”。事實上,一些便攜式媒體播放器被宣傳為支持OGG文件,其中“Vorbis”部分是隱含的。下面討論的語音編解碼器Speex也使用Ogg格式將其比特流存儲為計算機上的文件。但是,互聯(lián)網(wǎng)協(xié)議語音(VoIP)和其他實時通信系統(tǒng)不需要文件存儲功能,并且使用像實時傳輸協(xié)議(RTP)這樣的網(wǎng)絡(luò)層來封裝這些流。因此,即使Vorbis通過多播分發(fā)服務器通過網(wǎng)絡(luò)傳輸也會丟失其Ogg shell。

什么是Vorbis?

Vorbis 是一種完全開放,無專利,免版稅的音頻壓縮格式。在許多方面,它在功能上與普遍存在的MPEG-1/2第3層(MP3)格式和較新的MPEG-4(AAC)格式非常相似。該編解碼器設(shè)計用于16至128 kbps /通道的可變比特率的中高質(zhì)量(8 kHz至48 kHz帶寬,> 16位,復音)音頻,因此它是音樂的理想格式。

最初的Vorbis實現(xiàn)是使用浮點運算開發(fā)的,主要是因為編程容易導致更快的發(fā)布。由于大多數(shù)電池供電的嵌入式系統(tǒng)(如便攜式MP3播放器)使用成本更低,電池效率更高的定點處理器,開源開發(fā)人員社區(qū)創(chuàng)建了Vorbis解碼器的定點實現(xiàn)。被稱為 Tremor 的定點Vorbis解碼器的源代碼是根據(jù)許可證發(fā)布的,允許將其合并到開源和商業(yè)系統(tǒng)中。

在選擇特定的用于移植Vorbis解碼器的定點架構(gòu),分析從壓縮比特流中恢復音頻所涉及的處理類型非常重要。 Vorbis解碼過程(和其他類似算法)的通用處理器流程如圖2所示。與許多其他解碼算法一樣,有兩個主要階段:前端和后端。

如何提高開源嵌入式處理應用程序的性能

< p>在前端階段,主要活動是標頭和數(shù)據(jù)包解包,表查找和霍夫曼解碼。這種操作涉及大量條件代碼和相對大量的程序空間,因此嵌入式開發(fā)人員通常使用微控制器作為前端。

后端處理由過濾函數(shù),逆變換和一般向量運算定義。與前端階段相比,后端階段涉及更多的循環(huán)結(jié)構(gòu)和內(nèi)存訪問,通常使用較少量的代碼。由于這些原因,嵌入式系統(tǒng)中的后端處理歷來由成熟的DSP主導。

Blackfin處理器架構(gòu)統(tǒng)一了微控制器(MCU)和DSP功能,因此不再需要兩個單獨的設(shè)備。它可以有效地用于在單個芯片上實現(xiàn)前端和后端處理。

什么是Speex?

Speex 是開放式的-source,專利用于語音的專利音頻壓縮格式。雖然Vorbis用于壓縮所有類型的音樂和音頻,但Speex僅針對語音。出于這個原因,Speex在相同質(zhì)量水平的語音上可以取得比Vorbis更好的結(jié)果。

正如Vorbis與基于版稅的算法(如MP3和AAC)競爭一樣,Speex在語音編解碼器市場中與GSM-EFR和G.72x算法共享空間,例如G.729和G.722。 Speex還具有許多其他編解碼器中不存在的功能。這些包括可變比特率(VBR),在同一比特流(8 kHz,16 kHz和32 kHz)中集成多個采樣率,以及立體聲編碼支持。此外,Speex的最初設(shè)計目標是促進融入互聯(lián)網(wǎng)應用程序,因此它是VoIP電話系統(tǒng)的一個非常強大的組件。

除了其獨特的技術(shù)特性,Speex還具有成本的主要優(yōu)勢“沒有“ - 可以分發(fā)和修改以符合特定的應用程序。源代碼以類似于Vorbis的許可證分發(fā)。由于項目的維護者意識到將Speex嵌入到小型定點處理器中的重要性,因此在主代碼分支中引入了定點實現(xiàn)。

在Blackfin處理器上優(yōu)化Vorbis和Speex

當現(xiàn)有應用程序(如Vorbis或Speex)移植到新處理器時,立即“開箱即用”代碼性能是最重要的考慮因素。但是,軟件工程師可以通過熟悉可用于優(yōu)化整體性能的眾多技術(shù)來獲得巨大回報。有些只需要很少的額外努力。

將任何軟件移植到Blackfin等嵌入式處理器的第一步是定制低級I / O例程以滿足系統(tǒng)需求。例如,Vorbis和Speex的參考代碼假定數(shù)據(jù)源自文件和處理后的輸出存儲到文件中(主要是因為這兩種實現(xiàn)最初都是在Unix / Linux系統(tǒng)上運行的,其中文件是I / O例程可用)。然而,在嵌入式媒體系統(tǒng)中,輸入和/或輸出通常連接到在數(shù)字和現(xiàn)實模擬域之間轉(zhuǎn)換的A / D和D / A 數(shù)據(jù)轉(zhuǎn)換器。圖3顯示了可能基于Vorbis的媒體播放器實現(xiàn)的概念性概述。輸入比特流從閃存?zhèn)鬏敚獯a器輸出驅(qū)動音頻DAC。此外,雖然一些媒體應用程序(例如,便攜式音樂播放器)仍然使用文件來存儲數(shù)據(jù),但許多系統(tǒng)用網(wǎng)絡(luò)連接替換存儲。

如何提高開源嵌入式處理應用程序的性能

當優(yōu)化像Vorbis解碼器這樣的系統(tǒng)時有效地運行,有一個有組織的攻擊計劃是一個好主意。一種可能性是首先從C內(nèi)優(yōu)化算法,然后簡化系統(tǒng)數(shù)據(jù)流,最后在裝配級別調(diào)整代碼的各個部分。圖4通過連續(xù)的優(yōu)化步驟說明了處理器負載的代表性減少,并顯示了該方法的效率。

如何提高開源嵌入式處理應用程序的性能

編譯器優(yōu)化

可能是最有用的代碼優(yōu)化工具是一個很好的探測器。使用VisualDSP ++ for Blackfin中的統(tǒng)計 profiler ,程序員可以快速關(guān)注在處理器執(zhí)行代碼時變得明顯的熱點。在許多實現(xiàn)中,20%的代碼占用了80%的處理時間。關(guān)注這些關(guān)鍵部分會產(chǎn)生最高的邊際回報。事實證明,循環(huán)是Vorbis等媒體算法優(yōu)化的主要候選者,因為密集數(shù)字運算通常發(fā)生在它們內(nèi)部。

還有全局的代碼優(yōu)化方法。首先,編譯器可以優(yōu)化內(nèi)存保護或速度。此外,可以考慮將函數(shù)自動內(nèi)聯(lián)到C代碼中的匯編指令。 (編譯器的inline關(guān)鍵字用于指示函數(shù)應該具有在調(diào)用點內(nèi)聯(lián)生成的代碼。這樣做可以避免各種成本,例如程序流延遲,函數(shù)入口和退出指令以及參數(shù)傳遞開銷。)這也會創(chuàng)建在空間和速度之間進行權(quán)衡。最后,像Blackfin可用的編譯器可以使用兩階段過程來導出單個項目中各種源文件之間的關(guān)系,以進一步加快代碼執(zhí)行速度(過程間分析)。

如上所述,大多數(shù)媒體算法參考軟件都使用浮點運算。但考慮到使用分數(shù)定點機器編寫的軟件仍然錯過了一個關(guān)鍵部分。大多數(shù)編解碼算法的首選語言是C語言,但C語言并不“本地”支持使用分數(shù)定點數(shù)據(jù)。因此,許多分數(shù)定點算法都使用整數(shù)數(shù)學進行仿真。這可能使代碼具有高度可移植性,但它不能通過使用特定于機器的編譯器構(gòu)造重寫某些數(shù)學函數(shù)來獲得可達到的性能,以獲得最高的計算效率。

說明這一點的具體示例如圖5.左欄顯示了適用于所有整數(shù)機器的模擬分數(shù)算術(shù)的C代碼和Blackfin編譯器輸出。執(zhí)行32位小數(shù)乘法的一次調(diào)用需要80個周期。右欄顯示了利用(mult_fr1x32x32)可獲得的性能改進,這是Blackfin編譯器的一個內(nèi)在函數(shù),它利用了底層的小數(shù)硬件。通過這種相當容易的修改,可以實現(xiàn)86%的加速。

如何提高開源嵌入式處理應用程序的性能

系統(tǒng)優(yōu)化

系統(tǒng)優(yōu)化以正確的內(nèi)存布局開始。在最好的情況下,所有代碼和數(shù)據(jù)都適合處理器的L1內(nèi)存。遺憾的是,這并不總是可行,特別是在網(wǎng)絡(luò)應用程序中實現(xiàn)大型基于C的應用程序時。

真正的困境是處理器經(jīng)過優(yōu)化,可通過直接內(nèi)存獨立于核心移動數(shù)據(jù)訪問(DMA),但MCU程序員通常使用緩存模型運行。雖然核心提取是不可避免的現(xiàn)實,但使用DMA或高速緩存進行大型傳輸對于保持性能是必不可少的。

為了介紹討論,讓我們考慮Blackfin總線體系結(jié)構(gòu)固有支持的幾個屬性。第一個是在沒有核心干預的情況下仲裁請求的能力。因為內(nèi)部存儲器通常構(gòu)造在子庫中,所以DMA控制器和核心的同時訪問可以通過將數(shù)據(jù)放置在單獨的庫中而在單個周期中完成。例如,核心可以在一個子庫中的數(shù)據(jù)上操作,而DMA在第二子庫中填充新的緩沖器。在某些情況下,也可以同時訪問同一個子庫。

通常只有一條物理總線可用于訪問外部存儲器。結(jié)果,仲裁功能變得更加關(guān)鍵。下面是一個澄清挑戰(zhàn)的示例:在任何給定周期,可以訪問外部存儲器位置,以便在它作為傳入和傳出數(shù)據(jù)的源和目標的同時填充指令緩存。

指令執(zhí)行

Blackfin處理器使用分層存儲器架構(gòu),力求平衡具有不同大小和性能級別的多個級別的存儲器。片上 L1存儲器最接近核心處理器,以全時鐘速率工作。該存儲器可以配置為SRAM和/或高速緩存。需要最大確定性的應用可以在單核時鐘周期內(nèi)訪問片上SRAM。對于需要更大代碼尺寸的系統(tǒng),可提供額外的片上和片外存儲器 - 延遲增加。

SDRAM 比L1 SRAM慢,但存儲需要大型程序和數(shù)據(jù)緩沖區(qū)。但是,程序員可以通過多種方式利用快速L1內(nèi)存。如果目標應用程序直接適合L1存儲器,除了程序員將應用程序代碼直接映射到該存儲空間之外,不需要特殊操作 - 如上述Vorbis示例中那樣。

如果應用程序代碼對于內(nèi)部存儲器而言太大,例如,將網(wǎng)絡(luò)組件添加到Vorbis編解碼器時,可以使用緩存機制來允許程序員訪問更大,更便宜的外部存儲器。 緩存用作在需要時自動將代碼放入L1內(nèi)存的方法。一旦進入L1,代碼就可以在單個核心周期中執(zhí)行,就像它首先存儲在芯片上一樣。這個過程的關(guān)鍵優(yōu)勢在于程序員不必管理進出緩存的代碼移動。

當執(zhí)行的代碼本質(zhì)上是線性的時,使用緩存是最好的。指令緩存實際上執(zhí)行兩個角色。首先,它有助于以更有效的方式從外部存儲器預取指令。此外,由于高速緩存通常使用某種類型的“最近最少使用”算法運行,因此最常運行的指令通常保留在高速緩存中。因此,如果代碼已經(jīng)被提取一次并且尚未被替換,那么它將在下一次循環(huán)時準備好執(zhí)行。

謹慎的實時程序員沒有信任緩存來獲得最好的系統(tǒng)性能,因為如果執(zhí)行需要時指令塊不在高速緩存中,系統(tǒng)性能將降低。利用緩存鎖定機制可以避免此問題。當關(guān)鍵指令加載到緩存中時,可以鎖定緩存行以防止指令被替換。這允許程序員在緩存中保留他們所需的內(nèi)容,并允許緩存機制本身管理不太重要的指令。此功能使Blackfin處理器與其他信號處理器區(qū)別開來。

數(shù)據(jù)管理

在討論了如何最好地管理代碼以提高此應用程序的性能之后,我們現(xiàn)在考慮數(shù)據(jù)移動的選項。作為高速緩存的替代方案,可以使用獨立于內(nèi)核的DMA控制器將數(shù)據(jù)移入和移出L1存儲器。雖然內(nèi)核在一部分內(nèi)存上運行,但DMA正在引入下一個要處理的數(shù)據(jù)緩沖區(qū)。

Blackfin數(shù)據(jù)存儲器架構(gòu)對于整體系統(tǒng)性能與指令一樣重要 - 時鐘速度。由于多媒體應用程序中任何時候都經(jīng)常發(fā)生多次數(shù)據(jù)傳輸,因此總線結(jié)構(gòu)必須支持內(nèi)部和外部存儲器的所有區(qū)域的核心和DMA訪問。至關(guān)重要的是自動處理DMA控制器和內(nèi)核的仲裁,否則性能將大大降低。只需要設(shè)置DMA控制器,然后在數(shù)據(jù)準備好處理時響應中斷,就需要進行核心到DMA的交互。此外,數(shù)據(jù)緩存還可以提高整體性能。

在默認模式下,Blackfin執(zhí)行數(shù)據(jù)提取作為基本核心功能。雖然這通常是用于傳輸數(shù)據(jù)的最低效機制,但它導致最簡單的編程模型。快速暫存器內(nèi)存通常作為L1內(nèi)存的一部分提供;但對于較大的片外緩沖區(qū),如果核心必須獲取所有內(nèi)容,則訪問時間將受到影響。不僅需要多個周期來獲取數(shù)據(jù),而且核心也將忙著進行提取。

因此,在可能的情況下,應始終使用DMA來移動數(shù)據(jù)。 Blackfin處理器具有DMA功能,可在外設(shè)和內(nèi)存之間以及不同內(nèi)存段之間傳輸數(shù)據(jù)。例如,我們的Vorbis實現(xiàn)使用DMA將音頻緩沖區(qū)傳輸?shù)揭纛lD / A轉(zhuǎn)換器

對于此音頻應用程序,“旋轉(zhuǎn)門”雙緩沖區(qū)方案用于容納DMA引擎。由于串行端口DMA清空了循環(huán)雙緩沖器的一半,另一半填充有解碼的音頻數(shù)據(jù)。為了限制壓縮數(shù)據(jù)被解碼的速率,DMA中斷服務程序(ISR)修改解碼器可以讀取的信號量,以確保寫入雙緩沖區(qū)的特定一半是安全的。在缺乏操作系統(tǒng)(OS)的設(shè)計中,輪詢信號量意味著浪費CPU周期;但是,在操作系統(tǒng)下,調(diào)度程序可以切換到另一個任務(如用戶界面)以使處理器忙于實際工作。

如果不考慮數(shù)據(jù)一致性,使用DMA會導致錯誤的結(jié)果。因此,與音頻DAC關(guān)聯(lián)的音頻緩沖區(qū)被放置在非高速緩存的存儲空間中,因為除了要由DMA傳輸?shù)木彌_區(qū)之外,高速緩存可能保存的數(shù)據(jù)版本更新。

裝配優(yōu)化

優(yōu)化的最后階段與用匯編語言重寫開源C代碼的孤立段有關(guān)。通過程序集重寫提高性能的最佳選擇通常是中斷服務程序(ISR)和可重用的信號處理模塊。

在程序集中編寫中斷處理程序的動力是低效的ISR會降低其他中斷處理程序的響應速度。例如,某些音頻設(shè)計必須使用音頻ISR格式化為音頻DAC綁定的AC97數(shù)據(jù)。由于這種情況會定期發(fā)生,因此長音頻ISR會降低其他事件的響應速度。減少中斷處理程序循環(huán)計數(shù)的最佳方法是在匯編中重寫它。

可重用信號處理模塊的一個很好的例子是修改的離散余弦變換(MDCT)用于后端Vorbis處理,將時域信號轉(zhuǎn)換為頻域表示。編譯器永遠不會像熟練的匯編程序員那樣生成“緊”的代碼,因此MDCT的C版本效率低下。相同功能的匯編版本可以利用Blackfin架構(gòu)的硬件功能,例如單周期蝶形加/減和硬件位反轉(zhuǎn)。

今天,Vorbis和Speex的Blackfin端口都存在,可根據(jù)要求提供。這些端口在ADSP-BF533 EZ-KIT Lite上運行。在blackfin.uclinux.org上也可以找到μClinux的開源端口。它們共同實現(xiàn)了各種各樣的應用程序,這些應用程序可以集成免版稅的語音或音樂功能,同時保留足夠的處理空間以實現(xiàn)其他特性和功能。例如,新的ADSP-BF536和ADSP-BF537及其集成的以太網(wǎng)MAC為低成本的網(wǎng)絡(luò)音頻和語音應用打開了大門。很明顯,開源代碼預示著嵌入式處理領(lǐng)域的一場革命,Blackfin處理器有望充分利用這種情況。

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

    關(guān)注

    68

    文章

    19828

    瀏覽量

    233852
  • 嵌入式
    +關(guān)注

    關(guān)注

    5143

    文章

    19567

    瀏覽量

    315609
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2117

    瀏覽量

    74853
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    嵌入式應用程序進行性能優(yōu)化

    嵌入式系統(tǒng)由于受功耗、成本和體積等因素的制約,嵌入式微處理器的處理能力與桌面系統(tǒng)處理器相比也存在較大差距,故嵌入式系統(tǒng)對
    發(fā)表于 12-22 07:46

    嵌入式系統(tǒng)應用程序移植的研究

    隨著嵌入式系統(tǒng)的大量使用,對各類應用程序的需求也日益增長,為了避免應用程序的重復開發(fā),往往需要將基于某一嵌入式操作系統(tǒng)平臺的應用程序移植到另
    發(fā)表于 09-18 11:51 ?12次下載

    基于FPGA的原型系統(tǒng)的嵌入式應用程序

    嵌入式應用程序通常需要使用標準的微機和定制的接口。 本文講的是基于FPGA的原型系統(tǒng)的嵌入式應用程序。 Embedded applications usually require th
    發(fā)表于 05-22 14:48 ?21次下載
    基于FPGA的原型系統(tǒng)的<b class='flag-5'>嵌入式</b><b class='flag-5'>應用程序</b>

    MATLAB平臺的DSP嵌入式應用程序設(shè)計的研究

    MATLAB平臺的DSP嵌入式應用程序設(shè)計的研究
    發(fā)表于 10-19 13:22 ?7次下載
    MATLAB平臺的DSP<b class='flag-5'>嵌入式</b><b class='flag-5'>應用程序</b>設(shè)計的研究

    基于MATLAB平臺的DSP嵌入式應用程序設(shè)計的研究

    基于MATLAB平臺的DSP嵌入式應用程序設(shè)計的研究
    發(fā)表于 10-20 15:09 ?5次下載
    基于MATLAB平臺的DSP<b class='flag-5'>嵌入式</b><b class='flag-5'>應用程序</b>設(shè)計的研究

    如何為應用程序選擇嵌入式系統(tǒng)

    PC的性能和能力的應用程序嵌入式解決方案的前景發(fā)生了翻天覆地的變化,一切只為更好地服務于這些應用程序: (1)嵌入式系統(tǒng)技術(shù)和設(shè)計的演進
    發(fā)表于 10-20 16:27 ?0次下載

    基于嵌入式Linux應用程序開發(fā)詳解

    基于嵌入式Linux應用程序開發(fā)詳解
    發(fā)表于 10-25 14:17 ?12次下載
    基于<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b>開發(fā)詳解

    構(gòu)建和優(yōu)化嵌入式和物聯(lián)網(wǎng)應用程序

    構(gòu)建和優(yōu)化嵌入式,移動和物聯(lián)網(wǎng)應用程序
    的頭像 發(fā)表于 05-31 09:23 ?1940次閱讀

    ARM嵌入式處理器的GNU工具應用程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是ARM嵌入式處理器的GNU工具應用程序免費下載。
    發(fā)表于 07-05 16:11 ?7次下載
    ARM<b class='flag-5'>嵌入式</b><b class='flag-5'>處理</b>器的GNU工具<b class='flag-5'>應用程序</b>免費下載

    增強開源應用程序中的處理性能

    增強開源應用程序中的處理性能
    發(fā)表于 05-15 13:41 ?4次下載
    增強<b class='flag-5'>開源</b><b class='flag-5'>應用程序</b>中的<b class='flag-5'>處理</b>器<b class='flag-5'>性能</b>

    嵌入式Linux應用程序例程

    嵌入式Linux應用程序例程(arm嵌入式開發(fā)步驟)-嵌入式Linux應用程序例程,有需要的可以參考!
    發(fā)表于 07-30 13:23 ?16次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b>例程

    《從實踐中學嵌入式Linux應用程序開發(fā)》pdf完整版資源分享

    《從實踐中學嵌入式Linux應用程序開發(fā)》內(nèi)容簡介: 《從實踐中學嵌入式linux應用程序開發(fā)》結(jié)合大量實例,講解了嵌入式linux
    發(fā)表于 11-01 17:07 ?0次下載
    《從實踐中學<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b>開發(fā)》pdf完整版資源分享

    嵌入式Linux應用程序開發(fā)-(1)第一個嵌入式QT應用程序

    第一個嵌入式QT應用程序在成功安裝 Qt Creator 開發(fā)環(huán)境后,我們通過一個簡單的嵌入式Qt應用程序,來說明一下如何構(gòu)建和編譯一個Qt界面應用
    發(fā)表于 11-01 17:21 ?16次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b>開發(fā)-(1)第一個<b class='flag-5'>嵌入式</b>QT<b class='flag-5'>應用程序</b>

    嵌入式Linux應用程序開發(fā)之圖形編程

    嵌入式Linux應用程序開發(fā)之圖形編程資料分享。
    發(fā)表于 04-12 14:50 ?2次下載

    使用微型嵌入式設(shè)備實現(xiàn)嵌入式語音識別應用程序

    電子發(fā)燒友網(wǎng)站提供《使用微型嵌入式設(shè)備實現(xiàn)嵌入式語音識別應用程序.zip》資料免費下載
    發(fā)表于 12-09 10:00 ?0次下載
    使用微型<b class='flag-5'>嵌入式</b>設(shè)備實現(xiàn)<b class='flag-5'>嵌入式</b>語音識別<b class='flag-5'>應用程序</b>
    主站蜘蛛池模板: 亚洲一区亚洲二区 | 狠狠色丁香久久综合网 | 午夜影院免费观看视频 | 在线免费看片a | 天堂电影在线 | 白丝丝袜高跟国产在线视频 | 亚洲日本在线观看视频 | 思思99re66在线精品免费观看 | 丁香六月激情 | 无限国产资源 | 热99精品 | 婷婷在线影院 | 国产精品九九久久一区hh | 国产欧美亚洲精品第二区首页 | 男女交性高清视频无遮挡 | 中文字幕色| 免费一级欧美在线观看视频片 | 黄色综合 | 天天色资料 | 天天躁夜夜躁狠狠躁2021西西 | julia一区二区三区中文字幕 | xxxx日本老师hd | 亚洲嫩草影院在线观看 | 黄色在线视频免费看 | 欧美日本一区二区三区 | 67pao强力打造高清免费 | 99久热只有精品视频免费观看17 | 亚洲va老文色欧美黄大片人人 | 国产亚洲精品久久yy5099 | 三级视频网站在线观看 | 台湾香港澳门三级在线 | 一级一黄在线观看视频免费 | 日韩成人午夜 | 国产三级网站在线观看 | 国产高清一区二区三区四区 | 色狠狠色综合久久8狠狠色 色狠狠网 | 奇米影视999 | 一级做a爱片特黄在线观看免费看 | 欧美一级艳片视频免费观看 | 么公的好大好硬好深好爽视频 | 日韩欧美伦理 |