国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式Linux系統(tǒng)開發(fā)實(shí)驗(yàn)課程教學(xué)設(shè)計(jì)

2011-01-01 00:00:00盛琳
計(jì)算機(jī)教育 2011年2期


  摘要:為培養(yǎng)學(xué)生嵌入式Linux系統(tǒng)的開發(fā)設(shè)計(jì)能力,并對受教育者實(shí)現(xiàn)分層次教育,在認(rèn)真分析了一些重點(diǎn)實(shí)驗(yàn)內(nèi)容的基礎(chǔ)上,提出將實(shí)驗(yàn)劃分為基礎(chǔ)知識(shí),基本技術(shù)以及綜合應(yīng)用三類,并給出了相應(yīng)的實(shí)驗(yàn)內(nèi)容。實(shí)踐證明這些實(shí)驗(yàn)內(nèi)容對促進(jìn)嵌入式系統(tǒng)教學(xué)有著重要意義。
  關(guān)鍵詞:實(shí)驗(yàn)教學(xué);嵌入式系統(tǒng);Linux系統(tǒng)
  
  嵌入式Linux系統(tǒng)由于具有開源、網(wǎng)絡(luò)功能強(qiáng)大、內(nèi)核穩(wěn)定高效等特性,在產(chǎn)品開發(fā)周期、產(chǎn)品的功能可擴(kuò)展性、開發(fā)時(shí)的人力投入等方面都具有顯著的優(yōu)勢,因此廣泛應(yīng)用于中低端智能電子設(shè)備中。隨著物聯(lián)網(wǎng)的趨熱,作為物聯(lián)網(wǎng)的底層技術(shù)之一的嵌入式智能技術(shù)將具有巨大的市場前景[1-2]。
  而在高校教學(xué)中,對于嵌入式技術(shù)這類強(qiáng)調(diào)實(shí)踐性的學(xué)科,實(shí)驗(yàn)對于培養(yǎng)學(xué)生的實(shí)際操作能力和解決問題的能力是至關(guān)重要的。本文針對當(dāng)前高等院校嵌入式實(shí)驗(yàn)課程,特別是嵌入式實(shí)時(shí)軟件開發(fā)這門課程的教學(xué)投入不足、學(xué)生學(xué)習(xí)效果不佳的問題,提出了具體的實(shí)驗(yàn)教學(xué)設(shè)計(jì)方案。并且詳細(xì)地剖析了一些重點(diǎn)實(shí)驗(yàn),給出了這些實(shí)驗(yàn)在教學(xué)設(shè)計(jì)中實(shí)現(xiàn)的具體方案。
  1嵌入式Linux系統(tǒng)開發(fā)實(shí)驗(yàn)課程分析
  嵌入式Linux課程設(shè)計(jì)具有很強(qiáng)的滲透性,與其他專業(yè)課程相比,嵌入式Linux課程設(shè)計(jì)具有獨(dú)特的特點(diǎn)[3]:該課程對學(xué)生的專業(yè)知識(shí)有較高的要求,課程具有交叉性,并且對學(xué)生的動(dòng)手能力和系統(tǒng)思考解決問題的能力要求較高。
  通過實(shí)驗(yàn),學(xué)生能夠掌握嵌入式Linux系統(tǒng)程序設(shè)計(jì)方面的基本概念和技能,嵌入式軟件設(shè)計(jì)的一般方法和流程,以及基本的實(shí)時(shí)控制方法、嵌入式網(wǎng)絡(luò)編程、嵌入式文件系統(tǒng)操作、I/O控制等知識(shí);通過綜合實(shí)驗(yàn)的學(xué)習(xí)和模擬,使學(xué)生能夠達(dá)到實(shí)際開發(fā)能力的目的。然而嵌入式系統(tǒng)的一大特色表現(xiàn)在發(fā)展速度上[4]。嵌入式系統(tǒng)的應(yīng)用無處不在,其知識(shí)的新陳代謝的非常快,新技術(shù)層出不窮,這就需要教師不斷地將新的應(yīng)用技術(shù)補(bǔ)充到嵌入式系統(tǒng)教學(xué)體系之中,推陳出新,設(shè)計(jì)出新的實(shí)驗(yàn)項(xiàng)目。在實(shí)際的教學(xué)實(shí)驗(yàn)中,針對嵌入式系統(tǒng)實(shí)驗(yàn),教師應(yīng)注重培養(yǎng)學(xué)生自己動(dòng)手設(shè)計(jì)開發(fā)綜合項(xiàng)目的能力,使學(xué)生能夠設(shè)計(jì)出實(shí)用的嵌入式軟件系統(tǒng),適應(yīng)于社會(huì)的需要。
  本文的實(shí)驗(yàn)運(yùn)行在ARM-Linux操作系統(tǒng)下,結(jié)合ARM2410/PXA270/OMAP5910平臺(tái)的嵌入式Linux程序設(shè)計(jì)與系統(tǒng)開發(fā)技術(shù),秉承理論與實(shí)踐相結(jié)合的思想,幫助學(xué)生快速跨入嵌入式系統(tǒng)開發(fā)的門檻。
  2嵌入式Linux系統(tǒng)開發(fā)實(shí)驗(yàn)教學(xué)設(shè)計(jì)
  嵌入式系統(tǒng)開發(fā)課程涉及操作系統(tǒng)分析和應(yīng)用軟件編程等知識(shí),學(xué)生需要能夠理解嵌入式實(shí)時(shí)操作系統(tǒng)的工作原理、掌握基本的開發(fā)流程和開發(fā)工具的使用方法。在實(shí)驗(yàn)的設(shè)計(jì)上既有簡單的基礎(chǔ)實(shí)驗(yàn)也有復(fù)雜的綜合實(shí)驗(yàn),每部分的實(shí)驗(yàn)環(huán)節(jié)充分體現(xiàn)了“分層次、分階段”的教學(xué)思想。本文將實(shí)驗(yàn)分為三部分:
  2.1基礎(chǔ)性實(shí)驗(yàn)
  目的是讓學(xué)生了解嵌入式軟件和硬件的一般開發(fā)環(huán)境與流程;熟悉實(shí)驗(yàn)開發(fā)工具,掌握實(shí)驗(yàn)開發(fā)工具的操作方法及使用,熟悉軟件編程環(huán)境,為更進(jìn)一步實(shí)驗(yàn)做準(zhǔn)備。
  2.1.1嵌入式應(yīng)用程序交叉開發(fā)環(huán)境的建立
  本實(shí)驗(yàn)介紹了一般的嵌入式開發(fā)流程,以及開發(fā)環(huán)境中的軟件和硬件的安裝與調(diào)試。目的是讓學(xué)生了解嵌入式交叉編譯的相關(guān)知識(shí),以及能夠搭建嵌入式Linux系統(tǒng)的開發(fā)環(huán)境。
  2.1.2開發(fā)基本的嵌入式應(yīng)用程序?qū)嵗?br/>  通過嵌入式應(yīng)用程序Makefile與Hello World實(shí)驗(yàn),使學(xué)生熟悉Linux開發(fā)環(huán)境,了解基本的嵌入式開發(fā)的基本過程,以及Makefile的基本內(nèi)容,掌握基本的程序設(shè)計(jì)方法與流程,建立起任務(wù)的概念,為后續(xù)的應(yīng)用程序的設(shè)計(jì)打基礎(chǔ)。
  2.1.3Linux 多線程使用實(shí)例——生產(chǎn)者-消費(fèi)者協(xié)議
  通過本實(shí)驗(yàn),學(xué)生可以了解操作系統(tǒng)提出的多個(gè)機(jī)制對線程的執(zhí)行順序進(jìn)行限制,包括互斥鎖和條件變量等機(jī)制。在這里引入生產(chǎn)者—消費(fèi)者模型對多線程的管理機(jī)制進(jìn)行描述。目的是讓學(xué)生了解多線程程序設(shè)計(jì)的基本原理,并且使學(xué)生學(xué)習(xí)pthread庫函數(shù)的使用。
  2.1.4進(jìn)程相關(guān)的應(yīng)用程序設(shè)計(jì)——進(jìn)程創(chuàng)建及通信
  通過本實(shí)驗(yàn),學(xué)生可以了解對于操作系統(tǒng)進(jìn)程的一些基本操作,包括進(jìn)程函數(shù)、信號(hào)函數(shù)和管道函數(shù)的相關(guān)使用機(jī)制等。目的是讓學(xué)生了解在Linux下進(jìn)程通信的相關(guān)原理,以及掌握使用進(jìn)程進(jìn)行相關(guān)應(yīng)用程序設(shè)計(jì)的能力。
  2.2基本技能性實(shí)驗(yàn)
  通過構(gòu)建嵌入式Linux系統(tǒng)以及內(nèi)核定制、系統(tǒng)引導(dǎo)、文件系統(tǒng)、接口設(shè)計(jì)、驅(qū)動(dòng)程序開發(fā)、圖形界面設(shè)計(jì)、以及通信應(yīng)用等實(shí)驗(yàn),學(xué)生可以更清楚深刻地理解嵌入式Linux系統(tǒng)的相關(guān)術(shù)語,體會(huì)嵌入式Linux系統(tǒng)的組成要素,提高操作的人性化水平、完成功能完善的應(yīng)用系統(tǒng)。目的是讓學(xué)生掌握嵌入式系統(tǒng)特有的編程機(jī)制和提供的各種編程接口,使之具備基本的嵌入式程序開發(fā)技能。
  2.2.1嵌入式Linux內(nèi)核、引導(dǎo)系統(tǒng)和文件系統(tǒng)實(shí)驗(yàn)
  通過構(gòu)建嵌入式Linux系統(tǒng)以及內(nèi)核定制等實(shí)驗(yàn),學(xué)生可以更清楚深刻地理解嵌入式Linux系統(tǒng)的相關(guān)術(shù)語、體會(huì)嵌入式Linux系統(tǒng)的組成要素。目的是讓學(xué)生了解Linux內(nèi)核的結(jié)構(gòu)、具有編譯Linux內(nèi)核的能力,以及了解一個(gè)操作系統(tǒng)的構(gòu)造。
  1)Linux內(nèi)核裁剪與編譯實(shí)驗(yàn)。
  以源程序的形式提供給學(xué)生一個(gè)分析研究的例子,展示內(nèi)核的配置、內(nèi)核鏡像的編譯過程以及內(nèi)核的測試。讓學(xué)生了解Linux內(nèi)核的結(jié)構(gòu),以及操作系統(tǒng)的構(gòu)造,使學(xué)生具有編譯Linux內(nèi)核的能力。
  2) 引導(dǎo)系統(tǒng)和文件系統(tǒng)實(shí)驗(yàn)。
  此處利用一個(gè)階段性的綜合性實(shí)驗(yàn)—軟盤Linux操作系統(tǒng)的實(shí)現(xiàn),使學(xué)生了解一個(gè)操作系統(tǒng)的構(gòu)造,以及如何制作軟件Linux操作系統(tǒng)。在該實(shí)驗(yàn)中,要求學(xué)生使用軟盤進(jìn)行GRUB配置,讓學(xué)生觀察如何實(shí)現(xiàn)的引導(dǎo)系統(tǒng);之后使用make menuconfig進(jìn)行內(nèi)核配置,再使用BusyBox編譯生成一個(gè)新的根文件系統(tǒng),使學(xué)生了解文件系統(tǒng)是如何實(shí)現(xiàn)的;最后將內(nèi)核鏡像和根文件系統(tǒng)整合到軟盤中完成實(shí)驗(yàn)。學(xué)生在讀懂源程序流程的基礎(chǔ)上可以對例程進(jìn)行修改,驗(yàn)證是否完成所設(shè)想的功能。
  2.2.2嵌入式Linux接口設(shè)計(jì)與驅(qū)動(dòng)程序?qū)嶒?yàn)
  驅(qū)動(dòng)開發(fā)是嵌入式Linux系統(tǒng)開發(fā)中一個(gè)重要的組成部分,此部分實(shí)驗(yàn)對學(xué)生的前述基本功要求較高,要求學(xué)生不僅要熟悉Linux的內(nèi)核機(jī)制、驅(qū)動(dòng)程序與用戶級(jí)應(yīng)用程序的接口關(guān)系,還要考慮設(shè)備的并發(fā)操作等因素,而且要了解所開發(fā)硬件的工作原理。
  1) 虛擬驅(qū)動(dòng)模塊實(shí)驗(yàn)。
  使用靜態(tài)結(jié)點(diǎn)方式進(jìn)行驅(qū)動(dòng)程序的開發(fā)和測試。需要學(xué)生首先創(chuàng)建一個(gè)新目錄,并在其中編寫驅(qū)動(dòng)程序nodevfs.c和Makefile文件,然后編譯生成驅(qū)動(dòng)程序模塊?;谠擈?qū)動(dòng)程序模塊編寫測試程序。然后將程序模塊裝入到目標(biāo)開發(fā)板上,建立設(shè)備結(jié)點(diǎn)并連接,運(yùn)行及測試程序。通過本實(shí)驗(yàn)學(xué)生可以學(xué)習(xí)在Linux下進(jìn)行驅(qū)動(dòng)設(shè)計(jì)的原理,掌握使用靜態(tài)結(jié)點(diǎn)方式進(jìn)行開發(fā)調(diào)試的過程以及如何使用動(dòng)態(tài)devfs方式進(jìn)行開發(fā)調(diào)試的過程。
  2)A/D接口驅(qū)動(dòng)實(shí)驗(yàn)。
  要求學(xué)生使用C語言編程Makefile文件和線程庫,完成A/D驅(qū)動(dòng)程序以及測試程序。例如要求學(xué)生編程實(shí)現(xiàn)采集A/D前三路通道信息,并在終端上顯示0~9的范圍。通過本實(shí)驗(yàn),學(xué)生能夠掌握程序編寫的基本過程,以及了解S3C2410芯片的8通道10位A/D的操作與控制。
  2.2.3嵌入式Linux圖形界面實(shí)驗(yàn)
  
  1)Qt圖形界面相關(guān)實(shí)驗(yàn)。
  要求學(xué)生使用C語言進(jìn)行編程,以及Makefile文件來完成Qt圖形界面相關(guān)實(shí)驗(yàn)。通過本實(shí)驗(yàn)使學(xué)生熟悉如何在Linux環(huán)境下安裝Qt和Qt/Embedded環(huán)境,如何在Qt/Embedded環(huán)境下使用qvfb顯示程序結(jié)果,以及如何完成Qt/Embedded的交叉編譯環(huán)境并且運(yùn)行程序。
  2)Qtopia的移植以及編程實(shí)驗(yàn)。
  本實(shí)驗(yàn)的目的在于使學(xué)生熟悉如何在Linux環(huán)境下安裝Qtopia環(huán)境,如何使用qvfb顯示Qtopia環(huán)境,以及如何在開發(fā)板上運(yùn)行Qtopia環(huán)境。在了解了安裝Qtopia的基本步驟后,需要將Qtopia移植到ARM平臺(tái)上運(yùn)行。
  2.2.4嵌入式Linux下的通信實(shí)驗(yàn)
  隨著嵌入式系統(tǒng)技術(shù)的發(fā)展,純單機(jī)工作已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足用戶的需求,因此各個(gè)系統(tǒng)之間的信息交互由于具有廣泛的應(yīng)用價(jià)值面成為嵌入式技術(shù)更深層次的應(yīng)用。因此需要學(xué)生掌握嵌入式Linux系統(tǒng)下的各種通信應(yīng)用,包括串口通信、網(wǎng)絡(luò)通信、藍(lán)牙通信以及CAN總線通信。學(xué)生可以嘗試把通信編程和之前的各種案例結(jié)合起來,完成功能更加完善的應(yīng)用系統(tǒng)。
  1) 串口通信實(shí)驗(yàn)。
  串口作為計(jì)算機(jī)一種常用的接口,具有連接線少、通信簡單的優(yōu)點(diǎn),因此得到廣泛應(yīng)用。特別是在嵌入式系統(tǒng)的開發(fā)和應(yīng)用中,經(jīng)常需要使用宿主機(jī)實(shí)現(xiàn)目標(biāo)機(jī)的調(diào)試及現(xiàn)場數(shù)據(jù)的采集和控制。從而通過串口線連接宿主機(jī)和目標(biāo)機(jī)達(dá)到通信的目的。
  要求學(xué)生編寫發(fā)送端程序和接收端程序,發(fā)送端程序經(jīng)交叉編譯后在目標(biāo)機(jī)上運(yùn)行,接收端程序在宿主機(jī)上運(yùn)行,發(fā)送端程序通過串口發(fā)送字符給接收端。本實(shí)驗(yàn)的目的在于使學(xué)生了解使用Telnet登陸目標(biāo)機(jī)的方法以及掌握串口通信的編程方法。
  2) 網(wǎng)絡(luò)通信實(shí)驗(yàn)。
  隨著網(wǎng)絡(luò)的發(fā)展,需要解決網(wǎng)絡(luò)間不同主機(jī)進(jìn)程間的相互通信問題。為了解決網(wǎng)絡(luò)上的不同主機(jī),可以用相同的進(jìn)程號(hào)來表示沒有任何關(guān)系的兩個(gè)進(jìn)程的問題,從及操作系統(tǒng)支持的網(wǎng)絡(luò)協(xié)議眾多,不同協(xié)議的工作方式不同,地址格式不同等問題,實(shí)驗(yàn)需要學(xué)生首先熟悉TCP/IP協(xié)議中引入的地址和端口的概念,并要求學(xué)生使用C語言編寫skt_cli.c程序,stk_ser.c程序以及相應(yīng)的Makefile文件,編譯成功后生成執(zhí)行文件后,在嵌入式開發(fā)平臺(tái)和宿主機(jī)上運(yùn)行測試。本部分實(shí)驗(yàn)?zāi)康脑谟谑箤W(xué)生了解在Linux系統(tǒng)下的Socket通信的基本原理,以及使學(xué)生掌握Socket編程的相關(guān)知識(shí)。
  3) 藍(lán)牙相關(guān)實(shí)驗(yàn)。
  藍(lán)牙計(jì)劃主要是面向網(wǎng)絡(luò)中各類數(shù)據(jù)及語音設(shè)備,使用無線微波的方式將它們連成一個(gè)微網(wǎng),多個(gè)微網(wǎng)之間也可以互連,從而方便快速地實(shí)現(xiàn)各類設(shè)備之間的通信。本實(shí)驗(yàn)要求學(xué)生編譯內(nèi)核,使內(nèi)核包含藍(lán)牙模塊的相關(guān)驅(qū)動(dòng),重新燒寫內(nèi)核,最終使開發(fā)板上的藍(lán)牙適配器能夠和Windows主機(jī)中的藍(lán)牙適配器建立連接。其目的使學(xué)生掌握藍(lán)牙設(shè)備通信原理,以及Linux嵌入式開發(fā)平臺(tái)上藍(lán)牙設(shè)備的使用。
  4)CAN總線實(shí)驗(yàn)。
  要求學(xué)生使用C語言進(jìn)行編程,完成Makefile文件,CAN驅(qū)動(dòng)程序,以及測試程序的編寫。目的在于使學(xué)生掌握CAN總線通信原理,以及學(xué)習(xí)CAN總線控制器MCP2510驅(qū)動(dòng)的開發(fā),使學(xué)生能夠更改CAN應(yīng)用程序的內(nèi)容,實(shí)現(xiàn)兩臺(tái)開發(fā)板之間CAN數(shù)據(jù)信息的收發(fā)。
  2.3綜合應(yīng)用性實(shí)驗(yàn)
  此階段實(shí)驗(yàn)?zāi)康脑谟谶\(yùn)用基礎(chǔ)技能部分所學(xué),進(jìn)行綜合應(yīng)用,獨(dú)立完成項(xiàng)目開發(fā)。由于是綜合實(shí)驗(yàn),因此在第二階段即給出題目,要求學(xué)生在整個(gè)實(shí)驗(yàn)階段進(jìn)行構(gòu)思與準(zhǔn)備,最后連接代碼。以基于藍(lán)牙技術(shù)的嵌入式點(diǎn)菜系統(tǒng)為例,對項(xiàng)目進(jìn)行整體規(guī)劃設(shè)計(jì)以及具體實(shí)現(xiàn)的步驟進(jìn)行介紹。
  大多數(shù)無線點(diǎn)菜系統(tǒng)都是一套基于掌上電腦和802.11b無線局域網(wǎng)技術(shù)的實(shí)用型系統(tǒng)。從功能上來說,嵌入式開發(fā)板端即客戶端,包括開臺(tái)點(diǎn)菜模塊和藍(lán)牙數(shù)據(jù)傳輸模塊;PC機(jī)端即服務(wù)器端,包括菜單管理模塊、消費(fèi)結(jié)賬模塊和藍(lán)牙數(shù)據(jù)傳輸模塊??蛻舳撕头?wù)器端的藍(lán)牙傳輸模塊都是通過后臺(tái)線程實(shí)現(xiàn)的,而其他模塊都是通過與Qt圖形界面的交互實(shí)現(xiàn)的。
  整個(gè)點(diǎn)菜系統(tǒng)的通信結(jié)構(gòu)為一個(gè)微微網(wǎng),服務(wù)器端位于該微微網(wǎng)的中心節(jié)點(diǎn),利用BT_PROTO_ RFCOMM協(xié)議與其他的點(diǎn)菜端進(jìn)行通信。
  1) 服務(wù)器端設(shè)定了接收數(shù)據(jù)和發(fā)送數(shù)據(jù)的緩沖區(qū),分別保存接收到的點(diǎn)菜信息和要發(fā)送的結(jié)賬房間號(hào),利用多線程技術(shù)實(shí)現(xiàn)數(shù)據(jù)的發(fā)送、接收和界面事件處理的“并行”執(zhí)行。服務(wù)器端程序一運(yùn)行,在建立圖形界面的同時(shí),創(chuàng)建用于藍(lán)牙通信的線程并進(jìn)行連接監(jiān)聽;當(dāng)客戶端建立藍(lán)牙連接后,通信線程不斷地從與點(diǎn)菜終端的連接中讀取數(shù)據(jù),若讀到數(shù)據(jù),則保存到接收數(shù)據(jù)緩沖區(qū)中,表示有點(diǎn)菜信息,便進(jìn)行信息提取并保存到數(shù)據(jù)庫的消費(fèi)信息表中。同時(shí),不斷地檢查發(fā)送數(shù)據(jù)緩沖區(qū),若緩沖區(qū)內(nèi)容不為空,表示有了結(jié)賬的房間,則向點(diǎn)菜終端發(fā)送該數(shù)據(jù)。同樣,客戶端也設(shè)定了接收數(shù)據(jù)和發(fā)送數(shù)據(jù)的緩沖區(qū),分別保存接收到的結(jié)賬房間號(hào)和要發(fā)送點(diǎn)菜信息,利用多線程技術(shù)實(shí)現(xiàn)數(shù)據(jù)的發(fā)送、接收和界面事件處理的“并行”執(zhí)行。
  2) 藍(lán)牙程序的開發(fā)主要是利用Bluez協(xié)議棧中的相關(guān)庫函數(shù),主要數(shù)據(jù)結(jié)構(gòu)是sockaddr_rc,該結(jié)構(gòu)的用法與Socket中的sockaddr_rc類似。藍(lán)牙通信和Socket通信類似。另外藍(lán)牙地址BD_ADDR和相應(yīng)字符串之間的轉(zhuǎn)換函數(shù):bas2str(&rem_addr.rc_bda

汾阳市| 旺苍县| 富裕县| 敦煌市| 靖远县| 石河子市| 鹰潭市| 阿拉善左旗| 郑州市| 满洲里市| 北辰区| 工布江达县| 紫金县| 芦溪县| 普兰县| 彰化市| 盐边县| 东丽区| 宁德市| 湟中县| 翼城县| 宣恩县| 南充市| 丽江市| 绵竹市| 申扎县| 镇巴县| 兰考县| 磐石市| 探索| 富民县| 谷城县| 通辽市| 湖口县| 彰化县| 明溪县| 武威市| 泊头市| 公安县| 广水市| 疏附县|