999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種ARM+DSP架構(gòu)的小型無人機(jī)飛行控制平臺(tái)軟件設(shè)計(jì)

2014-01-15 09:59:48雷金奎
電子設(shè)計(jì)工程 2014年15期
關(guān)鍵詞:設(shè)備系統(tǒng)

雷金奎, 趙 晨, 陳 浩

(1.西北工業(yè)大學(xué) 第365研究所,陜西 西安 710065;2.西北工業(yè)大學(xué) 陜西 西安 710072)

近年來,無人機(jī)[1]以其獨(dú)有的低成本、低損耗、零傷亡、可重復(fù)使用和高機(jī)動(dòng)等優(yōu)勢(shì),在軍用和民用領(lǐng)域的應(yīng)用范圍不斷擴(kuò)大,使得人們對(duì)無人機(jī)提出了更高的要求,因此作為無人機(jī)核心的飛行控制器的研究也越來越受到重視。高精度要求無人機(jī)控制系統(tǒng)的精度高,穩(wěn)定性好,能適應(yīng)復(fù)雜的環(huán)境,計(jì)算速度快,精度高[2],小型化則對(duì)控制系統(tǒng)的重量和體積提出了更高的要求。此外,還要具備實(shí)時(shí)、可靠的特點(diǎn)。

1 飛控平臺(tái)概述

本設(shè)計(jì)的無人機(jī)飛行控制平臺(tái)是基于ARM+DSP雙處理器協(xié)同工作來實(shí)現(xiàn)的,總體結(jié)構(gòu)圖如圖1所示。平臺(tái)選用SAMSUNG公司的ARM9處理器S3C2440作為主處理器,選用TI公司的DSP處理器TMS320F2812作為從處理器。雙口RAM芯片IDT7028L實(shí)現(xiàn)雙處理器之間的通訊,AD7490芯片將機(jī)載傳感器采集的信號(hào)由模擬量轉(zhuǎn)換為數(shù)字量,AD5628芯片用于輸出模擬控制量。平臺(tái)外擴(kuò)32M SDRAM,8路串口通信電路,具有30路離散I/O口,JTAG調(diào)試接口。主要實(shí)現(xiàn)的功能:

1)ARM主處理器采集各傳感器信號(hào),包括角速度、高度、飛行器姿態(tài)等參數(shù),經(jīng)調(diào)理電路濾除干擾后送入A/D轉(zhuǎn)換電路,將轉(zhuǎn)換后的數(shù)字量存入雙口RAM。

2)DSP從處理器通過雙口RAM獲取數(shù)據(jù),進(jìn)行控制律解算,產(chǎn)生PWM控制信號(hào)送入舵機(jī),保證無人機(jī)平穩(wěn)飛行。

圖1 系統(tǒng)總體結(jié)構(gòu)圖Fig.1 Structure diagram of the small UAV flight platform

2 軟件設(shè)計(jì)

根據(jù)平臺(tái)任務(wù)劃分,分別對(duì)ARM、DSP處理器進(jìn)行軟件設(shè)計(jì)。針對(duì)ARM主處理器需要完成U-boot內(nèi)核引導(dǎo)程序、Linux內(nèi)核、yaffs根文件系統(tǒng)的移植,建立起嵌入式ARMLinux系統(tǒng),基于此開發(fā)環(huán)境進(jìn)行驅(qū)動(dòng)及應(yīng)用程序開發(fā)。針對(duì)DSP從處理器主要基于CCS集成開發(fā)環(huán)境,使用C語(yǔ)言與匯編語(yǔ)言完成數(shù)據(jù)處理。

