• 
    

    
    

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

      基于ARM的某智能彈藥無(wú)線通信模塊的設(shè)計(jì)

      2012-06-23 06:38:42羅金選
      火控雷達(dá)技術(shù) 2012年2期
      關(guān)鍵詞:宿主機(jī)PC機(jī)內(nèi)核

      羅金選 袁 著 張 益

      (電子科技大學(xué) 成都 611731)

      1 引言

      嵌入式系統(tǒng)的構(gòu)架從下到上,一般分為硬件、bootloader程序,嵌入式linux設(shè)備驅(qū)動(dòng)程序、嵌入式linux內(nèi)核、linux系統(tǒng)調(diào)用接口、根文件系統(tǒng)、應(yīng)用程序,其本質(zhì)上依然是計(jì)算機(jī)系統(tǒng),但相對(duì)于傳統(tǒng)通用的PC機(jī)來(lái)說(shuō),是軟硬件可以自由裁剪,在功能、可靠性、成本、體積、能耗方面有更加嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。為了適應(yīng)某彈藥項(xiàng)目中各個(gè)節(jié)點(diǎn)在高速飛行的情況下,硬件上必須輕捷穩(wěn)定,軟件上必須完全支持該模塊利用某復(fù)雜協(xié)議進(jìn)行可靠通信和無(wú)線音視頻數(shù)據(jù)傳輸?shù)囊?,自主設(shè)計(jì)了以S3C2440 ARM為主控制器,以linux2.6為操作系統(tǒng)的嵌入式無(wú)線通信模塊,以下是該模塊從下到上設(shè)計(jì)過(guò)程中每個(gè)步驟的調(diào)試情況和最終測(cè)試結(jié)果。

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

      該無(wú)線通信模塊的硬件框架主要包括一個(gè)S3C2440 ARM主控制器、兩片32M的SDRAM組成的64M內(nèi)存、一片2M的 NorFlash,一片512M的NandFlash,以及一個(gè)晶振、一個(gè)電源模塊、一個(gè)HJtag調(diào)試接口及一個(gè)用于選擇啟動(dòng)方式的開(kāi)關(guān),也即一個(gè)ARM嵌入式系統(tǒng)可以運(yùn)行的最基本條件。另外還包括一些外圍電路,主要有:4個(gè)USB接口,其中一個(gè)充當(dāng)從設(shè)備的接口,用于在bootloader的引導(dǎo)下從宿主機(jī)下載內(nèi)核和文件系統(tǒng),另外三個(gè)充當(dāng)主設(shè)備接口,用于連接USB外部設(shè)備;3個(gè)TTL電平的9孔串口通過(guò)電平轉(zhuǎn)換之后分別連接著一個(gè)無(wú)線數(shù)據(jù)傳輸模塊和一個(gè)GPS模塊,還有一個(gè)用于在調(diào)試的時(shí)候和宿主機(jī)通信;一個(gè)以太網(wǎng)接口用于在調(diào)式階段從宿主機(jī)上通過(guò)NFS協(xié)議掛載文件系統(tǒng),和在研發(fā)階段利用TFTP或者NFS協(xié)議從宿主機(jī)上下載內(nèi)核和文件系統(tǒng);一個(gè)圖像采集模塊用于采集實(shí)時(shí)圖像,一個(gè)帶觸摸屏的LCD用于顯示采集過(guò)來(lái)的圖像和操作界面,一個(gè)VGA轉(zhuǎn)接板接口可以用于接PC機(jī)顯示屏,一個(gè)音頻接口用于聲音采集,一個(gè)蜂鳴器用于調(diào)試發(fā)聲。無(wú)線通信模塊的總體框架如圖1所示,實(shí)物如圖2所示。

      3 bootloader移植

      嵌入式產(chǎn)品在研發(fā)階段,bootloader除 了要引導(dǎo)操作系統(tǒng)之外,還有一個(gè)重要的原因就是必須在bootloader的引導(dǎo)下才能將linux內(nèi)核和文件系統(tǒng)從宿主機(jī)下載到目標(biāo)機(jī)的內(nèi)存,然后再由bootloader將linux內(nèi)核和文件系統(tǒng)從內(nèi)存復(fù)制到Flash(相當(dāng)于PC機(jī)的硬盤(pán))中永久保存,在下一次系統(tǒng)啟動(dòng)的時(shí)候又要由它將Flash中的linux內(nèi)核讀到RAM中去執(zhí)行,因此沒(méi)有bootloader的存在,就無(wú)法進(jìn)行后面的工作,linux內(nèi)核也就永遠(yuǎn)沒(méi)辦法啟動(dòng)起來(lái),它的作用就像PC機(jī)中的BIOS,簡(jiǎn)單的說(shuō),bootloader就是系統(tǒng)復(fù)位之后在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一小段程序,通過(guò)這一小段程序,初始化硬件設(shè)備,建立內(nèi)存空間的映射圖,將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),最終引導(dǎo)操作系統(tǒng)。目前比較流行的bootloader主要有德國(guó)DENX軟件工程中心開(kāi)發(fā)的U-boot和韓國(guó)三星公司開(kāi)發(fā)的VIVI。而U-boot是一個(gè)比較統(tǒng)通用的bootloader,支持很多不同體系架構(gòu)的處理器,如:ARM,POWERPC,X86,MIPS,XSale等,它的啟動(dòng)過(guò)程通常分兩個(gè)階段,總體啟動(dòng)流程圖如圖3所示。

      圖3 U-boot啟動(dòng)流程圖

      移植第一階段代碼的主要根據(jù)是ARM的最小系統(tǒng)即根據(jù)CPU的體系結(jié)構(gòu)和SDRAM,F(xiàn)LASH芯片的型號(hào)不同來(lái)設(shè)置,屬于芯片級(jí)移植,主要是修cpu/arm920t/start.S文件,用匯編語(yǔ)言編寫(xiě),具體所做的事情主要有:設(shè)置CPU進(jìn)入svc模式,關(guān)閉看門(mén)狗,屏蔽所有中斷,設(shè)置CPU的速度,時(shí)鐘頻率,關(guān)閉MMU和cache,初始化SDRAM控制器,設(shè)置堆棧,清空bss數(shù)據(jù)段,至此:整個(gè)系統(tǒng)SDRAM存儲(chǔ)空間映射情況如圖4所示,已經(jīng)為第二階段準(zhǔn)備好一些基本的硬件環(huán)境,然后初始化Flash控制器,再?gòu)腇lash中拷貝第二階段代碼到RAM空間。

      圖4 U-boot內(nèi)存空間映射圖

      第二階段屬于板級(jí)移植,電路板不同,代碼就不同,當(dāng)U-boot的 start.S運(yùn)行到"-start-armboot:.word start-armboot"時(shí),就會(huì)調(diào)用 lib-arm/board.c中的start-armboot函數(shù),至此U-boot進(jìn)入第二階段,這一階段的代碼主要是建立起和宿主機(jī)的通信,并從宿主機(jī)上將linux內(nèi)核和文件系統(tǒng)下載到目標(biāo)機(jī)上,具體要做的事情主要有開(kāi)發(fā)板的相關(guān)配置:時(shí)鐘初始化,環(huán)境變量初始化,串口控制臺(tái)初始化,配置可用的RAM,NorFlash初始化,NandFlash再次初始化,網(wǎng)卡初始化等,usb等功能的實(shí)現(xiàn)。初始化完成后就可以建立起和宿主機(jī)之間的通信,然后將linux內(nèi)核文件系統(tǒng)下載到目標(biāo)機(jī)上,并寫(xiě)入Flash中永久保存。從宿主機(jī)下載內(nèi)核和文件系統(tǒng)可以采用tftp或者nfs協(xié)議下載,也可以通過(guò)USB接口下載。以下是實(shí)現(xiàn)tftp和nfs協(xié)議的U-boot成功運(yùn)行之后的的啟動(dòng)界面,如圖5所示。

      圖5 U-boot的啟動(dòng)界面

      4 linux內(nèi)核移植和根文件系統(tǒng)制作

      linux2.6操作系統(tǒng)幾乎支持市面上所有的嵌入式處理器,具有很好的可移植性,但是從官方網(wǎng)站下載的linux內(nèi)核是不能在即定的硬件平臺(tái)上運(yùn)行的,必須根據(jù)CPU的體系結(jié)構(gòu),和電路板的設(shè)計(jì)對(duì)linux內(nèi)核內(nèi)與硬件相關(guān)的一部分代碼做相應(yīng)的修改,然后利用已經(jīng)搭建好的交叉編譯環(huán)境編譯新的Linux內(nèi)核,再下載到板子上運(yùn)行。Linux內(nèi)核移植步驟如下:

      第一步:進(jìn)入內(nèi)核根目錄修改Makefile文件為

      第四步:修改NandFlash分區(qū),這里只創(chuàng)建四個(gè)分區(qū),四個(gè)分區(qū)空間分配結(jié)構(gòu)如圖6所示。

      圖6 NandFlash空間分配結(jié)果圖

      第五步:執(zhí)行make menuconfig命令配置內(nèi)核,linux的配置界面如圖7所示,配置完成之后,執(zhí)行make zImage命令編譯內(nèi)核得到內(nèi)核鏡像文件。要配置的選項(xiàng)主要有Sysytem Type--->

      接下來(lái)需要制作根文件系統(tǒng),yaffs2文件系統(tǒng)是根據(jù)NandFlash的存取特點(diǎn),將文件組織成固定大小的數(shù)據(jù)段,對(duì)文件系統(tǒng)上所有的內(nèi)容都統(tǒng)一當(dāng)作文件來(lái)處理,每個(gè)文件都有一個(gè)頁(yè)面專(zhuān)門(mén)存放文件頭,所以yaffs2文件系統(tǒng)是專(zhuān)門(mén)為嵌入式Nand-Flash而設(shè)計(jì)的一種日志型文件系統(tǒng),適用于大容量的存儲(chǔ)設(shè)備,因不支持?jǐn)?shù)據(jù)壓縮功能,所以速度快,掛載時(shí)間短,對(duì)內(nèi)存占用少,同時(shí)yaffs2自帶NAND芯片驅(qū)動(dòng),提供嵌入式系統(tǒng)直接訪問(wèn)文件系統(tǒng)的API,這樣用戶既可以使用linux中的MTD與VFS訪問(wèn)文件系統(tǒng),也可以直接對(duì)文件系統(tǒng)操作,yaffs2文件系統(tǒng)的制作過(guò)程如下:

      第一步:先使用命令#./patch-ker.sh c/home/my2440/linux2.6/為內(nèi)核打上yaffs2補(bǔ)丁。

      第二步:配置內(nèi)核,使其支持yaffs2文件系統(tǒng),配置完成之后重新編譯內(nèi)核,配置界面如圖7所示。

      圖7 linux支持yaffs2的配置界面

      第三步:首先在busybox根目錄下修改Makefile文件如下:

      CROSS-COMPILE=arm-linux

      ARCH=arm,然后配置編譯busybox生成文件系統(tǒng)所需要的應(yīng)用程序。

      第四步:新建一個(gè) root-2.6目錄,把編譯busybox生成的應(yīng)用程序的可執(zhí)行文件復(fù)制到該目錄下,然后用mkdir命令創(chuàng)建文件系統(tǒng)所需要的目錄:mkdir dev etc home lib mnt opt proc tmp var www,并制作好相關(guān)的配置文件。

      第五步:用mkyaffs2image-128工具制作好根文件系統(tǒng)的鏡像得到 root-2.6.img文件:makyaffs2image root-2.6/root-2.6.img。圖8是下載文件系統(tǒng)和內(nèi)核鏡像到板子上linux成功掛載文件系統(tǒng)成功啟動(dòng)之后的界面。

      圖8 linux內(nèi)核成功啟動(dòng)之后的界面

      5 嵌入式linux設(shè)備驅(qū)動(dòng)移植和開(kāi)發(fā)

      到此為止,硬件平臺(tái)可以運(yùn)行起來(lái)了,但是各種外設(shè)因?yàn)檫€沒(méi)有驅(qū)動(dòng)的支持還不能使用。接下來(lái)就是為各個(gè)外部設(shè)備的制做好驅(qū)動(dòng)程序(見(jiàn)圖7),屏蔽底層硬件細(xì)節(jié),為上層應(yīng)程序提供所有操作底層硬件設(shè)備的接口函數(shù),使得原來(lái)在通用PC機(jī)上開(kāi)發(fā)的應(yīng)用程序不需要做實(shí)質(zhì)性的修改就可以移植該平臺(tái)上來(lái),在通信模塊的開(kāi)發(fā)過(guò)程中涉及了嵌入式linux僅有的三大設(shè)備驅(qū)動(dòng),但從linux2.6開(kāi)始引入了platform虛擬總線機(jī)制,使得這三大完全不同類(lèi)型的設(shè)備驅(qū)動(dòng)都可以使用platform進(jìn)行統(tǒng)一管理和注冊(cè),platform機(jī)制和傳統(tǒng)設(shè)備驅(qū)動(dòng)開(kāi)發(fā)機(jī)制相比,一個(gè)明顯的優(yōu)勢(shì)在于將設(shè)備和驅(qū)動(dòng)分開(kāi)管理,提高了驅(qū)動(dòng)和資源的獨(dú)立性,因而增強(qiáng)了設(shè)備驅(qū)動(dòng)程序的可移植性和安全性。Platfrom機(jī)制本身并不復(fù)雜,由兩部分組成:platform-device和platform-driver。用platform開(kāi)發(fā)底層驅(qū)動(dòng)的大致流程為:定義platform-device->注冊(cè)platform-device->定義platform-driver- > 注冊(cè)platform-driver。

      下面以platform按鍵驅(qū)動(dòng)為例說(shuō)明平臺(tái)上設(shè)備驅(qū)動(dòng)開(kāi)發(fā)的整個(gè)過(guò)程:

      第一步:定義和注冊(cè)按鍵設(shè)備,在 arch/arm/plat-s3c24xx/devs.c中添加按鍵驅(qū)動(dòng)平臺(tái)設(shè)備的定義:

      };中所有接口函數(shù),然后在static int my-keysprobe(struct platform-device*dev)函數(shù)中用register-chrdev()函數(shù)注冊(cè)keys-ops結(jié)構(gòu)體;編寫(xiě)platform驅(qū)動(dòng)struct platform-driver my-buttons-drv={

      第三步:在下面注冊(cè)或者下載 platform設(shè)備驅(qū)動(dòng)

      圖9 驅(qū)動(dòng)編譯進(jìn)內(nèi)核界面

      6 結(jié)束語(yǔ)

      當(dāng)硬件平臺(tái),bootloader,linux內(nèi)核和驅(qū)動(dòng)都做好之后,那么一個(gè)集軟硬件于一身的完整的嵌入式系統(tǒng)平臺(tái)就基本搭建起來(lái)了,使用arm-linux-gcc重新編譯某協(xié)議程序,并下載到該模塊中,運(yùn)行結(jié)果見(jiàn)圖10。

      圖10 某通信協(xié)議運(yùn)行結(jié)果

      項(xiàng)目驗(yàn)收的結(jié)果表明利用該通信模塊進(jìn)行無(wú)線通信,相對(duì)先前以通用CPU為主控制器和商用linux為操作系統(tǒng)的軟硬件平臺(tái)來(lái)說(shuō),功能一摸一樣,但硬件集成化程度有了很大的提高,體積和重量大大減小,成本大幅度降低,開(kāi)發(fā)周期縮短,調(diào)試時(shí)間充足,出錯(cuò)機(jī)會(huì)減少,因而更安全可靠,更符合安裝在飛行器上的要求。

      [1]周立功等.ARM嵌入式系統(tǒng)基礎(chǔ)教程(二)[M].北京.北京航空航天大學(xué)出版社,2005.

      [2]周立功.ARM嵌入式系統(tǒng)實(shí)驗(yàn)教程(二)[M].北京:北京航空航天大學(xué)出版社,2005.

      [3] 陳莉君,馮銳,牛欣源譯.孫玉芳審.BOVET D P.,MARCOCESAT.深入理解linux內(nèi)核(第二版)[M].北京:中國(guó)電力出版社,2004.

      [4]俞永昌.linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)技術(shù)及應(yīng)用[M].北京:人民郵電出版社,2008.

      猜你喜歡
      宿主機(jī)PC機(jī)內(nèi)核
      萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      基于PC機(jī)與單片機(jī)的多機(jī)通信技術(shù)及抗干擾方法
      虛擬網(wǎng)絡(luò)實(shí)驗(yàn)室在農(nóng)村職校計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)教學(xué)中的應(yīng)用研究
      嵌入式計(jì)算機(jī)軟件測(cè)試關(guān)鍵技術(shù)的思考
      基于三菱FXPLC的感應(yīng)淬火機(jī)床與PC機(jī)的串行通信實(shí)現(xiàn)
      VC.NET下實(shí)現(xiàn)dsPIC單片機(jī)與PC機(jī)的通信
      電子制作(2017年23期)2017-02-02 07:16:47
      嵌入式計(jì)算機(jī)軟件測(cè)試關(guān)鍵技術(shù)研究
      青岛市| 景泰县| 云南省| 蓬安县| 云霄县| 射洪县| 大兴区| 射阳县| 昔阳县| 黄大仙区| 台前县| 石河子市| 类乌齐县| 红桥区| 通榆县| 昌邑市| 曲松县| 洛扎县| 乌苏市| 奈曼旗| 宁都县| 壶关县| 秦安县| 京山县| 嘉兴市| 苗栗县| 泊头市| 曲阜市| 灌云县| 仁寿县| 平果县| 福贡县| 南城县| 阳高县| 杭锦旗| 五家渠市| 偃师市| 吴桥县| 邮箱| 泗阳县| 陈巴尔虎旗|