freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

小型移動機器人遠(yuǎn)程控制系統(tǒng)設(shè)計畢業(yè)設(shè)計(文件)

2024-08-17 13:52 上一頁面

下一頁面
 

【正文】 顯示設(shè)備,則初始化該類設(shè)備。將下載的源代碼解壓后,可以看到有很多的文件和目錄,其中和移植相關(guān)的文件夾有:(1) CPUCPU相關(guān)文件,其中的子目錄都是以uboot所支持的CPU為名,比如有子目錄arm920t、mips、mpc8260和nios等。在smdk2410子目錄中有makefile、。 uboot的移植過程由于uboot已經(jīng)支持了S3C2410微處理器,所以CPU目錄下的文件不需要專門去編寫,而與主控制板相關(guān)的代碼也可以參照board/smdk2410目錄中的文件進行開發(fā)。先在“ifeq ($(ARCH),arm)”這一行的下面添加“CROSS_COMPILE = /opt/host/armv4l/bin/armv4l unknownlinux” 來指定交叉編譯器的路徑;再在合適的地方添加如下兩行代碼:myboard_config : unconfig./mkconfig $(:_config=) arm arm920t myboard NULL s3c24x03. ;根據(jù)設(shè)置的FPCLK和串口波特率修改/cpu/arm920t/s3c24x0/。在本系統(tǒng)中,F(xiàn)LASH使用的是Intel的E28F128系列芯片大小為16M字節(jié)。此時,將主控制板的串口0與電腦相連,重新啟動開發(fā)板,就可以通過串口看到uboot的啟動信息了,如圖33所示。由于像 ARM 這樣的嵌入式 CPU 通常都是在統(tǒng)一的地址空間中尋址 Flash 等固態(tài)存儲設(shè)備的,因此從 Flash 上讀取數(shù)據(jù)與從 RAM 單元中讀取數(shù)據(jù)并沒有什么不同,用一個簡單的循環(huán)就可以完成從 Flash 設(shè)備上拷貝映像的工作。每個標(biāo)記由標(biāo)識被傳遞參數(shù)的 tag_header 結(jié)構(gòu)以及隨后的參數(shù)值數(shù)據(jù)結(jié)構(gòu)來組成。我們用這樣一個命令行參數(shù)字符串console=ttyS0,115200n8來通知內(nèi)核以 ttyS0 作為控制臺,且串口采用 115200bps、無奇偶校驗、8位數(shù)據(jù)位這樣的設(shè)置。 Linux內(nèi)核的移植Linux系統(tǒng)能支持如此多平臺的部分原因是因為內(nèi)核把源程序代碼清晰的劃分為體系結(jié)構(gòu)無關(guān)部分和體系結(jié)構(gòu)相關(guān)部分[41]。(2) /drivers包含了內(nèi)核中所有的設(shè)備驅(qū)動程序。比如asmarm是arm平臺需要的庫文件。(7) /kernel包含了主內(nèi)核代碼。實際上,在開源社區(qū)中已經(jīng)有很多人做過針對ARM架構(gòu)處理器的移植工作,其中最有影響力的是由Russell King領(lǐng)導(dǎo)的ARMLinux[42]。此時主要的工作,就是根據(jù)需要對內(nèi)核進行裁剪和編譯:(1) 修改Linux源代碼根目錄下的makefile,指定目標(biāo)板處理器類型,即“ARCH=arm” ,并指定交叉編譯器的路徑“CROSS_COMPILE = /opt/host/armv4l/bin/armv4lunknownlinux” ;(2) 配置內(nèi)核:make menuconfig;(3) 創(chuàng)建內(nèi)核依賴關(guān)系:make dep;(4) 創(chuàng)建內(nèi)核鏡像文件:make zImage;(5) 創(chuàng)建內(nèi)核模塊:make modulesmake,modules_install。這些接口完全隱藏了設(shè)備的工作細(xì)節(jié)。這種模塊化的特點使得Linux驅(qū)動程序的編寫非常簡單,因此內(nèi)核驅(qū)動程序的數(shù)目也迅速增長,目前已有成百上千的驅(qū)動程序可用。一般來說,Linux的設(shè)備驅(qū)動程序需要完成如下功能:(1) 設(shè)備初始化、釋放;(2) 提供各類設(shè)備服務(wù);(3) 負(fù)責(zé)內(nèi)核和設(shè)備之間的數(shù)據(jù)交換;(4) 檢測和處理設(shè)備工作過程中出現(xiàn)的錯誤。(3) USB設(shè)備類驅(qū)動:是最終與應(yīng)用程序交互的軟件模塊,其主要實現(xiàn)的功能有:訪問特定的USB設(shè)備、為應(yīng)用程序提供訪問接口等。本系統(tǒng)使用了兩個USB設(shè)備,即USB無線網(wǎng)卡和USB攝像頭。目前,該項目對基于Intersil Prism Prism3 芯片的PCMCIA、PCI和 USB無線網(wǎng)卡的支持比較好。1) 。其中“ssid=sensorrobot”是無線路由器的ID,“authtype=opensystem”表示沒有安全密碼設(shè)置。本系統(tǒng)將無線網(wǎng)卡的這些配置操作添加到/usr/etc/(Linux系統(tǒng)的啟動腳本)中,這樣就可以實現(xiàn)開機自動加載驅(qū)動。攝像頭屬于視頻類設(shè)備。Linux本身集成了基于ov511芯片的攝像頭驅(qū)動。具體的移植過程如下:1) 打補丁。進行相應(yīng)的修改即可。此時,在主控制板的USB HOST2口插入攝像頭,在主控制板的控制臺執(zhí)行“insmod /application/”,即可以看到攝像頭被成功驅(qū)動的信息,如圖36所示。目前,大多數(shù)機器人的這兩個部分是作為兩個獨立單元來實現(xiàn)的,即一塊運動驅(qū)動板控制電機,一塊傳感器采集板完成信號的采集。為實現(xiàn)這些底層操作對上層的封裝,系統(tǒng)為其定義了一套命令接口。轉(zhuǎn)速的大小則由每個周期中高電平持續(xù)時間的長短決定:當(dāng)高電平持續(xù)時間為1ms時,電機順時針轉(zhuǎn)動最快;當(dāng)高電平持續(xù)時間為2ms時,電機逆時針轉(zhuǎn)動最快;,電機停止轉(zhuǎn)動。在該函數(shù)中,要根據(jù)傳入的參數(shù)來修改速度緩存區(qū)中對應(yīng)通道的速度值,若是第一次調(diào)用該函數(shù),還需初始化定時器3,如設(shè)置定時器工作模式,中斷使能等。電子羅盤能提供機器人的方位信息,其輸出的數(shù)據(jù)格式為一組連續(xù)的方波信號,因此采用捕獲方式來采集該數(shù)據(jù);超聲波傳感器可以用來檢測機器人周圍是否有障礙物及障礙物的距離,其輸出的數(shù)據(jù)格式也是一組連續(xù)的方波信號,因此也采用捕獲方式來采集該數(shù)據(jù);光敏傳感器能測量環(huán)境中光的強度,其輸出是模擬信號,因此采用A/D轉(zhuǎn)換來采集該傳感器的信息;碰撞開關(guān)能檢測機器人是否碰到了物體,其輸出格式為二進制值,即在39。中變化,因此采用數(shù)字接口來檢測該傳感器的值。 行為控制行為控制以機器人的運動控制和傳感器信息采集為基礎(chǔ),能完成某個具體的動作。 // 13通道接的是電子羅盤currentangle=sensor_buf[13]。 if((destangle359)amp。 motor(4,170)。(currentangle=(destangle360))) currentangle =currentangle +360。 while(1) { sensor(6,13)。以下是右轉(zhuǎn)指定角度的代碼片斷:void mand_right(unsigned int turnangle){ int destangle,currentangle。其中mand_h代表傳感器的類型;mand_l代表該傳感器所在的傳感器通道號。和39。圖41是該部分控制的程序流程圖。這一部分主要由電機控制函數(shù)motor(channel ,speed)和定時器3的中斷處理函數(shù)來完成。當(dāng)上位機有數(shù)據(jù)到達(dá)時,首先判斷其是高級控制命令,還是狀態(tài)信息查詢、停止運行或繼續(xù)運行,若是狀態(tài)信息查詢,則直接將保存在緩沖區(qū)中機器人狀態(tài)信息發(fā)送回上位機;若是停止運行命令,則需要停止定時器3的運行,并將其中斷關(guān)掉,這樣電機的控制信號就能停止輸出,從而使電機停止轉(zhuǎn)動;若是繼續(xù)運行命令,則只需重新啟動定時器3,并將其中斷使能;若是高級控制命令,則需將接收模式標(biāo)志置1,準(zhǔn)備接收二級命令,當(dāng)三個字節(jié)接收完畢后,要將接收模式標(biāo)志置0,然后根據(jù)二級命令的數(shù)值調(diào)用相應(yīng)的處理函數(shù),當(dāng)處理函數(shù)執(zhí)行完畢時,需向上位機返回一個命令執(zhí)行完畢標(biāo)志。另外,本系統(tǒng)還通過一個支持Zigbee協(xié)議[47]的無線通訊模塊接入到布置在環(huán)境中的無線傳感網(wǎng)絡(luò)中,極大拓展了機器人對環(huán)境的感知能力,并為無線傳感器網(wǎng)絡(luò)與移動機器人的協(xié)作性研究提供了可能。文中詳細(xì)說明了在移植過程中筆者遇到的問題及相應(yīng)的解決方法。進入內(nèi)核源代碼樹的根目錄,執(zhí)行“make menuconfig”,首先*選擇Multimedia device下的Video for linux,然后在usb support目錄下*選擇support for usb,M選擇SPCA5XX這一項,保存退出;再執(zhí)行“make dep;make zImage;make modules” ,就會在/driver/usb/,。此時會有錯誤出現(xiàn)。這些驅(qū)動有專門針對嵌入式系統(tǒng)進行優(yōu)化的版本,另外,還提供了與驅(qū)動程序相配合的視頻流服務(wù)/播放器。這個標(biāo)準(zhǔn)定義了一套接口,內(nèi)核、驅(qū)動、應(yīng)用程序以這個接口為標(biāo)準(zhǔn)進行交流。圖35 無線網(wǎng)卡啟動信息 USB攝像頭驅(qū)動程序移植USB攝像頭以其良好的性能和低廉的價格得到廣泛應(yīng)用。設(shè)置無線網(wǎng)卡的IP地址。3) 執(zhí)行“wlanctlng wlan0 lnxreq_ifstate ifstate=enable”。具體的步驟如下:(1) 執(zhí)行make config,選擇for usb,指定Linux的源代碼所在路徑(在編譯過程中會用到內(nèi)核的一些文件),指定交叉編譯器路徑; (2) 執(zhí)行make進行編譯。 USB無線網(wǎng)卡驅(qū)動程序移植在Linux下驅(qū)動USB無線網(wǎng)卡,除了按常規(guī)的做法進行代碼開發(fā)外(工作量非常大),還可以使用以下兩種途徑:1. ndiswrapper[44]ndiswrapper通過在Linux平臺上虛擬windows的api,然后用windows下的驅(qū)動程序來驅(qū)動網(wǎng)卡。Linux定義了通用的數(shù)據(jù)結(jié)構(gòu)URB用來在USB設(shè)備類驅(qū)動和USBD,USBD和HCD間進行數(shù)據(jù)傳輸。Linux USB主機驅(qū)動由三部分組成:(1) USB主機控制器驅(qū)動(HCD):是USB主機驅(qū)動程序中直接與硬件交互的軟件模塊,其主要功能有:主機控制器硬件初始化;為USBD層提供相應(yīng)的接口函數(shù);提供根HUB(ROOT HUB)設(shè)備配置、控制功能;完成4種類型的數(shù)據(jù)傳輸?shù)取K設(shè)備驅(qū)動程序和字符設(shè)備驅(qū)動程序的主要區(qū)別是:在對字符設(shè)備發(fā)出讀寫請求時,實際的硬件I/O一般緊接著就發(fā)生了,塊設(shè)備則不然,它利用一塊系統(tǒng)內(nèi)存作為緩沖區(qū),當(dāng)用戶進程對設(shè)備請求能滿足用戶的要求時,就返回請求的數(shù)據(jù),如果不能就調(diào)用請求函數(shù)來進行實際的I/O操作。將這些調(diào)用映射到作用于實際硬件的設(shè)備特有操作上,則是設(shè)備驅(qū)動程序的任務(wù)。圖34是移植的Linux系統(tǒng)啟動時的畫面。這其中已經(jīng)包括了基于S3C2410處理器的計算設(shè)備。(9) /net包含了和網(wǎng)絡(luò)相關(guān)的代碼。這是研究核心如何工作的好起點。(4) /include包含了建立內(nèi)核代碼時所需的大部分庫文件,這個模塊利用其他模塊重建內(nèi)核。移植工作的重點就是移植arch目錄下的文件。調(diào)用 Linux 內(nèi)核的方法是直接跳轉(zhuǎn)到內(nèi)核的第一條指令處,即執(zhí)行“theKernel (0, bdbi_arch_number, bdbi_boot_params)”。3. 設(shè)置命令行參數(shù)。Linux 以后的內(nèi)核都期望以標(biāo)記列表(tagged list)的形式來傳遞啟動參數(shù)。這部分工作主要是由/lib_arm/,可以在已有的文件基礎(chǔ)上根據(jù)控制板參數(shù)進行適當(dāng)?shù)男薷募纯伞?. 實現(xiàn)網(wǎng)口芯片DM9000的驅(qū)動,主要是在drivers/ , 主要包括以下函數(shù):int eth_init (bd_t *bd),初始化網(wǎng)絡(luò)設(shè)備; void eth_halt (void),關(guān)閉網(wǎng)絡(luò)設(shè)備; int eth_send (volatile void *packet,int len),發(fā)送數(shù)據(jù)包; int eth_rx (void) 接收數(shù)據(jù)包;最后在drivers/。5. 根據(jù)主控制板存儲設(shè)備的配置情況,修改/board/myboard/ ,設(shè)置各個bank的控制器參數(shù),如SDRAM的刷新頻率、數(shù)據(jù)位寬度等。在include/configs/。(3) lib_armARM體系結(jié)構(gòu)下的相關(guān)實現(xiàn)代碼,、。其中,、設(shè)置指令Cache和數(shù)據(jù)Cache等;,比如快速中斷、開關(guān)中斷、時鐘中斷、軟件中斷、預(yù)取中止和未定義指令等;,它主要是設(shè)置系統(tǒng)堆棧和工作方式,為進入C程序奠定基礎(chǔ);s3c24x0和at91rm9200等子目錄下的文件則是對那些集成了arm920t核的微處理器相關(guān)的代碼,、。(7) 進入命令循環(huán),接受用戶從串口輸入的命令,然后進行相應(yīng)的工作。(3) 初始化系統(tǒng)內(nèi)存分配函數(shù)。(6) 初始化堆棧。(2) 設(shè)置異常向量(Exception Vector)。 uboot啟動流程uboot可以分為stage1和stage2兩大部分。它可對PowerPC、MPC、ARM、MIPS、X86等架構(gòu)的處理器提供支持,支持的嵌入式操作系統(tǒng)有Linux、VxWorks、NetBSD、QNX、LynxOS等,主要用來開發(fā)嵌入式系統(tǒng)初始化代碼Bootloader。Bootloader代碼與CPU芯片的內(nèi)核結(jié)構(gòu)、具體型號、應(yīng)用系統(tǒng)的配置及使用的操作系統(tǒng)等因素有關(guān),其功能類似于PC機的BIOS程序。 最后,退出setup,執(zhí)行如下命令以啟動TFTP服務(wù): service xinetd restart 在具體的開發(fā)過程中,宿主PC 機上運行mini 作為目標(biāo)板的顯示終端,在目標(biāo)板上通過NFS (網(wǎng)絡(luò)文件系統(tǒng)) 來mount宿主機硬盤,讓應(yīng)用程序直接運行在目標(biāo)板上進行調(diào)試。GNU交叉編譯器選擇的是armv4lunknownlinuxgcc。 開發(fā)時使用宿主機上的交叉編譯、匯編及連接工具形成能在目標(biāo)板上執(zhí)行的二進制代碼,然后把可執(zhí)行文件下載到目標(biāo)機上運行[37]。 嵌入式Linux系統(tǒng)的開發(fā)模式絕大多數(shù)的Linux 軟件開發(fā)都是以native 方式進行的,即本機開發(fā)、調(diào)試,本機運行的方式。嵌入式Linux系統(tǒng)支持各種標(biāo)準(zhǔn)的通訊協(xié)議,能為服務(wù)器提供完備的網(wǎng)絡(luò)環(huán)境。 本章小結(jié)本章首先介紹了幾種常見的機器人遠(yuǎn)程控制架構(gòu);然后針對機器人小型化和群體化的發(fā)展趨勢,設(shè)計了一個基于嵌入式Linux的移動機器人運程控制系統(tǒng)架構(gòu),并對架構(gòu)中的各個部分的設(shè)計思想進行了分析。無線傳感器網(wǎng)絡(luò)能對環(huán)境進行大范圍的、連續(xù)的監(jiān)測,可以彌補機器人感知能力的不足。這款芯片接口豐富,性價比高,
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1