• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      嵌入式機(jī)器視覺系統(tǒng)優(yōu)化研究

      2012-07-13 06:29:18付連銳王兆仲
      電子設(shè)計(jì)工程 2012年14期
      關(guān)鍵詞:內(nèi)核應(yīng)用程序代碼

      付連銳,王兆仲

      (北京航空航天大學(xué)圖像處理中心 北京 100191)

      嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)[1]。嵌入式機(jī)器視覺系統(tǒng)是指用嵌入式計(jì)算機(jī)處理由光學(xué)傳感器接收到的圖像信息,以實(shí)現(xiàn)對物體的檢測和識(shí)別的裝置,如數(shù)碼相機(jī)、手持二維碼識(shí)別設(shè)備,體感交互游戲機(jī)等。由于機(jī)器視覺系統(tǒng)需要進(jìn)行大量復(fù)雜的數(shù)據(jù)運(yùn)算,因此目前大多數(shù)的機(jī)器視覺系統(tǒng)還是基于PC系統(tǒng)構(gòu)建,但隨著近年來嵌入式系統(tǒng)的高速發(fā)展,嵌入式機(jī)器視覺系統(tǒng)越來越多地應(yīng)用于工業(yè)檢測與控制、智能交通[2]、安防、醫(yī)療器械、機(jī)器人導(dǎo)航及消費(fèi)電子等領(lǐng)域。

      嵌入式機(jī)器視覺系統(tǒng)的性能主要取決于硬件和軟件兩方面。目前應(yīng)用于嵌入式機(jī)器視覺系統(tǒng)的硬件平臺(tái)主要有Intel基于x86架構(gòu)的Atom平臺(tái)、TI基于ARM-DSP的OMAP系列平臺(tái)、NVIDIA基于ARM-GeForce的 Tegra系列平臺(tái)、IBM等基于PowerPC的處理平臺(tái)等,其中ARM-DSP是一種高性價(jià)比的、應(yīng)用廣泛的體系結(jié)構(gòu)。除了硬件平臺(tái)之外,嵌入式操作系統(tǒng)的選擇對機(jī)器視覺系統(tǒng)的性能也很重要,如開機(jī)時(shí)間,系統(tǒng)穩(wěn)定性等。嵌入式操作系統(tǒng)的種類比較多,其中較為 流 行 的 主 要 有 μC/OS、Windows CE、VxWorks 、Android、iOS、Meego、QNX和 Linux等。在諸多嵌入式操作系統(tǒng)中,Linux以其內(nèi)核穩(wěn)定、支持多種硬件平臺(tái)、完全免費(fèi)、源代碼完全開放、可裁剪定制、易于移植的特性,成為大多數(shù)廠家的絕佳選擇。此外,由于嵌入式機(jī)器視覺系統(tǒng)具有處理數(shù)據(jù)量大,算法復(fù)雜的特點(diǎn),對嵌入式機(jī)器視覺應(yīng)用程序的優(yōu)化也至關(guān)重要。

      文中以采用ARM-DSP結(jié)構(gòu)的Beagleboard-xM開發(fā)板為例,構(gòu)建了用于目標(biāo)檢測跟蹤的嵌入式機(jī)器視覺系統(tǒng),從操作系統(tǒng)和機(jī)器視覺應(yīng)用程序方面對系統(tǒng)進(jìn)行優(yōu)化,并充分利用Cotex-A處理器的NEON加速技術(shù),顯著提高了嵌入式機(jī)器視覺系統(tǒng)的性能。

      1 系統(tǒng)軟硬件組成

      文中所采用的嵌入式機(jī)器視覺系統(tǒng)的硬件組成如圖1所示。其中DM3730處理器是由TI生產(chǎn)的單片系統(tǒng)(SoC)處理器[3],采用了 POP(Package on Package)封裝技術(shù),內(nèi)含 1G主頻的ARM Cortex-A8,主頻800 M的TMS320C64+內(nèi)核和512 M的LPDDR內(nèi)存。該處理器有較強(qiáng)的多媒體圖像、視頻處理能力,特別適合于構(gòu)建嵌入式機(jī)器視覺系統(tǒng)。Beagleboard-xM沒有Flash,系統(tǒng)是從MicroSD卡啟動(dòng)的。PMIC為電源與音頻管理模塊,它通過McBSP總線與處理器連接。攝像頭和以太網(wǎng)數(shù)據(jù)通過USB接口傳給處理器,處理器運(yùn)行目標(biāo)檢測與跟蹤程序,并將處理結(jié)果送到LCD顯示。Minicom用于和上位機(jī)進(jìn)行通訊,便于調(diào)試。

      圖1 嵌入式機(jī)器視覺系統(tǒng)的硬件結(jié)構(gòu)圖Fig.1 Hardware framework of embedded vision system

      圖2為系統(tǒng)的軟件結(jié)構(gòu)圖。在嵌入式Linux內(nèi)核中包含了對CPU、USB攝像頭、電源管理設(shè)備及USB以太網(wǎng)等的驅(qū)動(dòng)支持。其中V4L是Linux內(nèi)核中關(guān)于視頻設(shè)備的API接口,UVC(USB Video Class)是為USB攝像頭提供即插即用功能的驅(qū)動(dòng)模塊,在此基礎(chǔ)上將開源的跨平臺(tái)機(jī)器視覺庫OpenCV2.2移植到了嵌入式平臺(tái)上,并在應(yīng)用程序中實(shí)現(xiàn)對視頻信號(hào)的采集和處理。

      圖2 嵌入式機(jī)器視覺系統(tǒng)的軟件結(jié)構(gòu)圖Fig.2 Software framework of embedded vision system

      2 嵌入式Linux操作系統(tǒng)優(yōu)化

      嵌入式系統(tǒng)硬件資源較為有限,作為以應(yīng)用為中心的專用計(jì)算機(jī)系統(tǒng),需要對其在啟動(dòng)速度、實(shí)時(shí)性、系統(tǒng)尺寸、電源管理等方面進(jìn)行優(yōu)化[4]。近年來,Linux憑借其優(yōu)良特性廣泛地應(yīng)用于嵌入式系統(tǒng)。但是,作為一種原本為PC機(jī)設(shè)計(jì)的操作系統(tǒng),設(shè)計(jì)者開始并沒有考慮嵌入式應(yīng)用對啟動(dòng)速度的要求,導(dǎo)致其典型的啟動(dòng)時(shí)間一般在幾十秒或以上,這對用戶來說是不能容忍的。此外,隨著Linux內(nèi)核的不斷膨脹,啟動(dòng)時(shí)間越來越長。因此,加快啟動(dòng)速度已經(jīng)成為嵌入式Linux系統(tǒng)亟待解決的關(guān)鍵問題之一。

      由于成本的考慮,Beagleboard-xM平臺(tái)沒有Flash,它是從MicroSD卡啟動(dòng)的。嵌入式Linux系統(tǒng)啟動(dòng)時(shí)序如表1所示。系統(tǒng)上電后,內(nèi)部ROM程序會(huì)從SD卡加載x-loader到SRAM。x-loader負(fù)責(zé)初始化系統(tǒng)(如時(shí)鐘、RAM等),并將uboot從SD卡中加載到RAM。u-boot負(fù)責(zé)將內(nèi)核鏡像從SD卡加載到RAM中。內(nèi)核解壓并運(yùn)行,掛載文件系統(tǒng),執(zhí)行init進(jìn)程,登錄系統(tǒng),最終完成系統(tǒng)的啟動(dòng)。編寫perl腳本記錄串口輸出的時(shí)間,開機(jī)啟動(dòng)過程各部分耗時(shí)如圖3所示。在系統(tǒng)啟動(dòng)過程中,內(nèi)核解壓與運(yùn)行時(shí)間、系統(tǒng)自啟動(dòng)項(xiàng)加載時(shí)間占了整個(gè)系統(tǒng)啟動(dòng)的大部分時(shí)間。

      表1 嵌入式Linux啟動(dòng)時(shí)序Tab.1 Embedded Linux boot sequence

      圖3 嵌入式機(jī)器視覺應(yīng)用程序優(yōu)化結(jié)果Fig.3 Effect of embedded vision application optimization

      本文對嵌入式Linux操作系統(tǒng)采取的優(yōu)化策略如下。

      1)修改并重新編譯u-boot源碼,取消開機(jī)3 s等待時(shí)間

      系統(tǒng)會(huì)檢測在開機(jī)等待時(shí)間內(nèi)用戶按鈕是否被按下,如果被按下,則可以進(jìn)行設(shè)置系統(tǒng)環(huán)境變量,修改啟動(dòng)選項(xiàng)等操作。這里可以跳過這一步,減少開機(jī)時(shí)間。

      2)裁剪內(nèi)核中不必要的功能部分

      嵌入式Linux操作系統(tǒng)內(nèi)核中除了進(jìn)程管理、內(nèi)存管理、任務(wù)調(diào)度等核心部分外,還提供了多種文件系統(tǒng)、網(wǎng)絡(luò)、硬件驅(qū)動(dòng)、內(nèi)核調(diào)試等功能模塊,但它們并非必不可少,例如手持移動(dòng)終端通常不需要NTFS等文件系統(tǒng),也不需要RAID和SCSI設(shè)備支持[5]。所以,根據(jù)嵌入式系統(tǒng)應(yīng)用的具體需求配置Linux內(nèi)核才能減小Linux內(nèi)核的靜態(tài)映像體積,同時(shí)也能夠相應(yīng)減少這些功能模塊運(yùn)行時(shí)間的開銷。

      3)采用“-Os-mthumb”編譯選項(xiàng)進(jìn)行優(yōu)化以減小內(nèi)核鏡像大小

      -Os是gcc優(yōu)化選項(xiàng)中最深層次的優(yōu)化,相當(dāng)于是對代碼進(jìn)行了-O2的優(yōu)化,但不增加代碼尺寸。-mthumb表示使用16位短指令集,它具有更高的代碼密度,即占用存儲(chǔ)空間小,僅為32位ARM代碼規(guī)格的65%,但其性能卻下降的很少。

      4)去掉內(nèi)核打印輸出

      Linux系統(tǒng)啟動(dòng)時(shí),一般使用串口控制臺(tái)或VGA控制臺(tái)打印內(nèi)核啟動(dòng)信息,打印速度取決于串口的速度和處理器的速度,這在大多數(shù)嵌入式系統(tǒng)中要用數(shù)百毫秒的時(shí)間。

      5)用buildroot構(gòu)建輕量級(jí)的根文件系統(tǒng)

      常用于構(gòu)建根文件系統(tǒng)的工具有OE(OpenEmbedded)和buildroot等。OE是重量型的交叉編譯系統(tǒng)工具,可以用來構(gòu)建復(fù)雜的根文件系統(tǒng),但配置和定制過程難度很大,而且要耗費(fèi)約20 G的硬盤空間和十幾個(gè)小時(shí)的編譯時(shí)間。buildroot則是一個(gè)相當(dāng)小巧靈活的交叉編譯工具,用它定制和調(diào)整軟件包十分方便,而且buildroot提供了類似 Linux kernel配置采用的配置菜單,易于使用。

      6)桌面環(huán)境使用X11而非Gnome或KDE

      X11即X Window系統(tǒng),它是一種可以用于Unix和 類Unix操作系統(tǒng)的位圖顯示視窗系統(tǒng)。Gnome和KDE是兩種相對復(fù)雜的桌面環(huán)境。對于嵌入式機(jī)器視覺系統(tǒng),如果用戶界面不追求華麗,可以使用更為簡潔的X11,以及簡單的桌面管理器twm。

      7)禁用或暫緩啟動(dòng)某些啟動(dòng)項(xiàng)

      為了加速啟動(dòng),可以禁用不必要的啟動(dòng)項(xiàng),甚至一些必要的啟動(dòng)項(xiàng)可以在系統(tǒng)完成登錄后再啟動(dòng)。具體可以通過修改/etc/init.d/下自啟動(dòng)項(xiàng)快捷方式名稱的方法實(shí)現(xiàn)。

      $cd/etc/init.d/

      $mv S20network K20network

      當(dāng)系統(tǒng)完成開機(jī)啟動(dòng)后再啟動(dòng)該項(xiàng)目,可以用如下命令:

      $K20network start

      如表2所示,經(jīng)過優(yōu)化后,內(nèi)核鏡像大小由 3.046 MB減小到2.797 MB,系統(tǒng)的啟動(dòng)時(shí)間(從復(fù)位到開啟應(yīng)用程序)由35.171 s縮短到10.056 s,基本滿足實(shí)際應(yīng)用的需要。嵌入式Linux操作系統(tǒng)優(yōu)化取得了明顯的效果。

      表2 嵌入式Linux系統(tǒng)啟動(dòng)時(shí)間表(帶網(wǎng)絡(luò)和攝像頭驅(qū)動(dòng))Tab.2 Boot time diagram of embedded Linux(with network and video driver)

      應(yīng)用在移動(dòng)載體上的嵌入式機(jī)器視覺系統(tǒng)通常對能耗也有較高的要求。Beagleboard-xM是一款功耗較低的產(chǎn)品,不需要風(fēng)扇冷卻。電源管理主要是由PMIC模塊實(shí)現(xiàn)的。另外,通過更改系統(tǒng)的顯示設(shè)置,如屏保時(shí)間、待機(jī)時(shí)間等,來降低能耗。

      3 應(yīng)用程序優(yōu)化

      機(jī)器視覺系統(tǒng)往往涉及大量復(fù)雜的計(jì)算,大多采用C/C++等高效率的語言進(jìn)行開發(fā)。嵌入式系統(tǒng)對應(yīng)用軟件的質(zhì)量要求很高,在嵌入式開發(fā)中須注意對代碼進(jìn)行優(yōu)化,盡可能地提高代碼效率。本文從算法、代碼效率以及處理器的特性等方面出發(fā),為開發(fā)高效率嵌入式機(jī)器視覺應(yīng)用程序提供了一些經(jīng)驗(yàn)。

      3.1 選擇合適的算法

      在機(jī)器視覺算法優(yōu)化過程中,速度和內(nèi)存不可兼得,要想得到較快的運(yùn)行速度必須適當(dāng)增加內(nèi)存空間的使用量。例如,在JPG圖像有Huffman編碼表,從YUV到RGB的變換也有變換表,本文計(jì)算梯度方向直方圖HOG時(shí)需要用到18個(gè)方向的三角函數(shù)。 這些運(yùn)算原本較復(fù)雜,采用查表的方法之后,雖然占用了內(nèi)存,但顯著提高了運(yùn)行速度。

      3.2 代碼效率的優(yōu)化

      代碼效率優(yōu)化的前提是要保證程序結(jié)果的正確性,在此基礎(chǔ)上對空間復(fù)雜度和時(shí)間復(fù)雜度進(jìn)行調(diào)整,以達(dá)到性能的提升。代碼效率優(yōu)化可以采用多種方法[6]。

      1)采用較短的數(shù)據(jù)類型

      本文實(shí)驗(yàn)中浮點(diǎn)數(shù)據(jù)類型用float代替double,目標(biāo)檢測結(jié)果基本不變,但是運(yùn)算量和所占用內(nèi)存空間都相應(yīng)減少。

      2)switch 語句優(yōu)化

      對于switch語句,編譯器是按照順序進(jìn)行條件比較,發(fā)現(xiàn)匹配時(shí),就跳轉(zhuǎn)到滿足條件的語句執(zhí)行。為了提高速度,可以把發(fā)生頻率較高的條件放在前面。

      3)用指針代替數(shù)組

      在許多情況下,可以用指針運(yùn)算代替數(shù)組索引,編譯后常常能產(chǎn)生又快又短的代碼。與數(shù)組索引相比,指針一般能使代碼速度更快,占用空間更少,這在使用多維數(shù)組時(shí)差異更明顯。

      4)用宏函數(shù)取代函數(shù)

      函數(shù)和宏函數(shù)的區(qū)別就在于,宏函數(shù)占用大量的空間,而函數(shù)占用了時(shí)間。當(dāng)函數(shù)被多次調(diào)用時(shí),會(huì)反復(fù)進(jìn)行壓棧和彈棧操作,從而消耗一些額外的時(shí)間。使用宏函數(shù)不會(huì)產(chǎn)生函數(shù)調(diào)用,所以僅僅占用了空間,不會(huì)增加額外的運(yùn)行時(shí)間。

      5)循環(huán)優(yōu)化:采用循環(huán)合并與循環(huán)展開

      當(dāng)兩個(gè)循環(huán)的負(fù)荷都不滿時(shí),可以把它們合并在一起組成一個(gè)循環(huán)。循環(huán)展開就是把循環(huán)計(jì)數(shù)小的循環(huán)展開,成為非循環(huán)形式的串行程序,或者把循環(huán)計(jì)數(shù)大的循環(huán)部分展開,減少循環(huán)迭代次數(shù),這樣可以節(jié)省用于循環(huán)設(shè)置、初始化、增加和校對循環(huán)計(jì)數(shù)器的時(shí)間。

      6)采用 Inline函數(shù)

      在C++中,當(dāng)函數(shù)前加關(guān)鍵字Inline的聲明,編譯器會(huì)用函數(shù)內(nèi)部的代碼替換所有對該函數(shù)的調(diào)用。這樣可以省去調(diào)用函數(shù)指令需要的執(zhí)行時(shí)間以及傳遞變元和傳遞過程需要的時(shí)間。通常,這種優(yōu)化在Inline函數(shù)被頻繁調(diào)用并且只包含較短代碼的時(shí)候最有效。

      7)使用增量和減量操作符

      在用到自增和自減運(yùn)算時(shí)應(yīng)盡量使用增量和減量操作符,因?yàn)樵隽糠Z句比賦值語句更快。

      3.3 充分利用處理器特性進(jìn)行加速

      ARM+DSP的組合在嵌入式開發(fā)中堪稱理想架構(gòu)。DSP可專門用于處理密集型信號(hào)處理需求、復(fù)雜的數(shù)學(xué)函數(shù)以及圖像處理算法,而ARM則可用于實(shí)現(xiàn)圖形用戶界面、網(wǎng)絡(luò)連接及系統(tǒng)控制等。上面的代碼優(yōu)化措施是通用的方法,如果針對處理器的特性對程序進(jìn)行優(yōu)化,可以得到更好的優(yōu)化效果。

      1)利用開發(fā)工具對DSP程序進(jìn)行優(yōu)化

      有很多算法在DSP平臺(tái)可以實(shí)現(xiàn),在ARM上也可以,但有些特定算法,如濾波、視頻編解碼等放在DSP上運(yùn)行的效率較高。以往的開發(fā)中對DSP程序的優(yōu)化更多是匯編程序的優(yōu)化,但用匯編語言做開發(fā)和優(yōu)化往往費(fèi)時(shí)又費(fèi)力。但是隨著開發(fā)工具的更新,現(xiàn)在的C代碼優(yōu)化效率可達(dá)到手工匯編的90%。TI提供的 C6EZRUN工具[7]可以使開發(fā)人員能在DSP上運(yùn)行ARM代碼,而無需修改,并且從ARM到DSP代碼的轉(zhuǎn)換效率非常高。TI的另一個(gè)開發(fā)工具C6EZAccel則提供了一個(gè)包括數(shù)百個(gè)DSP優(yōu)化型信號(hào)處理算法的程序庫,通過ARM API加快開發(fā)進(jìn)度。開發(fā)人員可以將更多的精力投入到算法設(shè)計(jì)中。

      2)充分利用ARM處理器的NEON技術(shù)進(jìn)行加速

      ARM高級(jí)單指令多數(shù)據(jù)(SIMD)擴(kuò)展亦稱NEON技術(shù)[8],它是一種由 ARM開發(fā)的 64/128位混合 SIMD體系結(jié)構(gòu),可以提升多媒體和信號(hào)處理應(yīng)用程序的性能。其關(guān)鍵功能包括對齊和未對齊數(shù)據(jù)訪問,支持整型定點(diǎn)和單精度浮點(diǎn)數(shù)據(jù)類型、與 ARM核心的緊密耦合,以及具有多個(gè)視圖的大型寄存器文件。NEON指令在ARM和Thumb-2中都可用。要生成NEON指令,必須在命令行中指定采用NEON技術(shù)的Cortex處理器。ARMv7之前的體系結(jié)構(gòu)不提供NEON支持。如果要對進(jìn)行優(yōu)化,需要增加編譯選項(xiàng)“-mcpu=cortex-a8-mfpu=neon”。

      3.4 應(yīng)用程序優(yōu)化結(jié)果

      在嵌入式實(shí)時(shí)程序設(shè)計(jì)時(shí)可以運(yùn)用上面介紹的一種或多種方法來優(yōu)化代碼。以上方法主要是為了提高代碼的執(zhí)行效率,但會(huì)增加代碼長度,降低可讀性。在嵌入式程序設(shè)計(jì)中應(yīng)合理地使用這幾種技術(shù)以達(dá)到較好的優(yōu)化效果。

      運(yùn)用上述方法,對基于HOG特征的物體檢測算法[9]進(jìn)行優(yōu)化,運(yùn)行時(shí)間如圖3所示。該算法是目前公認(rèn)的準(zhǔn)確率最高的目標(biāo)檢測算法。對汽車、大巴、自行車、行人的檢測結(jié)果如圖4所示。考慮到該算法的復(fù)雜性以及檢測精度的要求,我們采用的是浮點(diǎn)數(shù)優(yōu)化。結(jié)果表明,經(jīng)過優(yōu)化后程序運(yùn)行速度約為原來的2.5倍。

      4 結(jié)束語

      隨著嵌入式系統(tǒng)的高速發(fā)展,嵌入式機(jī)器視覺系統(tǒng)的應(yīng)用也越來越廣泛。如何把運(yùn)算量大、算法復(fù)雜的機(jī)器視覺應(yīng)用程序移植到嵌入式平臺(tái)上并進(jìn)行優(yōu)化設(shè)計(jì)是重要的課題。本文針對嵌入式機(jī)器視覺系統(tǒng)的特點(diǎn),在操作系統(tǒng)方面對內(nèi)核和文件系統(tǒng)進(jìn)行了精簡,在應(yīng)用程序方面做了大量的優(yōu)化,并充分利用Cotex-A處理器的NEON加速技術(shù),顯著提高了嵌入式機(jī)器視覺系統(tǒng)的性能,對嵌入式機(jī)器視覺系統(tǒng)的開發(fā)具有借鑒意義。

      圖4 基于HOG特征的物體檢測Fig.4 HOG feature based object detection

      [1]何立民.嵌入式系統(tǒng)的定義與發(fā)展歷史[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2004(1):6.

      HE Li-min.The definition and development history of embedded system[J].Microcontroller&Embedded System,2004(1):6.

      [2]Wafi Z N K,Ahmad R B,Paulraj M P.Highways traffic surveillance System (HTSS) using OpenCV[C]//Proceedings of IEEE Control and System Graduate Research Colloquium(ICSGRC),2010:44-48.

      [3]BeagleBoard.org.BeagleBoard-xM Rev C System Reference Manual(Revision C.1.0)[EB/OL].(2010-04-04).http://beagleboard.org.

      [4]Chung K H,Choi M S,Ahn K S.A study on the packaging for fast boot-up time in the embedded linux[C]//Proceedings of 13th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications,2007:89-94.

      [5]劉剛,趙劍川.Linux系統(tǒng)移植[M].北京:清華大學(xué)出版社,2011.

      [6]Bryant R E,O’Hallaron D R.Computer Systems:A Programmer’s Perspective[M].2nd Edition.New Jersey:Addison Wesley,2010.

      [7]Daniel Allred.Using the C6EZRun DSP Development Tool for DSP+ARM SoCs.[EB/OL]. (2011-05).http://www.ti.com/lit/an/sprabg1a/sprabg1a.pdf.

      [8]ARM Ltd.RealView?編譯工具編譯器參考指南[EB/OL].(2009).http://infocenter.arm.com/help/topic/com.arm.doc.dui 0348bc/DUI0348BC_rvct_comp_ref_guide.pdf.

      [9]Felzenszwalb P F,Girshick R B,McAllester D.Cascade object detection with deformable part models[C]//Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition,2010:2241-2248.

      猜你喜歡
      內(nèi)核應(yīng)用程序代碼
      萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      刪除Win10中自帶的應(yīng)用程序
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      姚安县| 松江区| 成武县| 怀集县| 阳江市| 建平县| 信丰县| 盐城市| 横峰县| 赤城县| 喜德县| 涟源市| 鸡东县| 卢龙县| 雅安市| 桐柏县| 巴林左旗| 福贡县| 潜山县| 彩票| 佛冈县| 房产| 内黄县| 泽库县| 平和县| 大足县| 柳林县| 石门县| 舟曲县| 苏尼特左旗| 台东市| 虹口区| 新密市| 奉节县| 陵水| 武平县| 沙河市| 北流市| 彭阳县| 扬州市| 休宁县|