ARM處理器主要包括初始化模塊、數(shù)據(jù)采集模塊,其中數(shù)據(jù)采集模塊包括A/D轉(zhuǎn)換、串行通訊和無線通訊等。初始化模塊主要完成對(duì)ARM系統(tǒng)時(shí)鐘、中斷寄存器、外部存儲(chǔ)器的操作,保證串口、AD7490等的正常工作。數(shù)據(jù)采集模塊使用計(jì)數(shù)方式產(chǎn)生不同時(shí)間間隔的定時(shí)中斷,在中斷服務(wù)程序中完成對(duì)A/D轉(zhuǎn)換、串口等數(shù)據(jù)的采集并存入雙口RAM IDT7028L。

DSP處理器主要包括初始化模塊、控制律解算模塊。初始化模塊保證DSP系統(tǒng)正常工作。為滿足系統(tǒng)的實(shí)時(shí)性要求,控制律解算模塊通過設(shè)置合理的定時(shí)間隔讀取雙口RAM中的數(shù)據(jù),進(jìn)行控制律解算,向舵機(jī)輸出PWM控制信號(hào)。在解算過程中考慮到A/D轉(zhuǎn)換、串行通訊、無線傳輸具有不同的刷新速率,刷新速率較慢的數(shù)據(jù)使用歷史值作為當(dāng)前值。軟件設(shè)計(jì)流程圖如圖2所示。

圖2 軟件設(shè)計(jì)流程圖Fig.2 Flow chart of the software design

3 關(guān)鍵技術(shù)解決

飛控平臺(tái)軟件設(shè)計(jì)的關(guān)鍵是移植Linux操作系統(tǒng),并在此基礎(chǔ)上實(shí)現(xiàn)底層驅(qū)動(dòng)的開發(fā)。

3.1 Linux系統(tǒng)移植

3.1.1 Bootloader的移植

文中選用U-boot-1.1.6作為系統(tǒng)的Bootloader,在源碼基礎(chǔ)上修改添加開發(fā)板硬件相關(guān)文件、配置選項(xiàng)。首先修改最頂層Makefile,在其中添加如下兩行:

smdk2440_config:unconfig

@$ (MKCONFIG) $ (@:_CONFIG= ) arm arm920t smdk2440 NULL s3c24x0

修改board/smdk2440/lowlevel_init.S完成SDRAM的配置,修改board_init函數(shù)完成對(duì)S3C2440系統(tǒng)時(shí)鐘的改動(dòng),修改board/s3c2440/flash.c完成對(duì)Nor Flash的支持,修改driver/nand/nand.c等驅(qū)動(dòng)函數(shù)完成對(duì)Nand Flash等設(shè)備的支持,增加串口xmodem協(xié)議以便使用SecureCRT工具,增加“nand write”和“nand write.yaffs”等命令以燒寫內(nèi)核和 yaffs文件系統(tǒng)映像文件。 執(zhí)行“make s3c2440_config”和“make all”命令,對(duì)U-boot重新編譯,生成二進(jìn)制映像文件u-boot.bin,將其燒寫進(jìn)Nor Flash。

3.1.2 內(nèi)核的移植

首先配置內(nèi)核,確保內(nèi)核可以正確編譯。修改頂層Makefile,將如下代碼:

ARCH ?=$(SUBARCH)

CROSS_COMPILE?=

改為:

ARCH ?=arm

CROSS_COMPILE?=arm-linux-

根據(jù)U-boot對(duì)Flash的分區(qū)情況修改linux2.6.32/arch/

arm/mach-s3c2440/目錄下的mach-smdk2440.c等文件。修改drivers/mtd/nand下的s3c2440.c文件和arch/arm/plats3c24xx下的common-smdk.c文件,將相關(guān)設(shè)備注冊(cè)進(jìn)內(nèi)核,完成MTD分區(qū)。將yaffs2代碼通過腳本文件patch-der.sh給內(nèi)核打補(bǔ)丁的方式加入內(nèi)核。用make menuconfig命令進(jìn)入內(nèi)核配置界面,對(duì)內(nèi)核進(jìn)行裁剪,然后執(zhí)行“make dep”“make clean”“make zImage”命令生成內(nèi)核映像文件zImage。當(dāng)U-boot啟動(dòng)后就可以將內(nèi)核燒寫進(jìn)Nand Flash。

