《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于AVR32和μC/OS-II系統(tǒng)的激光掃描系統(tǒng)的研究與設(shè)計
基于AVR32和μC/OS-II系統(tǒng)的激光掃描系統(tǒng)的研究與設(shè)計
2014年微型機與應(yīng)用第21期
孫琳洋,習友寶,賀梓超
(電子科技大學 電子工程學院,四川 成都 610054)
摘要: 激光振境掃描技術(shù)已廣泛應(yīng)用于激光打標、激光快速成型、物體輪廓提取、激光舞臺等諸多領(lǐng)域,并以其優(yōu)良的矢量掃描特性在機場泊位引導系統(tǒng)、車輛防撞體系、車場停泊系統(tǒng)中發(fā)揮著重要作用。在激光掃描系統(tǒng)中,需要實時掌握掃描物體的狀態(tài),處理大量的激光測距數(shù)據(jù)。本設(shè)計通過在AVR32微控制器上移植μC/OS-II系統(tǒng),完成激光掃描系統(tǒng)的控制和激光數(shù)據(jù)的處理。本文介紹了激光掃描系統(tǒng)的系統(tǒng)組成、μC/OS-II系統(tǒng)在AVR32上的移植和μC/OS-II下軟件的編寫。經(jīng)實際運行,證明該設(shè)計能很好地完成對運動目標跟蹤等功能并且運行效率得到有效提高。
Abstract:
Key words :

  摘 要: 激光振境掃描技術(shù)已廣泛應(yīng)用于激光打標、激光快速成型、物體輪廓提取、激光舞臺等諸多領(lǐng)域,并以其優(yōu)良的矢量掃描特性在機場泊位引導系統(tǒng)、車輛防撞體系、車場停泊系統(tǒng)中發(fā)揮著重要作用。在激光掃描系統(tǒng)中,需要實時掌握掃描物體的狀態(tài),處理大量的激光測距數(shù)據(jù)。本設(shè)計通過在AVR32微控制器上移植μC/OS-II系統(tǒng),完成激光掃描系統(tǒng)的控制和激光數(shù)據(jù)的處理。本文介紹了激光掃描系統(tǒng)的系統(tǒng)組成、μC/OS-II系統(tǒng)在AVR32上的移植和μC/OS-II下軟件的編寫。經(jīng)實際運行,證明該設(shè)計能很好地完成對運動目標跟蹤等功能并且運行效率得到有效提高。

  關(guān)鍵詞: AVR32;μC/OS-II;嵌入式操作系統(tǒng);激光掃描

0 引言

  本設(shè)計利用激光振鏡掃描[1-4]技術(shù),通過AVR32控制,完成對靜止物體和動態(tài)物體的掃描。針對硬件資源和軟件設(shè)計要求,本設(shè)計裁剪了μC/OS-II操作系統(tǒng),移植到AVR32上,通過在μC/OS-II系統(tǒng)下的編程,完成激光掃描系統(tǒng)的掃描和控制。

1 系統(tǒng)硬件構(gòu)成

  激光振鏡掃描技術(shù)是指通過微控制器MCU控制水平方向和垂直方向的步進電機轉(zhuǎn)動的同時,讓激光測距儀掃描。通過激光測距儀測得的距離數(shù)據(jù),分析物體的狀態(tài)。系統(tǒng)組成如圖1所示。

001.jpg

  本設(shè)計選用的AVR32是一款32位的高性能處理器,選用步距角為1.8°的P850步進電機,實際工作中可根據(jù)精度要求對步距角進行細分。設(shè)計中令電機16細分,即電機每轉(zhuǎn)一步,轉(zhuǎn)動0.1125°。選用步進電機驅(qū)動器escap36。該驅(qū)動器具有RS485接口,可實現(xiàn)參數(shù)化的設(shè)定和控制,并且能根據(jù)實際工作對電機精度的要求,實現(xiàn)電機步距角的1~64的細分。

  此設(shè)計中所選用的邦納LT300激光測距儀包含紅色瞄準激光。該款激光測距儀激光準直性好,測量時間短,具有可編程的串行口以及數(shù)字量和模擬量輸出,測量范圍大,受環(huán)境干擾小。

2 μC/OS-II移植

  2.1 μC/OS-II文件結(jié)構(gòu)

  移植在AVR32后的μC/OS-II的文件系統(tǒng)結(jié)構(gòu)如圖2所示。

