電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 2503|回復(fù): 0
收起左側(cè)

無(wú)錫嵌入式開(kāi)發(fā)培訓(xùn)_南京嵌入式培訓(xùn)地方_基于ARM和CPLD的嵌入式視覺(jué)系統(tǒng)設(shè)計(jì)

[復(fù)制鏈接]

2607

主題

2607

帖子

7472

積分

高級(jí)會(huì)員

Rank: 5Rank: 5

積分
7472
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-8-5 14:22:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
無(wú)錫嵌入式開(kāi)發(fā)培訓(xùn)_南京嵌入式培訓(xùn)地方_基于ARM和CPLD的嵌入式視覺(jué)系統(tǒng)設(shè)計(jì),   

  

  簡(jiǎn)介:搭建一種低成本的嵌入式視覺(jué)系統(tǒng),系統(tǒng)由CMOS圖像傳感器、CPLD、ARM7微處理器以及SRAM構(gòu)成。其中,CPLD識(shí)別時(shí)序,解決了圖像采集系統(tǒng)存在的嚴(yán)格時(shí)序同步和雙CPU共享一片SRAM的總線(xiàn)競(jìng)爭(zhēng)問(wèn)題;用Verilog語(yǔ)言編寫(xiě)Mealy狀態(tài)機(jī)控制圖像數(shù)據(jù)寫(xiě)入SRAM,多路數(shù)據(jù)選擇器實(shí)現(xiàn)總線(xiàn)切換,避免了總線(xiàn)沖突。圖像處理算法注重效率,基于ARM實(shí)現(xiàn),系統(tǒng)最終工作速率為25幀/s。

  目前,關(guān)于視覺(jué)系統(tǒng)的研究已經(jīng)成為熱點(diǎn),也有開(kāi)發(fā)出的系統(tǒng)可供參考。但這些系統(tǒng)大多是基于PC機(jī)的,由于算法和硬件結(jié)構(gòu)的復(fù)雜性而使其在小型嵌入式系統(tǒng)中的應(yīng)用受到了限制。上述系統(tǒng)將圖像數(shù)據(jù)采集后,視覺(jué)處理算法是在PC機(jī)上實(shí)現(xiàn)的。隨著嵌入式微處理器技術(shù)的進(jìn)步,32位ARM處理器系統(tǒng)擁有很高的運(yùn)算速度和很強(qiáng)的信號(hào)處理能力,可以作為視覺(jué)系統(tǒng)的處理器,代替PC機(jī)來(lái)實(shí)現(xiàn)簡(jiǎn)單的視覺(jué)處理算法。下面介紹一種基于ARM和CPLD的嵌入式視覺(jué)系統(tǒng),希望能分享嵌入式視覺(jué)開(kāi)發(fā)過(guò)程中的一些經(jīng)驗(yàn)。

  1 系統(tǒng)方案與原理

  在嵌入式視覺(jué)的設(shè)計(jì)中,目前主流的有以下2種方案:

  方案1圖像傳感器+微處理器(ARM或DSP)+SRAM

  方案2圖像傳感器+CPLD/FPGA+微處理器+SRAM

  方案1系統(tǒng)結(jié)構(gòu)緊湊,功耗低。在圖像采集時(shí),圖像傳感器輸出的同步時(shí)序信號(hào)的識(shí)別需要借助ARM的中斷,而中斷處理時(shí),微處理器需要完成程序跳轉(zhuǎn)、保存上下文等工作[1],降低了圖像采集的速度,適合對(duì)采集速度要求不高、功耗低的場(chǎng)合。

  方案2借助CPLD來(lái)識(shí)別圖像傳感器的同步時(shí)序信號(hào),不必經(jīng)過(guò)微處理器的中斷,因而系統(tǒng)的采集速度提高,但CPLD的介入會(huì)使系統(tǒng)的功耗提高。

  為了綜合以上2種方案的優(yōu)勢(shì),在硬件上采用“ARM+CPLD+圖像傳感器+SRAM”。該方案充分利用了CPLD的可編程性,通過(guò)軟件編程來(lái)兼有方案1的優(yōu)勢(shì),具體體現(xiàn)在以下方面:

 、 功耗的高低可以控制。對(duì)于功耗有嚴(yán)格要求的場(chǎng)合,通過(guò)CPLD的可編程性將時(shí)序部分的接口與ARM的中斷端口相連,僅僅是組合邏輯的總線(xiàn)相連,可以降低CPLD的功耗從而達(dá)到方案1的效果;對(duì)于采集速度要求高而功耗要求不高的情況,可以充分發(fā)揮CPLD的優(yōu)勢(shì),利用組合與時(shí)序邏輯來(lái)實(shí)現(xiàn)圖像傳感器輸出同步信號(hào)的識(shí)別,并將圖像數(shù)據(jù)寫(xiě)入SRAM中。

 、 器件的選擇可以多樣。在硬件設(shè)計(jì)上,所有總線(xiàn)均與CPLD相連;在軟件設(shè)計(jì)上,不同的模塊單獨(dú)按功能封裝。這樣以CPLD為中心,系統(tǒng)的其他器件均可更換而無(wú)需對(duì)CPLD部分程序進(jìn)行改動(dòng),有利于系統(tǒng)的功能升級(jí)。

  作為本系統(tǒng)的一種應(yīng)用,開(kāi)發(fā)了視覺(jué)跟蹤的程序,可以在目標(biāo)和背景顏色對(duì)比強(qiáng)烈的情況下對(duì)物體進(jìn)行跟蹤。通過(guò)對(duì)CMOS攝像頭采集來(lái)的數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,根據(jù)物體的顏色計(jì)算出被追蹤物體的質(zhì)心坐標(biāo)。下面分別描述系統(tǒng)各部分的功能。



  2 系統(tǒng)硬件



  2.1 硬件組成及連接

  系統(tǒng)的硬件主要有4部分:CMOS圖像傳感器OV6620、可編程器件CPLD、512 KB的SRAM和32位微處理器LPC2214。

  OV6620是美國(guó)OmniVision公司生產(chǎn)的CMOS圖像傳感器,以其高性能、低功耗適合應(yīng)用在嵌入式圖像采集系統(tǒng)中,本系統(tǒng)圖像數(shù)據(jù)的輸入都是通過(guò)OV6620采集進(jìn)來(lái)的;可編程器件CPLD采用Altera公司的EPM7128S,用Verilog硬件編程語(yǔ)言在QuartusII下編寫(xiě)程序;作為系統(tǒng)的數(shù)據(jù)緩沖,SRAM選用的是IS61LV5128,其隨機(jī)訪(fǎng)問(wèn)的特性為圖像處理程序提供了便利;而LPC2214在PLL(鎖相環(huán))的支持下最高可以運(yùn)行在60 MHz的頻率下,為圖像的快速處理提供了硬件支持。

  OV6620集成在一個(gè)板卡上,有獨(dú)立的17 MHz晶振。輸出3個(gè)圖像同步的時(shí)序信號(hào):像素時(shí)鐘PCLK、幀同步VSYNC和行同步HREF。同時(shí),還可以通過(guò)8位或16位的數(shù)據(jù)總線(xiàn)輸出RGB或YCrCb格式的圖像數(shù)據(jù)。

  在硬件設(shè)計(jì)上,有2個(gè)問(wèn)題需要解決:

 、 圖像采集的嚴(yán)格時(shí)序同步;

 、 雙CPU共享SRAM的總線(xiàn)仲裁。

  解決第一個(gè)問(wèn)題的關(guān)鍵在于如何實(shí)時(shí)、準(zhǔn)確地讀取OV6620的時(shí)序輸出信號(hào),據(jù)此將圖像數(shù)據(jù)寫(xiě)入SRAM中。這里采用的解決方案是用CPLD來(lái)實(shí)現(xiàn)時(shí)序信號(hào)的識(shí)別以及圖像數(shù)據(jù)的寫(xiě)入。CPLD在硬件上可以識(shí)別信號(hào)的邊沿,速度更快,通過(guò)Verilog語(yǔ)言編寫(xiě)Mealy狀態(tài)機(jī)來(lái)實(shí)現(xiàn)圖像數(shù)據(jù)的SRAM寫(xiě)入,更加穩(wěn)定。

  對(duì)于雙CPU共享SRAM,可以通過(guò)合理的連接方式來(lái)解決?紤]到CPLD的可編程性,將OV6620的數(shù)據(jù)總線(xiàn),LPC2214的地址、數(shù)據(jù)總線(xiàn)以及SRAM的總線(xiàn)都連接到CPLD上。通過(guò)編程來(lái)控制總線(xiàn)之間的連接,只要在軟件上保證總線(xiàn)的互斥性,即在同一時(shí)刻有且僅有一個(gè)控制器(CPLD或者LPC2214)來(lái)操作SRAM的總線(xiàn),就可以有效地避免總線(xiàn)沖突。這樣,硬件上的仲裁就可以通過(guò)軟件來(lái)保證,該過(guò)程可以通過(guò)在CPLD中編寫(xiě)多路數(shù)據(jù)選擇器來(lái)實(shí)現(xiàn)。

  各器件之間的連接關(guān)系如圖1所示。



    

  圖1 系統(tǒng)結(jié)構(gòu)框圖



  由圖1可見(jiàn),微處理器的總線(xiàn)接在CPLD上,在對(duì)功耗有嚴(yán)格要求的場(chǎng)合中,只需要在CPLD中,將OV6620的同步時(shí)序信號(hào)所對(duì)應(yīng)的引腳與LPC2214連接在CPLD上的中斷引腳相連,系統(tǒng)就可以轉(zhuǎn)換成方案1的形式。對(duì)CPLD而言,引腳相連的僅僅是組合邏輯,降低了功耗。方案1的具體工作過(guò)程可見(jiàn)參考文獻(xiàn)[1]。



  

  圖2 OV6620輸出時(shí)序圖



  在Verilog語(yǔ)言中,對(duì)上升沿的檢測(cè)是通過(guò)always語(yǔ)句來(lái)實(shí)現(xiàn)的。例如檢測(cè)時(shí)鐘信號(hào)cam_pclk的上升沿:



  

  圖3 行處理得到的線(xiàn)形圖



  根據(jù)得到的結(jié)果,可以計(jì)算出更多關(guān)于跟蹤物體的信息:

 、 計(jì)算區(qū)域面積。計(jì)算每條線(xiàn)段的長(zhǎng)度l(n),然后將l(n)進(jìn)行累積疊加,即可獲得跟蹤區(qū)域面積值S。

    

 、 計(jì)算質(zhì)心橫坐標(biāo)。

    

 、 計(jì)算質(zhì)心縱坐標(biāo)。

  

  

 、 識(shí)別物體的形狀。根據(jù)得到的每行跟蹤點(diǎn)的長(zhǎng)度,以及同一行中有幾段符合要求的連續(xù)跟蹤點(diǎn),可以得知物體從攝像頭角度看到的形狀。特別是在檢測(cè)平面上線(xiàn)條時(shí),可以識(shí)別是否有分支,這一點(diǎn)是幀處理模式無(wú)法做到的。

  需要指出的是,行處理模式雖然會(huì)得到關(guān)于跟蹤目標(biāo)的更多信息,但是每行處理的方式增大了處理器的負(fù)擔(dān),處理速度也沒(méi)有幀處理快。



  簡(jiǎn)介:搭建一種低成本的嵌入式視覺(jué)系統(tǒng),系統(tǒng)由CMOS圖像傳感器、CPLD、ARM7微處理器以及SRAM構(gòu)成。其中,CPLD識(shí)別時(shí)序,解決了圖像采集系統(tǒng)存在的嚴(yán)格時(shí)序同步和雙CPU共享一片SRAM的總線(xiàn)競(jìng)爭(zhēng)問(wèn)題;用Verilog語(yǔ)言編寫(xiě)Mealy狀態(tài)機(jī)控制圖像數(shù)據(jù)寫(xiě)入SRAM,多路數(shù)據(jù)選擇器實(shí)現(xiàn)總線(xiàn)切換,避免了總線(xiàn)沖突。圖像處理算法注重效率,基于ARM實(shí)現(xiàn),系統(tǒng)最終工作速率為25幀/s。

  目前,關(guān)于視覺(jué)系統(tǒng)的研究已經(jīng)成為熱點(diǎn),也有開(kāi)發(fā)出的系統(tǒng)可供參考。但這些系統(tǒng)大多是基于PC機(jī)的,由于算法和硬件結(jié)構(gòu)的復(fù)雜性而使其在小型嵌入式系統(tǒng)中的應(yīng)用受到了限制。上述系統(tǒng)將圖像數(shù)據(jù)采集后,視覺(jué)處理算法是在PC機(jī)上實(shí)現(xiàn)的。隨著嵌入式微處理器技術(shù)的進(jìn)步,32位ARM處理器系統(tǒng)擁有很高的運(yùn)算速度和很強(qiáng)的信號(hào)處理能力,可以作為視覺(jué)系統(tǒng)的處理器,代替PC機(jī)來(lái)實(shí)現(xiàn)簡(jiǎn)單的視覺(jué)處理算法。下面介紹一種基于ARM和CPLD的嵌入式視覺(jué)系統(tǒng),希望能分享嵌入式視覺(jué)開(kāi)發(fā)過(guò)程中的一些經(jīng)驗(yàn)。



  1 系統(tǒng)方案與原理



  在嵌入式視覺(jué)的設(shè)計(jì)中,目前主流的有以下2種方案:

  方案1圖像傳感器+微處理器(ARM或DSP)+SRAM

  方案2圖像傳感器+CPLD/FPGA+微處理器+SRAM

  方案1系統(tǒng)結(jié)構(gòu)緊湊,功耗低。在圖像采集時(shí),圖像傳感器輸出的同步時(shí)序信號(hào)的識(shí)別需要借助ARM的中斷,而中斷處理時(shí),微處理器需要完成程序跳轉(zhuǎn)、保存上下文等工作[1],降低了圖像采集的速度,適合對(duì)采集速度要求不高、功耗低的場(chǎng)合。

  方案2借助CPLD來(lái)識(shí)別圖像傳感器的同步時(shí)序信號(hào),不必經(jīng)過(guò)微處理器的中斷,因而系統(tǒng)的采集速度提高,但CPLD的介入會(huì)使系統(tǒng)的功耗提高。嵌入式中軸怎么樣, 嵌入式網(wǎng)頁(yè)視頻抓取, 為什么安卓是嵌入式, 嵌入式工控單板, 嵌入式關(guān)閉蜂鳴器, 嵌入式類(lèi)型病毒, 嵌入式交叉編譯環(huán)境, 嵌入式資訊平臺(tái), 大疆嵌入式軟件筆試, 怎么快速了解嵌入式, 嵌入式導(dǎo)航壽命, 嵌入式數(shù)據(jù)結(jié)構(gòu)算法, 嵌入式分析表, 嵌入式開(kāi)發(fā)英文簡(jiǎn)歷, 嵌入式計(jì)算機(jī)等, 碩士畢設(shè)嵌入式, 嵌入式服務(wù)器搭建, 嵌入式測(cè)試筆試題目, 嵌入式系教學(xué)視頻, 嵌入式臂頭是啥意思, 嵌入式c代碼網(wǎng)站, 嵌入式開(kāi)發(fā)編程學(xué)習(xí), 嵌入式8.1, 什么叫嵌入式管理, 嵌入式要學(xué)匯編嗎, 嵌入式驅(qū)動(dòng)需要什么, 嵌入式的優(yōu)點(diǎn), 嵌入式里的sbit, 南京嵌入式培訓(xùn)單位, 3g嵌入式培訓(xùn)學(xué)校, 芯片嵌入式軟件崗位, 銳龍學(xué)嵌入式, 嵌入式arm期末, 嵌入式算法框架, 嵌入式測(cè)硫儀不分解, 嵌入式網(wǎng)頁(yè)采集, 嵌入式應(yīng)用開(kāi)發(fā)標(biāo)準(zhǔn), 藍(lán)橋杯嵌入式試題, 哪里能接嵌入式項(xiàng)目, 嵌入式應(yīng)用層軟件開(kāi)發(fā), 芯靈思嵌入式, 嵌入式技術(shù)的發(fā)展論文, 嵌入式硬件資料下載, 嵌入式電器的壞了,

  為了綜合以上2種方案的優(yōu)勢(shì),在硬件上采用“ARM+CPLD+圖像傳感器+SRAM”。該方案充分利用了CPLD的可編程性,通過(guò)軟件編程來(lái)兼有方案1的優(yōu)勢(shì),具體體現(xiàn)在以下方面:

 、 功耗的高低可以控制。對(duì)于功耗有嚴(yán)格要求的場(chǎng)合,通過(guò)CPLD的可編程性將時(shí)序部分的接口與ARM的中斷端口相連,僅僅是組合邏輯的總線(xiàn)相連,可以降低CPLD的功耗從而達(dá)到方案1的效果;對(duì)于采集速度要求高而功耗要求不高的情況,可以充分發(fā)揮CPLD的優(yōu)勢(shì),利用組合與時(shí)序邏輯來(lái)實(shí)現(xiàn)圖像傳感器輸出同步信號(hào)的識(shí)別,并將圖像數(shù)據(jù)寫(xiě)入SRAM中。

 、 器件的選擇可以多樣。在硬件設(shè)計(jì)上,所有總線(xiàn)均與CPLD相連;在軟件設(shè)計(jì)上,不同的模塊單獨(dú)按功能封裝。這樣以CPLD為中心,系統(tǒng)的其他器件均可更換而無(wú)需對(duì)CPLD部分程序進(jìn)行改動(dòng),有利于系統(tǒng)的功能升級(jí)。

  作為本系統(tǒng)的一種應(yīng)用,開(kāi)發(fā)了視覺(jué)跟蹤的程序,可以在目標(biāo)和背景顏色對(duì)比強(qiáng)烈的情況下對(duì)物體進(jìn)行跟蹤。通過(guò)對(duì)CMOS攝像頭采集來(lái)的數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,根據(jù)物體的顏色計(jì)算出被追蹤物體的質(zhì)心坐標(biāo)。下面分別描述系統(tǒng)各部分的功能。



  2 系統(tǒng)硬件



  2.1 硬件組成及連接

  系統(tǒng)的硬件主要有4部分:CMOS圖像傳感器OV6620、可編程器件CPLD、512 KB的SRAM和32位微處理器LPC2214。

  OV6620是美國(guó)OmniVision公司生產(chǎn)的CMOS圖像傳感器,以其高性能、低功耗適合應(yīng)用在嵌入式圖像采集系統(tǒng)中,本系統(tǒng)圖像數(shù)據(jù)的輸入都是通過(guò)OV6620采集進(jìn)來(lái)的;可編程器件CPLD采用Altera公司的EPM7128S,用Verilog硬件編程語(yǔ)言在QuartusII下編寫(xiě)程序;作為系統(tǒng)的數(shù)據(jù)緩沖,SRAM選用的是IS61LV5128,其隨機(jī)訪(fǎng)問(wèn)的特性為圖像處理程序提供了便利;而LPC2214在PLL(鎖相環(huán))的支持下最高可以運(yùn)行在60 MHz的頻率下,為圖像的快速處理提供了硬件支持。

  OV6620集成在一個(gè)板卡上,有獨(dú)立的17 MHz晶振。輸出3個(gè)圖像同步的時(shí)序信號(hào):像素時(shí)鐘PCLK、幀同步VSYNC和行同步HREF。同時(shí),還可以通過(guò)8位或16位的數(shù)據(jù)總線(xiàn)輸出RGB或YCrCb格式的圖像數(shù)據(jù)。

  在硬件設(shè)計(jì)上,有2個(gè)問(wèn)題需要解決:

 、 圖像采集的嚴(yán)格時(shí)序同步;

 、 雙CPU共享SRAM的總線(xiàn)仲裁。

  解決第一個(gè)問(wèn)題的關(guān)鍵在于如何實(shí)時(shí)、準(zhǔn)確地讀取OV6620的時(shí)序輸出信號(hào),據(jù)此將圖像數(shù)據(jù)寫(xiě)入SRAM中。這里采用的解決方案是用CPLD來(lái)實(shí)現(xiàn)時(shí)序信號(hào)的識(shí)別以及圖像數(shù)據(jù)的寫(xiě)入。CPLD在硬件上可以識(shí)別信號(hào)的邊沿,速度更快,通過(guò)Verilog語(yǔ)言編寫(xiě)Mealy狀態(tài)機(jī)來(lái)實(shí)現(xiàn)圖像數(shù)據(jù)的SRAM寫(xiě)入,更加穩(wěn)定。

  對(duì)于雙CPU共享SRAM,可以通過(guò)合理的連接方式來(lái)解決。考慮到CPLD的可編程性,將OV6620的數(shù)據(jù)總線(xiàn),LPC2214的地址、數(shù)據(jù)總線(xiàn)以及SRAM的總線(xiàn)都連接到CPLD上。通過(guò)編程來(lái)控制總線(xiàn)之間的連接,只要在軟件上保證總線(xiàn)的互斥性,即在同一時(shí)刻有且僅有一個(gè)控制器(CPLD或者LPC2214)來(lái)操作SRAM的總線(xiàn),就可以有效地避免總線(xiàn)沖突。這樣,硬件上的仲裁就可以通過(guò)軟件來(lái)保證,該過(guò)程可以通過(guò)在CPLD中編寫(xiě)多路數(shù)據(jù)選擇器來(lái)實(shí)現(xiàn)。

  各器件之間的連接關(guān)系如圖1所示。



    

  圖1 系統(tǒng)結(jié)構(gòu)框圖



  由圖1可見(jiàn),微處理器的總線(xiàn)接在CPLD上,在對(duì)功耗有嚴(yán)格要求的場(chǎng)合中,只需要在CPLD中,將OV6620的同步時(shí)序信號(hào)所對(duì)應(yīng)的引腳與LPC2214連接在CPLD上的中斷引腳相連,系統(tǒng)就可以轉(zhuǎn)換成方案1的形式。對(duì)CPLD而言,引腳相連的僅僅是組合邏輯,降低了功耗。方案1的具體工作過(guò)程可見(jiàn)參考文獻(xiàn)[1]。



  

  圖2 OV6620輸出時(shí)序圖



  在Verilog語(yǔ)言中,對(duì)上升沿的檢測(cè)是通過(guò)always語(yǔ)句來(lái)實(shí)現(xiàn)的。例如檢測(cè)時(shí)鐘信號(hào)cam_pclk的上升沿:



  

  圖3 行處理得到的線(xiàn)形圖



  根據(jù)得到的結(jié)果,可以計(jì)算出更多關(guān)于跟蹤物體的信息:

  ① 計(jì)算區(qū)域面積。計(jì)算每條線(xiàn)段的長(zhǎng)度l(n),然后將l(n)進(jìn)行累積疊加,即可獲得跟蹤區(qū)域面積值S。

    

 、 計(jì)算質(zhì)心橫坐標(biāo)。

    

 、 計(jì)算質(zhì)心縱坐標(biāo)。

  

  

  ④ 識(shí)別物體的形狀。根據(jù)得到的每行跟蹤點(diǎn)的長(zhǎng)度,以及同一行中有幾段符合要求的連續(xù)跟蹤點(diǎn),可以得知物體從攝像頭角度看到的形狀。特別是在檢測(cè)平面上線(xiàn)條時(shí),可以識(shí)別是否有分支,這一點(diǎn)是幀處理模式無(wú)法做到的。

  需要指出的是,行處理模式雖然會(huì)得到關(guān)于跟蹤目標(biāo)的更多信息,但是每行處理的方式增大了處理器的負(fù)擔(dān),處理速度也沒(méi)有幀處理快。



  4 提高系統(tǒng)的工作速率



  目前,系統(tǒng)工作在幀處理模式下的工作速率是25幀/s,作為系統(tǒng)功能的驗(yàn)證,這里采用的算法是顏色跟蹤。如果僅做純粹的圖像采集,而不做圖像處理,那么系統(tǒng)可以達(dá)到OV6620的最高工作速率,即60幀/s。而在圖像處理方面,不同的圖像處理程序效率對(duì)系統(tǒng)的工作頻率有較大的影響。下面給出在通用ARM處理器下提高程序效率的幾個(gè)建議:

 、 內(nèi)嵌(inline)可通過(guò)刪除子函數(shù)調(diào)用的開(kāi)銷(xiāo)來(lái)提高性能。如果函數(shù)在別的模塊中不被調(diào)用,一個(gè)好的建議是用static標(biāo)識(shí)函數(shù);否則,編譯器將在內(nèi)嵌譯碼里把該函數(shù)編譯成非內(nèi)嵌的。

 、 在ARM系統(tǒng)中,函數(shù)調(diào)用過(guò)程中參數(shù)個(gè)數(shù)≤4時(shí),通過(guò)R0~R3傳遞;參數(shù)個(gè)數(shù)>4時(shí),通過(guò)壓棧方式傳遞(需要額外的指令和慢速的存儲(chǔ)器操作)。通常限制參數(shù)的個(gè)數(shù),使它為4或更少。如果不可避免,則把常用的前4個(gè)參數(shù)放在R0~R3中。

 、 在for(), while() do…while()的循環(huán)中,用“減到0”代替“加到某個(gè)值”。比如:

  for (loop = 1; loop <= total; loop++) //ADD和CMP

  替換為:for (loop = total; loop != 0; loop--) //SUBS

  第1種方式比較需要2條指令A(yù)DD和CMP,而第2種方式只需一條指令SUBS。

 、 ARM核不含除法硬件,除法通常用一個(gè)運(yùn)行庫(kù)函數(shù)來(lái)實(shí)現(xiàn),運(yùn)行需要很多個(gè)周期。一些除法操作在編譯時(shí)作為特例來(lái)處理,例如除以2的操作用左移代替余數(shù)的操作符“%”,通常使用模算法。如果這個(gè)值的模不是2的n次冪,則將花費(fèi)大量的時(shí)間和代碼空間避免這種情況的發(fā)生。具體辦法是使用if()作狀態(tài)檢查。

  比如,count的范圍是0~59:

  count = (count+1) % 60;

  用下面語(yǔ)句代替:

  if (++count >= 60)

  count = 0;

  ⑤ 避免使用大的局部結(jié)構(gòu)體或數(shù)組,可以考慮用malloc/free代替。

  ⑥ 避免使用遞歸。

  結(jié)語(yǔ)

  本文介紹了一種基于ARM和CPLD的嵌入式視覺(jué)系統(tǒng),可以實(shí)現(xiàn)顏色跟蹤。在硬件設(shè)計(jì)上,圖像采集和圖像處理分離,更利于系統(tǒng)功能的升級(jí)。而視覺(jué)處理算法更注重處理的效率和實(shí)時(shí)性,同時(shí)根據(jù)不同的需要有兩種模式可供選擇。最后給出了提高程序效率的一些建議和方法。與基于PC機(jī)的視覺(jué)系統(tǒng)相比,該系統(tǒng)功耗低、體積小,適合應(yīng)用于移動(dòng)機(jī)器人等領(lǐng)域。

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表