3.1.3 根文件系統(tǒng)的移植

鑒于訪問速度快的優(yōu)點(diǎn),選擇YAFFS文件系統(tǒng)進(jìn)行移植。利用Busybox-1.7.0來創(chuàng)建/bin、/sbin等目錄下的可執(zhí)行文件,并在/dev目錄下創(chuàng)建必需的設(shè)備節(jié)點(diǎn)、在/etc目錄下創(chuàng)建必需配置文件、在/lib目錄下包含庫(kù)文件。

在Busybox-1.7.0目錄下執(zhí)行“make menuconfig”命令可進(jìn)入配置界面對(duì)Busybox進(jìn)行相關(guān)配置。修改Busybox根目錄的Makefile,使用交叉編譯器,修改后為:

ARCH ?=arm

CROSS_COMPILE?=arm-linux-

然后執(zhí)行 “make”命令編譯Busybox,執(zhí)行命令“make CONFIG_PREFIX=dir_path install”將其安裝在指定目錄dir_path下,再加載glibc庫(kù)。創(chuàng)建etc目錄下的etc/inittab、etc/init.d/rcS和etc/fstab文件,在/dev目錄下靜態(tài)創(chuàng)建各種節(jié)點(diǎn),如/dev/mtdblock*、/dev/ttySAC*等。使用mdev初始化/dev和動(dòng)態(tài)更新,修改etc/fstab和etc/init.d/rcS使內(nèi)核啟動(dòng)時(shí)自動(dòng)運(yùn)行 mdev。 最 后 創(chuàng) 建 proc、mnt等 空 目 錄 。 使 用 命 令“mkyaffsimage”創(chuàng)建YAFFS文件系統(tǒng)映像文件,進(jìn)而燒寫到目標(biāo)板。

3.2 底層驅(qū)動(dòng)的實(shí)現(xiàn)

3.2.1 AD7490驅(qū)動(dòng)的實(shí)現(xiàn)

AD7490作為字符設(shè)備,其讀寫是以字節(jié)為單位的,采用可加載模塊化機(jī)制來開發(fā)設(shè)備驅(qū)動(dòng)程序。首先對(duì)設(shè)備進(jìn)行初始化,AD7490設(shè)備的初始化包括兩部分,一是對(duì)SPI工作方式、各控制寄存器和模式寄存器等配置參數(shù),并將PIO配置為引腳外設(shè)控制;二是完成設(shè)備驅(qū)動(dòng)程序向Linux內(nèi)核注冊(cè),調(diào)用函數(shù)register_chrdev()實(shí)現(xiàn)驅(qū)動(dòng)模塊的注冊(cè),調(diào)用函數(shù)unregiste_chrdev()實(shí)現(xiàn)驅(qū)動(dòng)模塊注銷。

對(duì)于字符設(shè)備驅(qū)動(dòng)程序是通過file_operations結(jié)構(gòu)體中的成員函數(shù)實(shí)現(xiàn)對(duì)Linux的系統(tǒng)調(diào)用的。file_operations結(jié)構(gòu)體如下:

static struct file_operations AD7490_fops={

.owner= THIS_MODULE;

.llseek= NULL;

.read= ad7490_rd;

.write= ad7490_wr;

.open= ad7490_open;

.release=ad7490_close;

};

構(gòu)造file_operations結(jié)構(gòu)中用到的各個(gè)成員函數(shù),每個(gè)成員都對(duì)應(yīng)一個(gè)系統(tǒng)調(diào)用,當(dāng)用戶操作設(shè)備文件時(shí)系統(tǒng)調(diào)用通過設(shè)備文件的主設(shè)備號(hào)找到相應(yīng)設(shè)備驅(qū)動(dòng)程序,再通過file_operations中相應(yīng)函數(shù)指針,由該函數(shù)進(jìn)行相應(yīng)控制。