002.jpg

  μC/OS-II是一種具有可剝奪實時內(nèi)核的實時操作系統(tǒng)[5-7], 而且是免費公開源代碼,結(jié)構(gòu)小巧。其內(nèi)核提供任務(wù)調(diào)度與管理、時間管理、任務(wù)間同步與通信、內(nèi)存管理和中斷服務(wù)等功能, 具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良和可擴展性強等特點。最小內(nèi)核可編譯至 2 KB, 適合小型控制系統(tǒng)。與 CPU 硬件相關(guān)的部分用匯編語言編寫,其他絕大部分代碼采用 C 語言編寫。μC/OS-II在硬件平臺上的移植主要分為兩大步驟:μC/OS-II中與處理器相關(guān)的程序的修改、應(yīng)用程序的添加。

  2.2 移植代碼

  移植μC/OS-II操作系統(tǒng)主要包括OS_CPU.H、OS_CPU_A.S、OS_CPU_C.C三個文件。其中OS_CPU.H主要定義了處理器中的數(shù)據(jù)類型,以及與處理器相關(guān)的宏定義,例如全局中斷的開關(guān)等。OS_CPU_A.S文件中代碼是實現(xiàn)上下文切換以及中斷實現(xiàn)的具體代碼,這些代碼主要負責保護好當前任務(wù)現(xiàn)場,并且將程序指針和堆棧指針指向新的任務(wù)區(qū)域,是整個移植的關(guān)鍵部分。OS_CPU_C.C集中了處理器相關(guān)的C代碼。

  本文以O(shè)SCtxSw()函數(shù)、OSCtxRestore()函數(shù)為例。OSCtxSw()函數(shù)用來使一個更高優(yōu)先級的任務(wù)處于就緒狀態(tài),它所需做的具體工作主要有以下幾個方面:保存當前CPU寄存器的狀態(tài)、保護當前任務(wù)棧的狀態(tài)以及更新程序指針。其偽代碼如下:

  void OSCtxSw (void)

  { /*保存寄存器*/

  Save processor registers;

  /*保存當前任務(wù)棧地址*/

  OSTCBCur->OSTCBStkPtr = SP;

  /*任務(wù)切換的鉤子函數(shù)(可以省略)*/

  OSTaskSwHook();

  /*更高優(yōu)先級任務(wù)*/

  OSTCBCur=OSTCBHighRdy;

  OSPrioCur = OSPrioHighRdy;

  /*完成任務(wù)切換*/

  OSCtxRestore(OSTCBHighRdy->OSTCBStkPtr)

  }

  OSCtxRestore()函數(shù)是任務(wù)級的任務(wù)切換函數(shù),具體工作主要是更新鏈接寄存器LR并將堆棧指針指向新的任務(wù)棧,具體實現(xiàn)如下:

  OSCtxRestore:

  LDM R12, R0-R7 /*恢復R0-R7*/

  LD.D R8, R12[14*4] /*恢復R8-R9*/

  LD.D R10, R12[8*4] /*恢復PC、SR*/

  ST.D R12[14*4], R10 /*存儲PC、SR*/

  SUB R12, -10*4 /*將指針指向 LR*/

  UB SP, R12, -4*4 /*恢復棧指針*/

  LDM R12, R10-R12, LR恢復R10-R12,LR*/

  RETS /*從SCALL返回*/

  2.3 板級支持包BSP的編寫

  本次設(shè)計是基于激光掃描系統(tǒng)的控制板,編寫板級支持包BSP[8]將有助于對底層的封裝,便于上層用戶程序的開發(fā)。根據(jù)激光掃描系統(tǒng)的需求,設(shè)計中對AVR32 UC3系列編寫了串口USART、GPIO口、時鐘Timer以及中斷的BSP。下面以GPIO服務(wù)函數(shù)為例進行介紹。

  AVR32中每個I/O口可以實現(xiàn)多達4個外部設(shè)備接口。當一個I/O口被指定為外部接口時,該I/O口就為該外部設(shè)備控制。通過寄存器PMR0和PMR1來決定4個外部設(shè)備中哪個設(shè)備來控制該I/O口。當一個I/O口被指定為普通的I/O時,寄存器ODER的值決定了該I/O引腳的值。因此,編寫函數(shù)BSP_GPIO_SetFnct()來封裝與引腳配置相關(guān)的寄存器,從而配置一個引腳的功能,而不用每次都去直接操作寄存器。AVR32的端口與引腳的GPIO口號對應(yīng)關(guān)系如式(1)和式(2)所示:

  GPIO port= floor((GPIO number) / 32) (1)

  GPIO pin = (GPIO number) mod 32 (2)

  其中,式(1)表示取GPIO口號除以32的商作為該GPIO口所在的端口號;式(2)表示取GPIO口號除以32的余商作為該GPIO口所在的端口里的第幾位。

  函數(shù)BSP_GPIO_SetFnct()的代碼如下:

  void BSP_GPIO_SetFnct (CPU_INT16U pin, CPU_INT08U fnct)

  {

  volatile avr32_gpio_port_t *gpio_port;

  /* 得到引腳號*/

  gpio_port= &AVR32_GPIO.port[pin/32];

  switch (fnct) {

  case 0: /* 若選擇引腳的外部設(shè)備功能0*/

  gpio_port->pmr0c = 1 << (pin % 32);

  gpio_port->pmr1c = 1 << (pin % 32);

  break;

  case 1: /* 若選擇引腳的外部設(shè)備功能1*/

  gpio_port->pmr0s = 1 << (pin % 32);

  gpio_port->pmr1c = 1 << (pin % 32);

  break;

  case 2: /* 若選擇引腳的外部設(shè)備功能2*/

  gpio_port->pmr0c = 1 << (pin % 32);

  gpio_port->pmr1s = 1 << (pin % 32);

  break;

  case 3: /* 若選擇引腳的外部設(shè)備功能3*/

  gpio_port->pmr0s = 1 << (pin % 32);

  gpio_port->pmr1s = 1 << (pin % 32);

  break;

  }

  /*將引腳設(shè)置為普通的GPIO口 */

  gpio_port->gperc = 1 << (pin % 32);

  }

  在設(shè)置了GPIO口的功能之后,編寫3個函數(shù),可以根據(jù)需要改變引腳的值,如表1所示。

006.jpg

3 μC/OS-II下應(yīng)用程序的編寫

  3.1 μC/OS-II系統(tǒng)的裁剪

  在編寫應(yīng)用程序之前,需要根據(jù)實際所需資源對μC/OS-II系統(tǒng)進行裁剪[9],使編譯生成的操作系統(tǒng)所占的系統(tǒng)內(nèi)存達到最小。頭文件OS_CFG.H聲明相應(yīng)功能的配置常量,通過μC/OS-II中的條件編譯,生成所需要的功能函數(shù)。函數(shù)中聲明的配置常量如表2所示。

007.jpg

  3.2 應(yīng)用程序編寫

  激光掃描系統(tǒng)中,需要對激光測距儀、水平方向的步進電機、垂直方向的步進電機[10]進行控制,通過對激光測距儀返回的測量數(shù)據(jù)進行分析。根據(jù)分析結(jié)果,判斷剛才掃描的是靜止物體還是動態(tài)物體,決定要發(fā)送的下一條命令。

  在系統(tǒng)工作中,需要同時執(zhí)行電機轉(zhuǎn)動[11]和激光測距,因此建立了任務(wù)MoveMeasure。由于在工作中,不同的應(yīng)用對激光測距儀的參數(shù)要求不同,因此建立了任務(wù)LDMConfig,通過信號量LDM_SEM來同步任務(wù)LDMConfig和任務(wù)Move_Measure。當激光測距儀測距結(jié)束時,通過信號量LDM_DATA啟動任務(wù)DataLDM。再通過信號量DATA_SEM啟動任務(wù)DATADispose。當任務(wù)DATADispose完成數(shù)據(jù)的處理后,根據(jù)處理結(jié)果,決定下一條要發(fā)送的命令,并通過消息郵箱CMD_MBOX把要執(zhí)行的命令發(fā)送給任務(wù)Move_Measure。任務(wù)Move_Measure根據(jù)CMD_MBOX控制電機和激光測距儀工作。任務(wù)間的流程如圖3所示。

003.jpg

4 試驗驗證

  4.1 試驗

  試驗中使用一個長45 cm、寬45 cm的長方體,在該長方體的一側(cè)邊沿連接一個高45 cm、長50 cm的平面板。使相鄰的平板的板面錯開,形成一個類似方波形狀的物體,如圖4所示。激光掃描系統(tǒng)距離最近的平板板面的距離為14 m,距離最遠的平板板面的距離為20 m。

004.jpg

  系統(tǒng)上電后,先通過激光測距儀的紅色瞄準激光固定好激光測距儀和雙振鏡的位置,使激光掃描系統(tǒng)位于相連板面的中間。然后關(guān)閉紅色瞄準激光。讓激光掃描系統(tǒng)開始工作,進行物體輪廓掃描。

  4.2 實驗結(jié)果