最后編寫Makefile文件,執(zhí)行“make”命令進(jìn)行編譯,生成可執(zhí)行的.ko文件。編譯成功后在目標(biāo)板的映射目錄下執(zhí)行“insmod”命令進(jìn)行動(dòng)態(tài)加載,執(zhí)行“rmmod”命令實(shí)現(xiàn)動(dòng)態(tài)卸載。驅(qū)動(dòng)程序加載后,還需編寫A/D測(cè)試程序來驗(yàn)證驅(qū)動(dòng)程序是否實(shí)現(xiàn)了相應(yīng)功能。經(jīng)驗(yàn)證,該驅(qū)動(dòng)成功實(shí)現(xiàn)了預(yù)期功能。

3.2.2 IDT7028L驅(qū)動(dòng)的實(shí)現(xiàn)

將雙口RAM IDT7028L作為塊設(shè)備編寫驅(qū)動(dòng)程序,利用一塊系統(tǒng)內(nèi)存作為緩沖區(qū),當(dāng)用戶進(jìn)程對(duì)設(shè)備進(jìn)行讀寫請(qǐng)求時(shí)驅(qū)動(dòng)程序先查看緩沖區(qū)內(nèi)容,若能滿足要求就返回相應(yīng)數(shù)據(jù),否則就調(diào)用相應(yīng)的請(qǐng)求函數(shù)進(jìn)行實(shí)際的I/O操作。

首先對(duì)雙口RAM進(jìn)行初始化,配置寄存器、分配地址資源并初始化數(shù)據(jù)結(jié)構(gòu)、申請(qǐng)中斷和注冊(cè)設(shè)備[4]。調(diào)用函數(shù)register_blkdev()實(shí)現(xiàn)驅(qū)動(dòng)注冊(cè),不使用請(qǐng)求隊(duì)列而是使用制造請(qǐng)求的方式實(shí)現(xiàn)I/O請(qǐng)求處理,分配gendisk,初始化gendisk,添加gendisk到系統(tǒng)中,調(diào)用函數(shù)unregister_blkdev()實(shí)現(xiàn)驅(qū)動(dòng)注銷。

類似于字符設(shè)備驅(qū)動(dòng)中的file_operations結(jié)構(gòu)體,在塊設(shè)備驅(qū)動(dòng)中有block_device_operations結(jié)構(gòu)體。定義結(jié)構(gòu)體如下:

static struct block_device_operations IDT7028L_fops={.owner= THIS_MODULE;

.open= idt7028_open;

.release=idt7028_close;

.ioctl= idt7028_ioctl;

.media_changed= idt7028_media_changed;

.revalidate_disk=idt7028_revalidate_disk;

.getgeo=idt7028_getgeo;

};

實(shí)現(xiàn)block_device_operations結(jié)構(gòu)體中的各個(gè)函數(shù),編寫Makefile文件,編譯、加載該驅(qū)動(dòng)模塊。經(jīng)測(cè)試程序驗(yàn)證,該驅(qū)動(dòng)成功實(shí)現(xiàn)了預(yù)期功能。

4 結(jié) 論

文中研究了ARM+DSP架構(gòu)的小型無人機(jī)飛行控制平臺(tái)軟件設(shè)計(jì),分析了系統(tǒng)功能模塊,給出了系統(tǒng)軟件設(shè)計(jì)流程和關(guān)鍵技術(shù)的解決方法。實(shí)踐證明該方案合理可行,軟件可靠性高,系統(tǒng)具有抗干擾能力強(qiáng)、實(shí)時(shí)處理效果好的優(yōu)點(diǎn)。

[1]張小林,趙宇博.新一代高性能無人機(jī)飛控系統(tǒng)的研究與設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2010,18(11):2588-2590.ZHANG Xiao-lin,ZHAO Yu-bo.Research and design of new generation high performance unmanned aerial vehicle flight controlsystem[J].Computer Measurement& Control,2010,18(11):2588-2590.