005.jpg

  將實驗距離測量數(shù)據(jù)按照距離值分布,如圖5所示,橫坐標數(shù)值表示數(shù)據(jù)點個數(shù),縱坐標數(shù)值表示距離值。從測量數(shù)據(jù)的分布顯示波形看,落在板子正面上的點為16個,電機每走一步的角度為0.112 5°,激光掃描系統(tǒng)距試驗板的最近距離為14 m,因此電機每走一步轉(zhuǎn)過的水平距離為tan(0.112 5°)×1 400≈27(mm)。掃描的板子正面的長度為27×17=459(mm),與板子正面的實際長度45 cm誤差2%,滿足通過激光掃描描繪物體外圍輪廓的精度要求。圖形正確地表現(xiàn)了所擺放的平板的圖形。

5 結(jié)束語

  基于AVR32和μC/OS-II系統(tǒng)的激光掃描系統(tǒng)可以很好地實現(xiàn)對物體的多次掃描和物體輪廓的點云數(shù)據(jù)的獲取。但由于μC/OS-II系統(tǒng)本身只是一個微內(nèi)核,功能相對簡單,因此下一步將繼續(xù)研究基于Linux操作系統(tǒng)的激光掃描系統(tǒng),實現(xiàn)掃描數(shù)據(jù)的曲線圖的實時顯示,動態(tài)把握掃描過程。

參考文獻

  [1] 劉文. 基于FPGA技術(shù)的激光測距系統(tǒng)研究[D]. 南京:南京理工大學,2007.

  [2] 韓萬鵬,蒙文,李云霞,等. 雙振鏡激光掃描的誤差分析及校正方 法[J]. 光電技術(shù)應(yīng)用, 2011, 26(4):14-18.

  [3] 邢剛, 徐冬生,夏云,等. 基于CPLD的多目標脈沖激光測距系統(tǒng)的設(shè)計與實現(xiàn)[J]. 激光與紅外,2010, 40(2):152-154.

  [4] 劉文. 基于FPGA技術(shù)的激光測距系統(tǒng)研究[D]. 南京:南京理工大學,2007

  [5] 邵貝貝. 嵌入式實時操作系統(tǒng)μC/OS-II[M]. 北京: 北京航天航空大學出版社,2003.

  [6] 黃燕平. μC/OS-IIARM移植要點詳解[M]. 北京: 北京航空航天大學出版社,2005.

  [7] 黃杰. μC/OS-II在ARM系列單片機S3C44B0x上的移植[J]. 現(xiàn)代電子技術(shù), 2009(18): 44-45.

  [8] 陳是知. μC/OS-II內(nèi)核分析、移植與驅(qū)動開發(fā)[M]. 北京:人民郵電出版社, 2007.

  [9] 周航慈. 基于嵌入式實時操作系統(tǒng)的程序設(shè)計[M]. 北京:北京航空航天大學出版社, 2011.

  [10] 閆劍虹, 何泰祥. 步進電機高速啟停控制的單片機實現(xiàn)[J]. 空間電子技術(shù),2009(2):124-128.

  [11] 賀啟波. AVR32的便攜式無線醫(yī)療點滴監(jiān)控系統(tǒng)[J]. 單片機與嵌入式系統(tǒng)應(yīng)用,2012(9): 52-55.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美久久电影| 国产一区av在线| 久久久国产91| 午夜久久久久久| 亚洲曰本av电影| 亚洲综合国产精品| 亚洲午夜高清视频| 一本色道久久加勒比精品 | 亚洲一区二区黄色| 夜夜爽av福利精品导航| 在线视频精品一区| 一区二区三区日韩在线观看| 99在线精品观看| 一区二区三区av| 亚洲天堂成人| 亚洲男同1069视频| 午夜在线成人av| 久久国产一区二区| 亚洲人成毛片在线播放| 亚洲乱码久久| 亚洲视频日本| 午夜精品久久久久久久久久久| 欧美亚洲在线播放| 久久久久久有精品国产| 玖玖玖国产精品| 欧美激情一区二区三区四区| 欧美日韩一区二区三区视频| 欧美香蕉视频| 国产欧美亚洲视频| 一区二区在线视频| 亚洲激情欧美| 一区二区三区久久| 香蕉久久国产| 亚洲精品欧美日韩| 在线视频欧美日韩精品| 午夜视频精品| 蜜桃伊人久久| 欧美日韩 国产精品| 国产精品久久久久久久浪潮网站| 国产日韩欧美精品综合| 亚洲二区在线| 一区二区日韩精品| 欧美在线网站| aa亚洲婷婷| 欧美中文在线观看| 欧美aⅴ99久久黑人专区| 欧美日韩在线精品| 国产日韩欧美在线看| 伊人夜夜躁av伊人久久| 99热精品在线观看| 欧美中文在线观看| 一本到12不卡视频在线dvd| 欧美亚洲综合在线| 欧美成人69| 国产精品丝袜91| 亚洲高清视频一区二区| 亚洲视频一区| 久久狠狠亚洲综合| 亚洲午夜女主播在线直播| 久久久久久亚洲精品中文字幕| 欧美理论电影在线观看| 国产精品自拍一区| 亚洲黄色免费电影| 西西人体一区二区| 亚洲狼人综合| 久久精品青青大伊人av| 欧美日韩另类一区| 激情成人av在线| 亚洲视频中文| 亚洲免费久久| 久久精品视频导航| 欧美日韩一区二区在线观看视频| 国产一区二区视频在线观看| 99精品热视频| 亚洲国产日韩一级| 欧美中文字幕精品| 欧美三级视频| 亚洲国产经典视频| 欧美在线视频一区二区| 亚洲男女自偷自拍| 欧美精品日韩www.p站| 极品尤物av久久免费看| 亚洲欧美成人综合| 亚洲香蕉伊综合在人在线视看| 欧美xxx在线观看| 国产一级一区二区| 亚洲午夜久久久| 一本色道久久综合亚洲二区三区| 开心色5月久久精品| 国产美女精品视频| 一区二区三区久久网| 日韩视频精品| 免费亚洲电影在线| 国产亚洲欧美一区二区三区| 亚洲午夜国产一区99re久久| 亚洲最新视频在线| 欧美福利网址| 黄色一区二区三区| 性视频1819p久久| 亚洲免费中文字幕| 欧美色另类天堂2015| 亚洲人体影院| 亚洲精品人人| 免费一级欧美片在线观看| 国内精品国产成人| 欧美在线啊v一区| 久久精品日产第一区二区| 国产精品亚洲成人| 亚洲午夜伦理| 午夜精品视频| 国产精品日产欧美久久久久| 亚洲午夜精品久久久久久浪潮| 亚洲香蕉成视频在线观看 | 欧美日韩午夜在线| 亚洲精品日韩欧美| 99精品国产99久久久久久福利| 免费在线欧美黄色| 亚洲国产成人久久综合一区| 亚洲欧洲精品一区二区| 久久综合久久久久88| 一区三区视频| 亚洲国产一区在线| 母乳一区在线观看| 在线免费观看日韩欧美| 亚洲精品国产视频| 欧美另类高清视频在线| 亚洲美洲欧洲综合国产一区| 在线亚洲欧美| 国产精品久久久久7777婷婷| 亚洲伊人一本大道中文字幕| 欧美一区免费| 国产一区二区成人| 久久精品一级爱片| 欧美阿v一级看视频| 亚洲精品乱码久久久久久久久| 99re6热在线精品视频播放速度| 欧美日韩国产在线| 一区二区三区不卡视频在线观看| 亚洲——在线| 国产视频不卡| 亚洲国产精品黑人久久久| 欧美大学生性色视频| 91久久久国产精品| 亚洲午夜一区二区| 国产欧美日韩视频| 亚洲大片精品永久免费| 欧美激情中文不卡| 亚洲视频免费在线| 久久久精品999| 最新69国产成人精品视频免费| 一区二区三区成人| 国产精品一级| 亚洲国产三级在线| 欧美日韩一区高清| 欧美亚洲一区三区| 欧美成人亚洲成人| 亚洲午夜电影网| 久久久午夜精品| 亚洲激情av| 性做久久久久久久免费看| 精品9999| 亚洲一区欧美激情| 国产自产高清不卡| 夜夜嗨av一区二区三区中文字幕| 国产精品丝袜久久久久久app| 亚洲国产导航| 欧美午夜视频在线| 久久国产精品网站| 欧美日韩精品一区二区在线播放| 亚洲欧美伊人| 欧美成人一区二区在线| 亚洲性线免费观看视频成熟| 美女国产一区| 亚洲一区二区三区欧美| 久久综合精品国产一区二区三区| 99精品福利视频| 久久亚洲综合色| 一本色道久久综合亚洲精品不卡 | 久久久夜色精品亚洲| 亚洲美女在线看| 久久青青草原一区二区| 一本久久青青| 美女黄毛**国产精品啪啪 | 99国产一区| 韩国视频理论视频久久| 亚洲视频在线观看| **欧美日韩vr在线| 性欧美长视频| av不卡在线| 欧美aa国产视频| 欧美在线观看网站| 欧美三级小说| 亚洲人成人一区二区三区| 国产欧美日韩精品在线| 中日韩视频在线观看| 在线看不卡av| 欧美在线视频在线播放完整版免费观看| 亚洲精品在线免费观看视频| 久久伊人免费视频| 午夜精品短视频|