[2]王昱輝,雷金奎.基于SmartFusion的無人機(jī)飛行控制系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(10):129-131.WANG Yi-hui,LEI Jin-kui.Design of smartfusion-based flight control system forUAVs[J].Modern Electronics Technique,2012,35(10):129-131.

[3]楊小兵.基于雙ARM的飛控計(jì)算機(jī)核心系統(tǒng)的研究與設(shè)計(jì)[D].南京:南京航空航天大學(xué),2012.

[4]孫習(xí)波,陽(yáng)富民.嵌入式系統(tǒng)雙口RAM應(yīng)用及驅(qū)動(dòng)開發(fā)[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(8):2257-2259.SUN Xi-bo,YANG Fu-min.Application and driver development of dual-port ram in embedded system[J]. Computer Engineering and Design,2005,26(8):2257-2259.

[5]張綺文.ARM嵌入式常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講[M].北京:電子工業(yè)出版社,2007.

[6]蘇奎峰.TMS320F2812原理與開發(fā)[M].北京:電子工業(yè)出版社,2005.

猜你喜歡
設(shè)備系統(tǒng)
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡(jiǎn)單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
主站蜘蛛池模板: 日韩AV手机在线观看蜜芽| 亚洲国产精品人久久电影| 亚洲综合网在线观看| 91麻豆精品视频| 色吊丝av中文字幕| 手机精品福利在线观看| 国产精品jizz在线观看软件| 精品日韩亚洲欧美高清a| 国产精品自在自线免费观看| 99精品欧美一区| 亚洲无线国产观看| 亚洲性色永久网址| 国产老女人精品免费视频| 久久99国产综合精品1| 中文字幕 91| 91精品啪在线观看国产91| 玩两个丰满老熟女久久网| 黄色免费在线网址| 国产一级特黄aa级特黄裸毛片| 九九视频免费看| 手机在线国产精品| 日日噜噜夜夜狠狠视频| 91无码视频在线观看| 无码区日韩专区免费系列| 欧美午夜性视频| 无码aⅴ精品一区二区三区| 国产极品美女在线| 国产精品无码翘臀在线看纯欲| av天堂最新版在线| 亚洲成a人片| 91麻豆精品国产高清在线| 亚洲a级在线观看| 中国一级特黄视频| 日本爱爱精品一区二区| 一区二区午夜| 麻豆精品在线视频| 国产原创自拍不卡第一页| 丰满人妻久久中文字幕| 精品无码专区亚洲| 国产免费人成视频网| 中文字幕精品一区二区三区视频| 97人妻精品专区久久久久| 国产欧美在线观看一区| 茄子视频毛片免费观看| 国产第一页免费浮力影院| 综合色亚洲| 香蕉eeww99国产在线观看| 亚洲区欧美区| 久精品色妇丰满人妻| 亚洲日产2021三区在线| 精品人妻无码中字系列| 久久久精品国产亚洲AV日韩| 国产精品xxx| 91在线视频福利| 国产一级小视频| 青青草国产免费国产| 中国成人在线视频| 国内精品免费| 中文字幕久久亚洲一区| 亚卅精品无码久久毛片乌克兰| 亚洲国产精品一区二区第一页免| 久久a毛片| 亚洲国产欧美自拍| 女同国产精品一区二区| 日韩无码黄色网站| 国产精品熟女亚洲AV麻豆| 日韩天堂视频| 亚洲男人的天堂久久香蕉| 91探花在线观看国产最新| 青草91视频免费观看| 在线观看无码a∨| 中文字幕精品一区二区三区视频| 国产一区二区网站| 亚洲va视频| 久久精品日日躁夜夜躁欧美| 亚洲第一成年网| 国产在线一二三区| 精品少妇人妻av无码久久| 毛片三级在线观看| 日韩黄色大片免费看| 人妻无码中文字幕一区二区三区| 国产精品视频久|