欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      嵌入式系統(tǒng)的主要應(yīng)用(精選5篇)

      時間:2019-05-12 13:50:19下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《嵌入式系統(tǒng)的主要應(yīng)用》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《嵌入式系統(tǒng)的主要應(yīng)用》。

      第一篇:嵌入式系統(tǒng)的主要應(yīng)用

      嵌入式系統(tǒng)的主要應(yīng)用

      嵌入式系統(tǒng)是一種包括硬件和軟件的完整的計算機(jī)系統(tǒng),它的定義是:“嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可剪裁,適用于應(yīng)用系統(tǒng)對功能、可靠性、成本、體積和功耗有嚴(yán)格要求的專用計算機(jī)系統(tǒng)?!鼻度胧较到y(tǒng)所用的計算機(jī)是嵌入到被控對象中的專用微處理器,但是功能比通用計算機(jī)專門化,具有通用計算機(jī)所不能具備的針對某個方面特別設(shè)計的、合適的運算速度、高可靠性和較低比較成本的專用計算機(jī)系統(tǒng)。

      嵌入式系統(tǒng)的應(yīng)用前景是非常廣泛的,人們將會無時無處不接觸到嵌入式產(chǎn)品,從家里的洗衣機(jī)、電冰箱,到作為交通工具的自行車、小汽車,到辦公室里的遠(yuǎn)程會議系統(tǒng)等等。在家中、辦公室、公共場所,人們可能會使用數(shù)十片甚至更多這樣的嵌入式無線電芯片,將一些電子信息設(shè)備甚至電氣設(shè)備構(gòu)成無線網(wǎng)絡(luò);在車上、旅途中,人們利用這樣的嵌入式無線電芯片可以實現(xiàn)遠(yuǎn)程辦公、遠(yuǎn)程遙控,真正實現(xiàn)把網(wǎng)絡(luò)隨身攜帶。其應(yīng)用領(lǐng)域可以包括:

      1.交通管理:在車輛導(dǎo)航、流量控制、信息監(jiān)測與汽車服務(wù)方面,嵌入式系統(tǒng)技術(shù)已經(jīng)獲得了廣泛的應(yīng)用,內(nèi)嵌GPS模塊,GSM模塊的移動定位終端已經(jīng)在各種運輸行業(yè)獲得了成功的使用。目前GPS設(shè)備已經(jīng)從尖端產(chǎn)品進(jìn)入了普通百姓的家庭,只需要幾千元,就可以隨時隨地找到你的位置。2.家庭智能管理系統(tǒng):水、電、煤氣表的遠(yuǎn)程自動抄表,安全防火、防盜系統(tǒng),其中嵌有的專用控制芯片將代替?zhèn)鹘y(tǒng)的人工檢查,并實現(xiàn)更高,更準(zhǔn)確和更安全的性能。

      3.POS網(wǎng)絡(luò)及電子商務(wù):公共交通無接觸智能卡發(fā)行系統(tǒng),公共電話卡發(fā)行系統(tǒng),自動售貨機(jī),各種智能ATM終端將全面走入人們的生活。

      4.環(huán)境工程與自然:水文資料實時監(jiān)測,防洪體系及水土質(zhì)量監(jiān)測、堤壩安全,地震監(jiān)測網(wǎng),實時氣象信息網(wǎng),水源和空氣污染監(jiān)測。在很多環(huán)境惡劣,地況復(fù)雜的地區(qū),嵌入式系統(tǒng)將實現(xiàn)無人監(jiān)測。

      5.機(jī)器人:嵌入式芯片的發(fā)展將使機(jī)器人在微型化,高智能方面優(yōu)勢更加明顯,同時會大幅度降低機(jī)器人的價格,使其在工業(yè)領(lǐng)域和服務(wù)領(lǐng)域獲得更廣泛的應(yīng)用。

      6.工業(yè)控制:相對于其他的領(lǐng)域,機(jī)電產(chǎn)品可以說是嵌入式系統(tǒng)應(yīng)用最典型最廣泛的領(lǐng)域之一。從最初的單片機(jī)到現(xiàn)在的工控機(jī)、SOC在各種機(jī)電產(chǎn)品中均有著巨大的市場。工業(yè)設(shè)備是機(jī)電產(chǎn)品中最大的一類,在目前的工業(yè)控制設(shè)備中,工控機(jī)的使用非常廣泛,這些工控機(jī)一般采用的是工業(yè)級的處理器和各種設(shè)備,其中以X86的MPU最多。工控的要求往往較高,需要各種各樣的設(shè)備接口,除了進(jìn)行實時控制,還須將設(shè)備狀態(tài),傳感器的信息等在顯示屏上實時顯示。這些要求8位的單片機(jī)是無法滿足的,以前多數(shù)使用16位的處理器,隨著處理器快速的發(fā)展,目前32位、64位的處理器逐漸替代了16位處理器,進(jìn)一步提升了系統(tǒng)性能。采用PC104總線的系統(tǒng),體積小,穩(wěn)定可靠,受到了很多用戶的青睞。不過這些工控機(jī)采用的往往是DOS或者Windows系統(tǒng),雖然具有嵌入式的特點,卻不能稱作純粹的嵌入式系統(tǒng)。另外在工業(yè)控制器和設(shè)備控制器方面,則是各種嵌入式處理器的天下。這些控制器往往采用16位以上的處理器,各種MCU,Arm、Mips、68K系列的處理器在控制器中占據(jù)核心地位。這些處理器上提供了豐富的接口總線資源,可以通過它們實現(xiàn)數(shù)據(jù)采集,數(shù)據(jù)處理,通訊以及顯示(顯示一般是連接LED或者LCD)。最近飛利浦和ARM共同推出32位RISC嵌入式控制器,適用于工業(yè)控制,采用最先進(jìn)的0.18微米CMOS嵌入式閃存處理技術(shù),操作電壓可以低至1.2伏,它還能降低25%到30%的制造成本,在工業(yè)領(lǐng)域中對最終用戶而言是一套極具成本效益的解決方案。美國TERN工業(yè)控制器基于Am188/186ES、i386EX、NEC V25、Am586(Elan SC520),采用了SUPERTASK實時多任務(wù)內(nèi)核,可應(yīng)用于便攜設(shè)備、無線控制設(shè)備、數(shù)據(jù)采集設(shè)備、工業(yè)控制與工業(yè)自動化設(shè)備以及其它需要控制處理的設(shè)備。

      7.家電行業(yè)是嵌入式應(yīng)用的另一大行業(yè)。現(xiàn)在只有按鈕、開關(guān)的電器顯然已經(jīng)不能滿足人們的日常需求,具有用戶界面,能遠(yuǎn)程控制,智能管理的電器是未來的發(fā)展趨勢。據(jù)IDG發(fā)布的統(tǒng)計數(shù)據(jù)表明,未來信息家電將會成長五至十倍。中國的傳統(tǒng)家電廠商向信息家電過渡時,首先面臨的挑戰(zhàn)是核心操作系統(tǒng)軟件開發(fā)工作。硬件方面,進(jìn)行智能信息控制并不是很高的要求,目前絕大多數(shù)嵌入式處理器都可以滿足硬件要求,真正的難點是如何使軟件操作系統(tǒng)容量小、穩(wěn)定性高且易于開發(fā)。Linux核心可以起到很好的橋梁作用,作為一個跨平臺的操作系統(tǒng),它可以支持二三十種CPU,而目前已有眾多家電業(yè)的芯片都開始做Linux的平臺移植工作。1999年就登錄中國的微軟“維納斯”計劃給了國人一個數(shù)字家庭的概念,引導(dǎo)各大家電廠商紛紛投入到這場革命中來,雖然最終未能獲得成功,卻使信息家電深入人心。如今各大廠商仍然在努力推出適用于新一代家電應(yīng)用的芯片,英特爾公司已專為信息家電業(yè)研發(fā)了名為StrongARM的ARM CPU系列,這一系列CPU本身不象X86CPU需要整合不同的芯片組,它在一顆芯片中可以包括你所需要的各項功能,即硬件系統(tǒng)實現(xiàn)了SOC的概念。美商網(wǎng)虎公司已將全球最小的嵌入式操作系統(tǒng)——QUARK成功移植到StrongARM系列芯片上,這是第一次把Linux、圖形界面和一些程序進(jìn)行完整移植(QUARK的內(nèi)核只有143K),它將為信息家電提供功能強(qiáng)大的核心操作系統(tǒng)。相信在不久的將來,數(shù)字智能家庭必將來到我們身邊。

      這些應(yīng)用中,可以著重于在控制方面的應(yīng)用。就遠(yuǎn)程家電控制而言,除了開發(fā)出支持TCP/IP的嵌入式系統(tǒng)之外,家電產(chǎn)品控制協(xié)議也需要制訂和統(tǒng)一,這需要家電生產(chǎn)廠家來做。同樣的道理,所有基于網(wǎng)絡(luò)的遠(yuǎn)程控制器件都需要與嵌入式系統(tǒng)之間實現(xiàn)接口,然后再由嵌入式系統(tǒng)來控制并通過網(wǎng)絡(luò)實現(xiàn)控制。所以,開發(fā)和探討嵌入式系統(tǒng)有著十分重要的意義。

      第二篇:基于嵌入式系統(tǒng)的圖形界面應(yīng)用設(shè)計范文

      目錄 嵌入式系統(tǒng)概述...................................................................................................................4

      1.1 嵌入式系統(tǒng)簡介.......................................................................................................4 1.2 嵌入式系統(tǒng)的組成...................................................................................................5 1.3 本課題的背景和意義...............................................................................................5 2 硬件平臺及ARM體系結(jié)構(gòu)................................................................................................7

      2.1 處理器選擇...............................................................................................................7 2.2 ARM體系結(jié)構(gòu)............................................................................................................7 3 軟件平臺...............................................................................................................................9

      3.1嵌入式操作系統(tǒng)選擇................................................................................................9 3.2 交叉編譯環(huán)境的建立.............................................................................................10 3.2.1 上位機(jī)的軟硬件配置.........................................................................................10 3.2.2 硬件連接與調(diào)試.............................................................................................11 3.2.3 配置TFTP及NFS服務(wù)...................................................................................13 3.2.4 安裝交叉編譯工具.........................................................................................15 4 移植 Bootloader.................................................................................................................16 4.1 Bootloader 概述.................................................................................................16 U-boot 簡介...................................................................................................................17 4.2.1 U-boot 的獲取.................................................................................................17 4.2.2 U-boot 目錄結(jié)構(gòu).............................................................................................17 U-boot 的啟動過程及工作原理...................................................................................18 4.3.1 啟動模式介紹...................................................................................................18 4.3.2 啟動階段1分析...............................................................................................19 4.3.3 啟動階段2分析...............................................................................................20 U-boot的移植過程........................................................................................................20 4.4.1 準(zhǔn)備工作...........................................................................................................20 4.4.2 添加支持 NAND Flash 啟動功能...................................................................21 4.4.3 添加 NAND Flash 讀寫功能.......................................................................22 4.4.4 修改 U-boot環(huán)境變量保存方式....................................................................22 4.4.5 加入 NAND Flash 閃存型號支持...............................................................23 4.5 U-boot 的燒寫及測試.........................................................................................23 4.6 設(shè)置U-boot環(huán)境變量..................................................................................................24 5 Linux 內(nèi)核的移植.............................................................................................................25 Linux 內(nèi)核的結(jié)構(gòu).........................................................................................................25 Linux 啟動過程簡析.....................................................................................................26 Linux內(nèi)核的移植過程..................................................................................................26 5.3.1 選擇參考板.......................................................................................................26 5.3.2 修改 NAND Flash 分區(qū)信息...........................................................................26 5.3.3 關(guān)閉 ECC 校驗.................................................................................................27 5.4 CS8900a網(wǎng)卡的移植過程....................................................................................28 5.4.1 修改硬件地址映射...........................................................................................28 5.4.2 添加 CS8900A 內(nèi)核編譯項.............................................................................28 5.5 Linux 內(nèi)核的剪裁配置.......................................................................................29 5.5.1 使用配置菜單...........................................................................................................29 5.5.2 基本配置選項...................................................................................................30 5.5.3 驅(qū)動程序配置選項...................................................................................................31 5.5.4 保存配置文件...................................................................................................31 5.5.5 編譯 Linux 內(nèi)核.............................................................................................31 5.6 內(nèi)核的下載及啟動...............................................................................................32 5.6.1 將引導(dǎo)信息加入內(nèi)核映像...............................................................................32 5.6.2 內(nèi)核映像的下載及運行...................................................................................32 6 建立根文件系統(tǒng).................................................................................................................33 6.1 根文件系統(tǒng)概述...................................................................................................33 6.1.1 根文件系統(tǒng)簡介...........................................................................................33 6.1.2 NFS 文件系統(tǒng)與Cramfs文件系統(tǒng)...................................................................33 6.2 建立Linux根文件系統(tǒng)目錄...............................................................................33 7 心得體會.............................................................................................................................34 基于嵌入式系統(tǒng)的圖形界面應(yīng)用設(shè)計 嵌入式系統(tǒng)概述

      1.1 嵌入式系統(tǒng)簡介

      嵌入式系統(tǒng)是一種以應(yīng)用為目的,軟硬件可裁減,適應(yīng)應(yīng)用系統(tǒng)對功能、成本、體積、功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng)。隨著計算機(jī)的發(fā)展和應(yīng)用的普及,嵌入式系統(tǒng)取得了迅猛的發(fā)展,嵌入式產(chǎn)品已經(jīng)滲透到社會經(jīng)濟(jì)、軍事、交通、通信等相關(guān)行業(yè),而且深入到家電、娛樂等各個領(lǐng)域,掀起了一場數(shù)字化革命。嵌入式圖形用戶界面系統(tǒng)是嵌入式系統(tǒng)的一個重要組成部分,它將極大的促進(jìn)嵌入式技術(shù)的發(fā)展和應(yīng)用。

      嵌入式系統(tǒng)是當(dāng)前最熱門、最有發(fā)展前途的IT應(yīng)用技術(shù)之一。一方面,嵌入式系統(tǒng)廣泛的應(yīng)用于智能家電、手持終端、工業(yè)控制等專用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應(yīng)要求很高;另一方面,隨著計算機(jī)技術(shù)的發(fā)展,越來越多的嵌入式系統(tǒng)設(shè)備需要良好的人機(jī)交互界面,這需要一個高性能、高可靠、占用系統(tǒng)資源少的用戶圖形界面的支持。為了適應(yīng)嵌入式設(shè)備對人機(jī)交互界面的要求,本論文對基于嵌入式Linux圖形用戶界面的設(shè)計實現(xiàn)進(jìn)行了研究。

      一方面,嵌入式硬件性能不斷提升,使得嵌入式設(shè)備上運行精美的圖形用戶界面成為可能;另一方面,嵌入式手持式消費電子產(chǎn)品的普及,例如PDA(個人數(shù)字助理)、智能手機(jī)、PMP(便攜式多媒體播放器),一個完善的嵌入式圖形用戶界面成為不可缺少的組成部分,嵌入式GUI(圖形用戶界面:Graphical User Interface)為嵌入式系統(tǒng)提供了一種應(yīng)用于特殊場合的人機(jī)交互接口。

      縱觀國際相關(guān)產(chǎn)業(yè)在圖形用戶界面方面的發(fā)展現(xiàn)狀,許多國際知名公司早已認(rèn)識到GUI在嵌入式產(chǎn)品方面產(chǎn)生的強(qiáng)大增值功能,以及帶動的巨大市場價值,因此在公司內(nèi)部成立了專門從事GUI研究與設(shè)計的部門。

      圖形用戶界面(GUI)是一種結(jié)合計算機(jī)科學(xué)、美學(xué)、心理學(xué)、行為學(xué),以及商業(yè)領(lǐng)域需求分析的人機(jī)系統(tǒng)工程。這種面向用戶的系統(tǒng)工程設(shè)計目的是優(yōu)化產(chǎn)品性能,使操作更人性化,減輕使用者的認(rèn)知負(fù)擔(dān),使其更適合用戶的操作需要,直接提升產(chǎn)品的市場競爭力。

      圖形用戶界面的廣泛流行是當(dāng)今計算機(jī)技術(shù)的重大成就之一,它極大的方便了非專業(yè)用戶的使用,可以通過窗口、菜單方便的進(jìn)行操作。一個圖形用戶界面通常由三個基本層次組成,也就是顯示模型、窗口模型和用戶模型。用戶模型包含了顯示和交互的主要特征,因此用戶圖形界面有時也僅指用戶模型。

      然而,對于嵌入式系統(tǒng)來說,由于其固有的體積、功耗以及價格的限制,使得傳統(tǒng)的圖形用戶界面并不能直接應(yīng)用于嵌入式系統(tǒng)[41,在嵌入式系統(tǒng)上實現(xiàn)GUI是一個具有挑戰(zhàn)性的課題??偟膩碚f,嵌入式GUI要求簡單、直觀、可靠、占用資源小且反應(yīng)速度快,以適應(yīng)系統(tǒng)硬件資源有限的條件嘲。另外,由于嵌入式系統(tǒng)硬件本身的特殊性,嵌入式GUI應(yīng)具備高度可移植性與可裁減性,以適應(yīng)不同的硬件條件和使用需求。具體的嵌入式GUI一般具備如下特點: 1.體積小

      2.運行時耗用系統(tǒng)資源小

      3.上層接口與硬件無關(guān),高度可移植 4.高可靠性

      5.在某些應(yīng)用場合應(yīng)具備實時性

      目前,嵌入式GUI的開發(fā)正處于起步階段,有許多技術(shù)難題尚待解決,因此對嵌入式圖形系統(tǒng)的研究成為嵌入式系統(tǒng)研究及發(fā)展中的一個重要內(nèi)容。

      可以預(yù)見,隨著電子、計算機(jī)等行業(yè)的高速發(fā)展,嵌入式系統(tǒng)將以它專用化,效率高的特性深入實際應(yīng)用的各個領(lǐng)域,因而開發(fā)與改進(jìn)嵌入式圖形用戶界面有著長遠(yuǎn)的意義。

      1.2 嵌入式系統(tǒng)的組成

      嵌入式系統(tǒng)一般可以分為四個部分:嵌入式處理器、嵌入式外圍設(shè)備、嵌入式操作系統(tǒng)和嵌入式應(yīng)用軟件,如圖1-1所示。

      圖1-1 嵌入式系統(tǒng)的組成

      1.3 本課題的背景和意義

      嵌入式導(dǎo)航計算機(jī)是飛機(jī),車輛,導(dǎo)彈和船舶等運載體上的重要設(shè)備,主要任務(wù)是按照原定的計劃和任務(wù),以要求的精度,在一定時間內(nèi)將載體引 導(dǎo)至目的地。嵌入式導(dǎo)航計算機(jī)主要分為兩部分:硬件電路,嵌入式操作系 統(tǒng)。本課題的目的就是針對其硬件環(huán)境,搭建起一個高效、穩(wěn)定的嵌入式操 作系統(tǒng)的平臺。它具有通用操作系統(tǒng)的基本特點,能夠有效管理復(fù)雜的系統(tǒng) 資源;能夠快速的處理大量的信息;能夠提供庫函數(shù)、驅(qū)動程序、工具集以 及部分應(yīng)用程序。在這個系統(tǒng)平臺上可以運行導(dǎo)航程序,接受傳感器的數(shù)據(jù) 經(jīng)處理后得到任務(wù)所需要的信息,從而實施導(dǎo)航任務(wù)。

      嵌入式Linux有著嵌入式導(dǎo)航計算機(jī)操作系統(tǒng)需要的很多特色:支持多 任務(wù)處理、中斷處理及任務(wù)間通信,性能穩(wěn)定,剪裁性好,開發(fā)與使用都很 方便。因此,本設(shè)計選用嵌入式Linux作為嵌入式導(dǎo)航計算機(jī)的操作系統(tǒng),這對于實現(xiàn)導(dǎo)航計算機(jī)的高效率、低功耗具有現(xiàn)實意義。

      圖1-2 嵌入式導(dǎo)航計算機(jī)硬件平臺結(jié)構(gòu)圖

      1.4 本課題的主要工作和研究內(nèi)容

      本課題的最重目標(biāo)是為嵌入式導(dǎo)航計算機(jī)移植Linux操作系統(tǒng)。通過參 閱大量文獻(xiàn),學(xué)習(xí)嵌入式Linux系統(tǒng)和 ARM 體系微處理芯片S3C2410的相 關(guān)知識,研究啟動下載程序 Bootloader 和 Linux內(nèi)核的基本工作原理,并且 搭建交叉編譯平臺,重點是移植Bootloader和內(nèi)核,以及制作根文件系統(tǒng)。具體工作內(nèi)容包括:

      (1)學(xué)習(xí)Linux操作系統(tǒng)的知識。

      (2)了解 ARM的體系結(jié)構(gòu)和S3C2410芯片硬件結(jié)構(gòu)。(3)完成交叉編譯環(huán)境的建立。(4)修改并移植U-boot 1.2.0。

      (5)修改和裁剪Linux 2.6.24.4內(nèi)核,移植網(wǎng)卡驅(qū)動程序。(6)制作根文件系統(tǒng)。(7)編寫應(yīng)用程序進(jìn)行測試。

      (8)將內(nèi)核和根文件系統(tǒng)部署到開發(fā)板。2 硬件平臺及ARM體系結(jié)構(gòu)

      2.1 處理器選擇

      本設(shè)計的處理器選擇高性能、低功耗的ARM9微處理器Samsung S3c2410。S3c2410 是著名半導(dǎo)體公司 Samsung 推出的一款 32 位 RISC 處理器。S3c2410的內(nèi)核基于 ARM920T,帶有MMU功能,主頻高達(dá)203MHz,可以支持 Linux、WinCE 等主流嵌入式操作系統(tǒng)。同時它還采用了一種叫做Advanced Microcontroller Bus Architecture(AMBA)的新型總線結(jié)構(gòu)。

      此外S3c2410還集成了以下片上功能:

      (1)16KB指令 Cache和16KB的數(shù)據(jù)Cache;(2)LCD控制器(支持STN和TFT);

      (3)4通道DMA;

      (4)3通道UART;

      (5)2通道USB;

      (6)4路PWM和 1個內(nèi)部時鐘控制器;

      (7)117個通用IO,24路外部中斷;

      (8)16位看門狗定時器;(9)RTC(實時時鐘);

      (10)1通道IIC/IIS控制器;

      (11)NAND Flash控制器;

      (12)PLL數(shù)字鎖相環(huán)。

      S3c2410 將系統(tǒng)的存儲空間分為 8 組(bank),每組大小是 128MB,共1GB。Bank0 到 Bank6 都采用固定 Bank 起始尋址,用于 ROM 或 SRAM。Bank7具有可編程的 Bank的起始地址和大小,用于ROM、RAM或SDRAM。S3c2410還支持從NAND Flash啟動,NAND Flash具有容量大、比NOR Flash價格低等特點。系統(tǒng)采用NAND Flash與SDRAM相結(jié)合的方式,可以獲得非常高的性價比。

      2.2 ARM體系結(jié)構(gòu)

      ARM微處理器基本架構(gòu):

      ARM9微處理器采用RISC體系結(jié)構(gòu):優(yōu)先選取使用頻最高的簡單指令,避免復(fù)雜指令

      RISC體系結(jié)構(gòu)應(yīng)具有如下特點:

      1.采用固定長度的指令格式,指令歸整、簡單、基本尋址方式有2~3種。2.使用單周期指令,便于流水線操作執(zhí)行。3.大量使用寄存器,數(shù)據(jù)處理指令只對寄存器進(jìn)行操作,只有加載/ 存儲指令可以訪問存儲器,以提高指令的執(zhí)行效率。

      4.除此以外,ARM體系結(jié)構(gòu)還采用了一些特別的技術(shù),在保證高性能的前提下盡量縮小芯片的面積,并降低功耗:

      5.所有的指令都可根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率。

      6.可用加載/存儲指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率。7.可在一條數(shù)據(jù)處理指令中同時完成邏輯處理和移位處理。8.在循環(huán)處理中使用地址的自動增減來提高運行效率。ARM微處理器的寄存器結(jié)構(gòu):

      1.ARM處理器共有37個寄存器,被分為若干個組(BANK),這些寄存器包括:

      2.31個通用寄存器,包括程序計數(shù)器(PC指針),均為32位的寄存器。3.6個狀態(tài)寄存器,用以標(biāo)識CPU的工作狀態(tài)及程序的運行狀態(tài),均為32位,目前只使用了其中的一部分。

      4.同時,ARM處理器又有7種不同的處理器模式,在每一種處理器模式下均有一組相應(yīng)的寄存器與 之對應(yīng)。即在任意一種處理器模式下,可訪問的寄存器包括15個通用寄存器(R0~R14)、一至二個狀態(tài)寄存器和程序計數(shù)器。在所有的寄存器中,有些是在 7種處理器模式下共用的同一個物理寄存器,而有些寄存器則是在不同的處理器模式下有不同的物理寄存器。

      ARM微處理器的指令結(jié)構(gòu):

      ARM微處理器的在較新的體系結(jié)構(gòu)中支持兩種指令集:ARM指令集和Thumb指令集。其 中,ARM指令為32位的長度,Thumb指令為16位長度。Thumb指令集為ARM指令集的功能子集,但與等價的ARM代碼相比較,可節(jié)省30% ~40%以上的存儲空間,同時具備32位代碼的所有優(yōu)點。

      ARM9系列微處理器具有以下特點: 1.5級整數(shù)流水線,指令執(zhí)行效率更高。2.提供1.1MIPS/MHz的哈佛結(jié)構(gòu)。

      3.支持32位ARM指令集和16位Thumb指令集。4.支持32位的高速AMBA總線接口。

      5.全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。

      6.MPU支持實時操作系統(tǒng)。

      7.支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。大小都為16K。8.ARM9系列微處理器主要應(yīng)用于無線設(shè)備、儀器儀表、安全系統(tǒng)、機(jī)頂盒、高端打印機(jī)、數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)等。

      9.ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應(yīng)用場合。軟件平臺

      3.1嵌入式操作系統(tǒng)選擇

      本設(shè)計的嵌入式操作系統(tǒng)選擇嵌入式Linux操作系統(tǒng)。

      嵌入式操作系統(tǒng)是一種支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)(包括硬、軟件系統(tǒng))極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等Browser。

      一般情況下,嵌入式操作系統(tǒng)可以分為兩類,一類是面向控制、通信等領(lǐng)域的實時操作系統(tǒng),如 WindRiver 公司的 VxWorks、ISI 的 pSOS、QNX系統(tǒng)軟件公司的QNX、ATI的 Nucleus等;另一類是面向消費電子產(chǎn)品的非實時操作系統(tǒng),這類產(chǎn)品包括個人數(shù)字助理(PDA)、移動電話、機(jī)頂盒等。嵌入式 Linux 操作系統(tǒng)

      Linux 的嵌入式改造主要圍繞體積和實時性展開,目前已經(jīng)有很多公司在進(jìn)行這方面的工作,其中包括 RT-Linux,uClinux,Embedix,Xlinux,MidoriLinux和紅旗嵌入式 Linux等等。

      與目前市場上的眾多商業(yè)的實時系統(tǒng)相比,嵌入式Linux除具有內(nèi)核穩(wěn)定,功能強(qiáng)大,支持多種硬件平臺,兼容性好的優(yōu)勢外,還擁有以下的特點:(1)完全開放源代碼

      嵌入式 Linux完全開放其源代碼,這使得修改,裁剪 Linux成為可能,開發(fā)者可以根據(jù)實際需要優(yōu)化操作系統(tǒng)代碼,降低整個系統(tǒng)的開銷與能耗。(2)成本低

      GPL協(xié)議保證了源自Linux的嵌入式Linux也是開放源代碼的自由軟件。而大多數(shù)嵌入式Linux使用的開發(fā)工具也是遵守GPL協(xié)議的,同樣也可以免費獲得。

      (3)豐富的實用軟件支持

      Linux 提供了大量的實用程序和各種應(yīng)用軟件。這些軟件的正確性和有效性都經(jīng)過了實際檢驗,可以根據(jù)需要合理利用他們迅速構(gòu)建嵌入式應(yīng)用的軟件環(huán)境。這樣可以極大地減小嵌入式軟件開發(fā)的時間和費用,提高系統(tǒng)可靠性。而商用的實時操作系統(tǒng)也試圖提供各種常用軟件工具包,但其數(shù)量是無法和Linux操作系統(tǒng)匹敵的。由此可見,選擇嵌入式Linux操作系統(tǒng),就有了豐富的資源保障,在節(jié)省成本的同時,提高了開發(fā)效率。

      3.2 交叉編譯環(huán)境的建立

      采用交叉開發(fā)環(huán)境(Cross Development Environment)是嵌入式應(yīng)用軟

      件開發(fā)時的一個顯著特點,通常在通用計算機(jī)上編寫程序,然后通過交叉編 譯生成目標(biāo)平臺上可運行的二進(jìn)制代碼格式,最后再下載到目標(biāo)平臺上的特 定位置運行,交叉開發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件的環(huán)境,它與運行嵌入式應(yīng)用軟件的環(huán)境有所不同,通常采用主機(jī)/目標(biāo)及模式。交叉開發(fā)模型如圖2-1所示:

      圖3-1 交叉開發(fā)模型

      3.2.1 上位機(jī)的軟硬件配置

      硬件:

      本課題用到一臺通用PC機(jī)和一臺筆記本電腦,其硬件配置如下:

      PC機(jī):

      CPU:P IV 2.0G RAM:256MB 串口:RS-232 并口:25針母頭 筆記本電腦: CPU:PM 705 RAM:768MB 網(wǎng)卡:10/100MBps自適應(yīng)網(wǎng)卡 軟件:

      PC機(jī)的操作系統(tǒng)為Windows XP,裝有DNW串口調(diào)試工具以及SJF2410 三星Flash燒寫工具。前者用于串口調(diào)試,后者用于燒寫B(tài)ootloader。

      筆記本電腦的操作系統(tǒng)為 Ubuntu7.10,裝有 GCC 等編譯工具以及arm-linux-gcc交叉編譯工具,并開啟TFTP和 NFS服務(wù)。用于 Linux內(nèi)核編 譯和軟件開發(fā),并作為TFTP服務(wù)器和NFS主機(jī)。其中,Ubuntu7.10 是 Linux 的桌面發(fā)行版之一,是當(dāng)今最為流行的桌面Linux 系統(tǒng)。使用 Linux 操作系統(tǒng)及其自帶的工具,是目前最權(quán)威的嵌入式Linux系統(tǒng)開發(fā)方式,但是許多操作都是基于命令行的,所以需要扎實的Linux基礎(chǔ)知識。

      在 Ubuntu 中建立 arm用戶,專門用于 ARM 開發(fā)。在 home 目錄中建立下列幾個子目錄:

      Boot:用于存放bootloader相關(guān)程序。Kernel:用于存放 Linux內(nèi)核源碼。FS:用于存放根文件系統(tǒng)相關(guān)的程序。Program:用于存放用戶程序。

      3.2.2 硬件連接與調(diào)試

      硬件連接方式:

      圖3-2 硬件連接圖

      (1)開發(fā)板串口UART0通過交叉串口線與PC主機(jī)的 COM1口相連。

      (2)開發(fā)板的JTAG口通過20PIN排線與SUPER JTAG調(diào)試頭相連,再通過25PIN并口線連接到主機(jī)的LPT1口。

      (3)開發(fā)板的網(wǎng)卡接口通過以太網(wǎng)線連接到路由器的LAN1口。

      (4)筆記本的網(wǎng)卡接口通過以太網(wǎng)線連接到路由器的LAN2口。

      (5)路由器的 WAN口連接到INTERNET。串口調(diào)試:

      在本課題嵌入式系統(tǒng)中的目標(biāo)開發(fā)板,采用串口調(diào)試的方法,即把串口當(dāng)作目標(biāo)開發(fā)板的顯示終端,無論是打印輸出,還是管理配置輸入,都使用串口,這就需要主機(jī)系統(tǒng)裝有串口調(diào)試工具。PC機(jī)中安裝有DNW串口調(diào)試工具,在使用DNW之前,應(yīng)當(dāng)對PC機(jī)的串口進(jìn)行設(shè)置。方法如下:

      (1)XP系統(tǒng)中,右鍵單擊“我的電腦”,選擇“屬性”。

      (2)選擇“硬件”——“設(shè)備管理器。

      (3)選擇“端口”——“串口(COM1)”,打開的對話框按圖2-3設(shè)置。

      圖3-3 串口屬性設(shè)置

      運行 DNW 工具,選擇菜單“Configuration”——“Options”,按圖 2-4所示進(jìn)行設(shè)置。

      圖 3-4

      DNW 設(shè)置

      每次使用DNW之前,應(yīng)當(dāng)設(shè)置DNW連接到串口。點擊菜單中的 “Serial Port”——“Connect”,當(dāng)DNW的標(biāo)題欄出現(xiàn)[COM1,115200bps]的提示后,表明已經(jīng)連接好,此時才可以使用DNW工具。

      3.2.3 配置TFTP及NFS服務(wù)

      TFTP 服務(wù)簡介:

      TFTP(Trivial File Transfer Protocol)協(xié)議即簡單文件傳輸協(xié)議,是TCP/IP協(xié)議族中的一個用來在客戶機(jī)與服務(wù)器之間進(jìn)行簡單文件傳輸?shù)膮f(xié)議,提供不復(fù)雜、開銷不大的文件傳輸服務(wù)。TFTP承載在UDP上,提供不可靠的數(shù)據(jù)流傳輸服務(wù),不提供存取授權(quán)與認(rèn)證機(jī)制,使用超時重傳方式來保證數(shù)據(jù)的到達(dá)。

      TFTP 服務(wù)在 Linux 系統(tǒng)中有客戶端和服務(wù)器兩個軟件包。配置 TFTP服務(wù),必須都安裝好。

      TFTP 服務(wù)安裝與配置:

      (1)Ubuntu中安裝tftp工具只需在終端中鍵入命令: $ sudo apt-get install tftp tftpd 其中,前者是客戶端,后者是服務(wù)器。

      (2)Ubuntu是debian類的系統(tǒng),默認(rèn)是沒有安裝 inetd的,安裝命令如下: $ sudo apt-get install netkit-inetd(3)在home目錄里建立tftpboot 文件夾,命令如下: $ cd ~ $ sudo mkdir tftpboot $ sudo chmod 777 tftpboot 其中,參數(shù) 777 的意義是:根管理員、組和其他用戶對 tftpboot 文件夾 的權(quán)限均為“可讀、可寫、可以執(zhí)行”(4)修改/etc/inetd.conf,添加如下語句:

      tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /home/arm/tftpboot 目的是指定 tftp 服務(wù)的根目錄為/home/arm/tftpboot,修改/etc/inetd.conf 文件后應(yīng)當(dāng)重啟 inted進(jìn)程,命令如下: $ sudo /etc/init.d/inetd reload(5)重啟 inted 進(jìn)程后,配置即可生效,在 tftpboot 中建立文件 test 后,用

      下列命令可以進(jìn)行測試: $ cd ~ $ tftp 127.0.0.1 Tftp> get test 若可下載test 文件,則證明TFTP服務(wù)配置正確。NFS 服務(wù)簡介:

      NFS 就是 Network File System 的縮寫,最早之前是由 Sun 這家公司所開發(fā)的。最大的功能就是可以透過網(wǎng)絡(luò),讓不同的機(jī)器、不同的操作系統(tǒng)、可以彼此分享個別的檔案(share files)。所以,可以簡單的將它看做是一個文件服務(wù)器(file server)。通過 NFS 服務(wù)器可以讓開發(fā)板將網(wǎng)絡(luò)遠(yuǎn)端的 NFS 主機(jī)分享的目錄,掛載到開發(fā)板當(dāng)中,在開發(fā)板看起來,那個遠(yuǎn)端主機(jī)的目錄就好像是自己的根目錄一樣,可以方便的進(jìn)行開發(fā)調(diào)試。NFS 服務(wù)安裝與配置:

      (1)Ubuntu上默認(rèn)是沒有安裝NFS服務(wù)器的,首先要安裝NFS服務(wù)程序: $ sudo apt-get install nfs-kernel-server 在安裝nfs-kernel-server時,apt 會自動安裝nfs-common和portmap。這樣,宿主機(jī)就相當(dāng)于NFS Server。(2)配置/etc/exports:

      NFS 掛載目錄及權(quán)限由/etc/exports 文件定義。本課題要將 home 目錄中 的/home/zp/share 目錄讓 192.168.0.*的 IP 共享, 則在該文件末尾添加下列語句:

      /home/arm/FS/myrootfs 192.168.0.2/10(rw,sync,no_root_squash)配置參數(shù)說明: rw:具有可擦寫的權(quán)限。

      sync:文件同步寫入到內(nèi)存和硬盤當(dāng)中。

      no_root_squash:若登陸共享目錄的使用者是 root 的話,則他的權(quán)限將被限 制為匿名使用者,通常他的UID和GID都會變?yōu)閚obody。(3)本地測試NFS:

      輸入以下命令可以將NFS根目錄掛載到本地的/mnt 目錄中: $ sudo mount 192.168.0.2:/home/arm/FS/myroot /mnt 此時/mnt 中的內(nèi)容應(yīng)當(dāng)與NFS根目錄中的內(nèi)容一致。

      3.2.4 安裝交叉編譯工具

      交叉編譯簡介:

      所謂交叉編譯,簡單的說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼,比如在 PC平臺上(X86 CPU)編譯出能運行在以 ARM 為內(nèi)核的CPU平臺上的程序,一般選擇GNU開發(fā)工具 gcc。GNU的開發(fā)工具都是免費的,遵循 GPL協(xié)議,任何人可以從網(wǎng)上獲取。GNU 提供的編譯工具包括匯編器as、c編譯器gcc、c++編譯器g++、連接器ld和二進(jìn)制轉(zhuǎn)換工具objcopy。出于兼容性和穩(wěn)定性考慮,本課題選擇目前比較穩(wěn)定的版本 Cross-3.3.2 和Cross-3.4.1。

      交叉編譯器的安裝及配置:

      (1)獲取arm-linux交叉編譯工具:

      登陸arm-linux項目組的FTP服務(wù)器:

      ftp.arm.linux.org.uk/pub/armlinux/toolchain/

      下載cross-3.3.2.tar.bz2和cross-3.4.1.tar.bz2。

      (2)通過下列命令可以安裝arm-linux交叉編譯工具:

      $ cp cross-3.4.1.tar.bz2 /

      $ cd /

      $ tar jxvf cross-3.4.1.tar.bz2

      這樣,交叉編譯工具就被安裝到了/usr/local/arm/3.4.1中。用同樣的方法 可以安裝cross-3.3.2版的交叉編譯工具。

      (3)設(shè)置環(huán)境變量:

      修改home目錄下的profile文件,加入如下代碼,指明交叉編譯工具的 目錄。

      # User specific environment and startup programs

      export TARGET=arm-linux

      export PRJROOT=/home/arm

      export

      PATH=$PATH:$HOME/bin:$PREFIX/bin:/usr/local/arm/3.4.1/bin:/sbin:/usr/ sbin:/usr/local/sbin

      測試交叉編譯器:

      可以通過一個簡單的程序測試安裝好的交叉編譯工具,看其能否正常工作。編寫一個 hello.c源文件,通過以下命令進(jìn)行編譯,編譯后生成名為Hello的可執(zhí)行文件,通過 file 命令可以查看文件的類型。當(dāng)顯示以下信息是表明交叉編譯工具正常安裝了,通過編譯生成了ARM體系可執(zhí)行的文件。注意,通過該交叉編譯器編譯的可執(zhí)行文件只能在 ARM 體系下執(zhí)行,不能在基于X86的普通PC上執(zhí)行。

      $ arm-linux-gcc –o Hello hello.c

      $ file Hello

      Hello:ELF 32-bit LSB executable ,ARM, version 1(ARM), for GNU/Linux 2.4.3, dynamically linked(uses shared libs), not stripped 4 移植 Bootloader 4.1 Bootloader 概述

      簡單地說,Bootloader就是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。

      通常,Bootloader是嚴(yán)重地依賴于硬件而實現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的Bootloader幾乎是不可能的,不同處理器構(gòu)架都有不同的 Bootloader。Bootloader 不但依賴于 CPU 的體系結(jié)構(gòu),而且依賴于嵌入式板級設(shè)備的配置。對于不同的嵌入式板而言,即使它們使用同一種處理器,要想讓運行在一塊板子上的Bootloader運行在另一塊板子上,一般也要修改其源代碼。

      目前常用的Bootloader程序有以下幾種: U-boot、VIVI、Blob和RedBoot。其中,U-boot 功能豐富,且對于ARM體系支持良好,事實上,它已成為ARM平臺上標(biāo)準(zhǔn)Bootloader。因此,本課題選用U-boot 作為移植對象。U-boot 簡介

      U-boot 是德國 DENX 小組的開發(fā)用于多種嵌入式 CPU 的 Bootloader 程序,U-boot 不僅僅支持嵌入式Linux系統(tǒng)的引導(dǎo),還支NetBSD,VxWorks,QNX,ARTOS,LynxOS 等嵌入式操作系統(tǒng)。U-boot 除了支持 ARM 系列的處理器外,還能支持 MIPS、x86、PowerPC、NIOS、XScale 等諸多常用系列的處理器。

      4.2.1 U-boot 的獲取

      U-boot 的源碼可以從sourceforge網(wǎng)站下載,網(wǎng)址為:

      http://sourceforge.net/project/u-boot。

      下載的文件為u-boot-1.2.0.tar.bz2,用以下命令將其解壓。

      $ tar jcvf u-boot-1.2.0.tar.bz2 /home/arm/boot/ 4.2.2 U-boot 目錄結(jié)構(gòu)

      解壓后,在 U-boot 頂層目錄下有 18 個子目錄,分別存放和管理不同的源碼。這些目錄中所要存放的文件有其規(guī)則,可以分為3類,如表3-1所示:

      第一類目錄與處理器體系結(jié)構(gòu)或開發(fā)板硬件直接相關(guān)。第二類目錄是一些通用的函數(shù)或者驅(qū)動程序。第三類目錄是U-boot 的應(yīng)用程序、工具或者文檔。

      表4-1 U-boot頂層目錄下部分目錄的存放規(guī)則 U-boot 的啟動過程及工作原理

      4.3.1 啟動模式介紹

      Bootloader 都包含兩種不同的操作模式:“啟動加載”模式和“下載”模式,這種區(qū)別僅對于開發(fā)人員才有意義。但從最終用戶的角度看,Boot Loader 的作用就是用來加載操作系統(tǒng),而并不存在所謂的啟動加載模式與下載工作模式的區(qū)別。

      啟動加載(Bootloading)模式:這種模式也稱為“自主”(Autonomous)模式。也即 Bootloader 從目標(biāo)機(jī)上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載 到 RAM中運行,整個過程并沒有用戶的介入。這種模式是 Boot Loader 的

      正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時侯,Bootloader 顯然必須工作在這種模式下。

      下載(Downloading)模式:在這種模式下,目標(biāo)機(jī)上的 Boot Loader 將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)(Host)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被 Bootloader保存到目標(biāo)機(jī)的 RAM 中,然后再被 Bootloader 寫到目標(biāo)機(jī)上的 FLASH 類固態(tài)存儲設(shè)備中。Bootloader 的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時被使用; 此外,以后的系統(tǒng)更新也會使Bootloader的這種工作模式。工作于這種模式下的 Bootloader 通常都會向它的終端用戶提供一個簡單的命令行接口。

      U-boot 這樣功能強(qiáng)大的Bootloader 同時支持這兩種工作模式,而且允許用戶在這兩種工作模式之間進(jìn)行切換。

      大多數(shù)Bootloader都分為階段1(stage1)和階段2(stage2)兩大部分,U-boot也不例外。依賴于CPU體系結(jié)構(gòu)的代碼(如CPU初始化代碼等)通常都放在階段1中且通常用匯編語言實現(xiàn),而階段 2 則通常用C語言來實現(xiàn),這樣可以實現(xiàn)復(fù)雜的功能,而且有更好的可讀性和移植性。

      圖 4-1 U-boot啟動代碼流程圖

      4.3.2 啟動階段1分析

      如果 S3C2410 被配置成從 NAND 閃存啟動,上電后,S3C2410 的 NAND 閃存控制器會自動把 NAND 閃存中的前 4K 數(shù)據(jù)搬移到內(nèi)部 RAM中,并把 0x00000000 設(shè)置為內(nèi)部 RAM 的起始地址,CPU 從內(nèi)部 RAM 的0x00000000 位置開始啟動。因此要把最核心的啟動程序放在 NAND 閃存的前4K中。由于NAND閃存控制器從NAND閃存中搬移到內(nèi)部RAM的代碼是有限的,所以,在啟動代碼的前 4K里,必須完成 S3C2410 的核心配置,并把啟動代碼的剩余部分搬到 RAM 中運行。這前4K完成的主要工作就是 U-boot 啟動的第一個階段(stage1)。

      U-boot 的stage1代碼通常放在start.s文件中,它用匯編語言寫成。此階段要完成的主要工作如下:

      (1)設(shè)置異常向量,當(dāng)發(fā)生異常時,執(zhí)行 cpu/arm920t/interrupts.c 中定義的中斷處理函數(shù)。

      (2)設(shè)置CPU的模式為SVC(管理模式,操作系統(tǒng)使用的保護(hù)模式)(3)關(guān)閉看門狗。(4)禁掉所有中斷。

      (5)設(shè)置 cpu 頻率,默認(rèn)頻率比為 FCLK:HCLK:PCLK = 1:2:4,默認(rèn)FCLK的值為120 Mhz,該值為S3C2410手冊的推薦值。(6)調(diào)用cpu初始化函數(shù)cpu_init_crit。其中一個功能是設(shè)置CP15寄存 器,失效指令(I)Cache和數(shù)據(jù)(D)Cache后,禁止MMU與 Cache。(7)重定向,將 NAND Flash代碼復(fù)制到 RAM,其中有以下兩個個步 驟:

      (a)通過copy_myself子程序,把數(shù)據(jù)從Nand Flash中拷貝到RAM。

      (b)配置??臻g,配置代碼段的開始地址、動態(tài)內(nèi)存區(qū)長度、全局?jǐn)?shù)據(jù) 大小以及分配IRQ 和FRQ的??臻g。

      (8)BSS(Block Started by Symbol)段清零。(9)進(jìn)入C代碼:

      ldr pc, _start_armboot _start_armboot:.word start_armboot 其中 start_armboot 是 U-boot 運行的第一個 C 程序,在 lib_arm/board.c 文件中定義。隨后進(jìn)入第二階段。

      4.3.3 啟動階段2分析

      lib_arm/board.c 中的 start armboot 是 C 語言開始的函數(shù),也是整個啟動代碼中C語言的主函數(shù),同時還是整個 U-boot(armboot)的主函數(shù),該函數(shù)主要完成如下操作:(1)定義初始化函數(shù)表。

      (2)NAND Flash初始化,利用 nand_init()函數(shù)實現(xiàn)。(3)環(huán)境變量初始化,利用env_relocate()函數(shù)實現(xiàn)。(4)外圍設(shè)備初始化,利用 devices_init()函數(shù)實現(xiàn)。(5)使能中斷,利用enable_interrupts()函數(shù)實現(xiàn)。(6)初始化網(wǎng)絡(luò)設(shè)備。

      (7)進(jìn)入U-boot 的命令循環(huán),接受用戶輸入的命令,執(zhí)行相應(yīng)的工作。

      U-boot的移植過程

      移植U-boot 的主要工作就是添加開發(fā)板硬件相關(guān)的文件、配置選項,然后進(jìn)行編譯。

      4.4.1 準(zhǔn)備工作

      (1)建立開發(fā)板編譯項,在頂層Makefile中加入如下兩行: LJD2410_config : unconfig @$(MKCONFIG)$(@:_config=)arm arm920t LJD2410 NULL s3c24x0 各項意義如下:

      arm:CPU 的架構(gòu)(ARCH)arm920t:CPU 的類型(CPU),其對應(yīng)于 cpu/arm920t 子目錄。LJD2410:開發(fā)板的型號(BOARD),對應(yīng)于 board/crane2410 目錄。NULL:開發(fā)者/或經(jīng)銷商(vender)。s3c24x0:片上系統(tǒng)(SOC)。

      (2)在 board 子目錄中建立 LJD2410開發(fā)板目錄: $ cp rf board/smdk2410 board/LJD2410 $ cd board/LJD2410 $ mv smdk2410.c LJD2410.c(3)在 include/configs/中建立配置頭文件:

      $ cp include/configs/smdk2410.h include/configs/LJD2410.h(4)測試編譯能否成功: $ make distclean $ make LJD2410_config $ make CROSS_COMPILE=arm-linux-如果編譯成功,證明已經(jīng)建立好了LJD2410的編譯項,但是還要進(jìn)行進(jìn)一步的修改,因為現(xiàn)在的代碼是完全拷貝 smdk2410 開發(fā)板的,還不能工作在LJD2410板上。接下來要按照 LJD2410板的硬件配置來進(jìn)一步移植。(5)調(diào)整SDRAM的刷新率,修改 lowlevel_init.S: #define REFCNT 1268 在smdk2410.c中調(diào)整 HCLK為 100MHz: /*Fout = 200MHz */ #define M_MDIV 0x5C #define M_PDIV 0x4 #define M_SDIV 0x0 4.4.2 添加支持 NAND Flash 啟動功能

      由于U-boot 不支持從NAND Flash啟動,所以將程序復(fù)制到RAM里面去需要新加代碼實現(xiàn),一般通過 copy_myself 函數(shù)實現(xiàn)。這可以參考 VIVI的copy_muself代碼將其添加到Start.S中,詳見附錄 A-1。

      在Start.S中調(diào)用了nand_reak_ll函數(shù),該函數(shù)用于NAND Flash讀操作,在U-boot 中沒有定義,需要新加代碼實現(xiàn),該函數(shù)的實現(xiàn)可以參考VIVI源代碼。將VIVI/s3c2410/nand_read.c 復(fù)制到LJD2410目錄內(nèi)即可。

      由于使用了新的 Flash 讀函數(shù),在編譯時需要重新鏈接,修改 LJD2410目錄中的Makefile文件,將原先的OBJS := myboard.o flash.o 改為:OBJS := myboard.o nand_read.o。

      S3c2410處理器帶有NAND Flash控制器,但是U-boot 沒有定義其寄存器地址,修改 include/s3c2410.h文件,加入如下代碼: #define oNFCONF 0x00 #define oNFCMD 0x04 #define oNFADDR 0x08 #define oNFDATA 0x0C #define oNFSTAT 0x10 #define oNFECC 0x14 4.4.3 添加 NAND Flash 讀寫功能

      U-boot 運行至第二階段進(jìn)入 start_armboot()函數(shù)。其中 nand_init()函數(shù)是對 NAND Flash 的最初初始化函數(shù)。其調(diào)用與CFG_NAND_LEGACY 宏有關(guān),如果沒定義

      CFG_NAND_LEGACY 這個宏,就按照 start_armboot()調(diào)用 drivers/nand/nand.c 中的 nand_init 函數(shù)(該函數(shù)在 1.2.0 已經(jīng)被實現(xiàn))默認(rèn)規(guī)定,但還有個 board_nand_init()函數(shù)沒實現(xiàn),需自己添加。如果定義CFG_NAND_LEGACY,就不使用默認(rèn)的nand_init,而調(diào)用自己寫的nand_init函數(shù)了,本課題選擇第二種方式。

      在/drivers/nand_legacy/nand_legacy.c 中添加 NAND Flash 初始化函數(shù)nand_init,詳見附錄 A-2。

      可以看到 nand_init()調(diào)用 NF_Init()函數(shù),使能 NAND Flash 控制器和 NAND Flash;調(diào)用 NF_Reset()函數(shù)置位,NF_WaitRB()查詢 NAND Flash 的狀態(tài),最后再調(diào)用 nand_probe((ulong)nand)函數(shù)探測 NAND Flash。

      在 include/configs/smdk2410.h 文件的后半部原先有 Flash 的參數(shù),刪除它,并加入NAND Flash的參數(shù),并且開啟一些命令宏。

      4.4.4 修改 U-boot環(huán)境變量保存方式

      由于本課題使用NAND Flash作為外存儲器,所以U-boot 的參數(shù)存儲函數(shù)應(yīng)當(dāng)進(jìn)行適當(dāng)?shù)男薷摹?/p>

      在/common/env_common.c里添加default_env函數(shù),此函數(shù)的作用是對環(huán)境變量保存方式的簡單初始化。這個文件中還定義了U-boot 保存環(huán)境變量的底層函數(shù)。其中/* Environment not changable */行下面的部分應(yīng)當(dāng)用 default_env 函數(shù)代替。這樣,就可以在 U-boot 命令行中實現(xiàn)對環(huán)境變量的設(shè)置與保存。文件 /common/env_nand.c 中 包 含 了 Flash 擦 寫 函 數(shù),結(jié)合 CFG_NAND_LEGACY這個宏,添加代碼實現(xiàn) NAND Flash的擦寫功能。初 始化環(huán)境仍用 default_env函數(shù)替換。

      4.4.5 加入 NAND Flash 閃存型號支持

      在/include/linux/mtd/

      nand_ids.h

      nand_flash_dev nand_flash_ids結(jié)構(gòu)體的賦值進(jìn)行修改,加入下列代碼:

      {“Samsung K9F1208U0B”, NAND_MFR_SAMSUNG, 0x76, 26, 0, 3, 0x4000, 0}, 這樣,U-boot 就可以正確識別此款NAND Flash芯片。

      4.5 U-boot 的燒寫及測試

      若開發(fā)板中沒有任何程序,則不能啟動,需要先將 U-boot 燒寫到 Flash中。常用的燒寫方法有如下幾種:(1)將Flash取下,用編程器燒寫。(2)通過串口線燒寫。(3)通過JTAG調(diào)試接口燒寫。

      本課題采用第三種方法。通過JTAG接口燒寫的優(yōu)點是操作簡單,但是燒寫速度較慢,總體來說是一種非常經(jīng)濟(jì)實用的方法。具體操作如下:(1)連接好開發(fā)板和PC主機(jī),主機(jī)安裝并口設(shè)備驅(qū)動程序。

      (2)將 u-boot.bin 拷貝至 sjf2410 目錄下,用以下命令運行 sjf2410:

      sjf2410 /f:u-boot.bin(3)sjf2410程序啟動后,會有三個選項,依次為:

      (a)選擇Flash芯片型號,(b)選擇程序類型,(c)選擇燒寫起始地址。

      本課題全部選擇“0”即可。

      (4)燒寫完畢后選擇“2”退出sjf2410。

      燒寫完成后,斷開JTAG線,PC機(jī)運行DNW串口調(diào)試軟件。重啟開發(fā)板后,DNW中會輸出以下信息,表明U-boot可以正常啟動:

      其中,“LJD2410 >”即系統(tǒng)提示符,在此可以輸入 U-boot 的命令并執(zhí)行。U-boot 提供了幾十個常用的命令,通過這些命令,可以對開發(fā)板進(jìn)行調(diào)試,可以引導(dǎo)Linux內(nèi)核,還可以擦寫 Flash 完成系統(tǒng)部署等功能。

      輸入“help”命令,可以看到U-boot 當(dāng)前的所有命令列表,如表3-2所示,每一條命令后面是簡單的說明。

      表4-2 U-boot中幾個常用命令及其說明

      4.6 設(shè)置U-boot環(huán)境變量

      U-boot的環(huán)境變量存儲在NAND Flash中U-boot程序映像后面的128Kb字節(jié)中,這部分被稱為“變量區(qū)”。

      本課題中,設(shè)置U-boot 環(huán)境變量共有兩種方法:(1)在板級頭文件LJD2410.h中定義有相關(guān)的環(huán)境變量宏。

      這類的宏名稱中以“CONFIG_”開頭,區(qū)別于以“CFG_”開頭的內(nèi)部變量宏。以開發(fā)板的IP地址為例,LJD2410.h中有如下代碼:

      #define CONFIG_IPADDR 192.168.0.10 這種方法定義簡便,但是每次更改環(huán)境變量必須重新編譯、燒寫U-boot程序,操作復(fù)雜,不方便調(diào)試。(2)使用命令設(shè)置環(huán)境變量。

      這種方法得益于先前所做的移植工作,優(yōu)點是操作簡便,可以在線設(shè)置,重啟開發(fā)板即可生效。還是以設(shè)置開發(fā)板 IP 地址為例,U-boot 提示符下輸入以下命令:

      LJD2410 > setenv ipaddr 192.168.0.10 LJD2410 > saveenv 系統(tǒng)顯示:

      Saving Environment to NAND...Erasing Nand...Writing to Nand...done 表明新設(shè)置的環(huán)境變量已保存至Flash中的變量區(qū)。5 Linux 內(nèi)核的移植

      Linux 內(nèi)核的結(jié)構(gòu)

      在對Linux內(nèi)核移植之前,首先要明確內(nèi)核源碼的基本組織情況,只有了解了各目錄級代碼的功能才能準(zhǔn)確找到需要修改和改進(jìn)的地方。

      Linux 內(nèi)核主要由 5 個子系統(tǒng)組成:進(jìn)程調(diào)度、內(nèi)存管理、虛擬文件系 統(tǒng)、網(wǎng)絡(luò)接口、進(jìn)程間通信。

      Linux內(nèi)核源碼中幾個主要的目錄說明如下:

      (1)/arch包含了所有硬件結(jié)構(gòu)特定的內(nèi)核代碼。

      Linux 系統(tǒng)能支持如此多平臺的部分原因是因為內(nèi)核把原程序代碼清晰的劃分為體系結(jié)構(gòu)無關(guān)部分和體系結(jié)構(gòu)相關(guān)部分。對于任何平臺,都必須包含以下幾個目錄:

      (a)boot:包括啟動內(nèi)核所使用的部分或全部平臺特有代碼。

      (b)kernel:存放支持體系結(jié)構(gòu)特有的(如信號處理和SMP)特征的實現(xiàn)。

      (c)

      lib:存放高速體系結(jié)構(gòu)特有的(如strlen和 memcpy)通用函數(shù)的實現(xiàn)。

      (d)mm:存放體系結(jié)構(gòu)特有的內(nèi)存管理程序的實現(xiàn)。

      (e)math-emu:模擬 FPU 的代碼。對于 ARM 處理器來說,此目錄用mach-xxx代替。

      (2)/drivers包含了內(nèi)核中所有的設(shè)備驅(qū)動程序。

      (3)/fs包含了所有的文件系統(tǒng)的代碼。

      (4)/include包含了建立內(nèi)核代碼時所需的大部分庫文件。

      該目錄也包含了不同平臺需要的庫文件。比如,asm-arm是 arm平臺需要的庫文件。

      (5)/init 包含了內(nèi)核的初始化代碼,內(nèi)核從此處工作。這是研究核心如何工作的好起點。

      (6)/ipc包含了進(jìn)程間通信代碼。

      (7)/kernel包含了主內(nèi)核代碼。

      (8)/mm包含了所有內(nèi)存管理代碼。

      (9)/net 包含了和網(wǎng)絡(luò)相關(guān)的代碼。

      (10)/documents包含了內(nèi)核源碼各個部分的說明文件。

      通常,在每個目錄下,都有一個 Kconfig 文件和一個Makefile文件,這兩個文件都是編譯時使用的輔助文件,仔細(xì)閱讀這兩個文件對弄清各個文件之間的聯(lián)系和依托關(guān)系很有幫助;而且在有的目錄下還有 Readme 文件,它是對該目錄下的文件的一些說明,同樣有利于我們對內(nèi)核源碼的理解。

      顯然,移植工作的重點就是移植arch目錄下的文件。Linux 啟動過程簡析

      Linux 內(nèi)核啟動就是引導(dǎo)內(nèi)核映像啟動的過程。典型的內(nèi)核映像是zImage,包含自引導(dǎo)程序和壓縮的vmlinux兩部分。

      啟動過程從內(nèi)核映像入口開始執(zhí)行,解壓 vmlinux并轉(zhuǎn)到虛擬地址空間;再調(diào)用統(tǒng)一的內(nèi)核啟動函數(shù) start_kernel(),完成一系列基本初始化;隨后啟動一個叫做 init 的內(nèi)核線程,完成掛載文件系統(tǒng)、初始化設(shè)備驅(qū)動和啟動用戶空間 init 進(jìn)程等工作。

      Linux內(nèi)核的移植過程

      5.3.1 選擇參考板

      內(nèi)核的移植工作主要是修改跟硬件平臺相關(guān)的代碼,一般不涉及 Linux內(nèi)核通用程序。移植的難度也取決于兩種硬件平臺的差異。Linux 對于特定硬件平臺的軟件叫做BSP(Board Support Package).Linux 內(nèi)核已經(jīng)支持了各種體系的多種開發(fā)板,我們很容易從中找到與本課題類似的目標(biāo)板,參考該目標(biāo)板并做一定的修改,即可完成移植工作。選擇參考板的原則如下:

      (1)參考板與開發(fā)板具有相同的處理器,至少類似的處理器;

      (2)參考板與開發(fā)板具有相同的外圍接口電路,至少基本接口相同;

      (3)Linux內(nèi)核已經(jīng)支持參考板,至少有非官方的補丁或者BSP;

      (4)參考板Linux設(shè)備驅(qū)動工作正常,至少已經(jīng)驅(qū)動基本接口。

      根據(jù)以上原則,本課題選擇SMDK2410作為參考板。修改頂層Makefile文件,指定體系結(jié)構(gòu)和編譯器地址:

      ARCH := arm

      CROSS_COMPILE := /usr/local/arm/3.4.1/bin/arm-linux-

      5.3.2 修改 NAND Flash 分區(qū)信息

      本課題中,NAND Flash應(yīng)按照功能分為 4個分區(qū),如圖4-1所示:

      圖5-1 NAND Flash分區(qū)示意圖 Linux 內(nèi)核對于 Flash分區(qū)由 arch/arm/plat-s3c24xx/common-smdk.c 文件中的 mtd_partition smdk_default_nand_part 結(jié)構(gòu)體定義,默認(rèn)已經(jīng)分為了8個區(qū)。按照圖4-1的分區(qū)信息,修改該結(jié)構(gòu)體為:

      static struct mtd_partition smdk_default_nand_part[] = {

      [0] = {

      .name = “U-boot”,.size = 0x00100000,.offset = 0x0,},[1] = {

      .name = “Kernel”,.offset = 0x00100000,.size = 0x00300000,},[2] = {

      .name = “RootFS”,.offset = 0x00400000,.size = 0x02800000,},[3] = {

      .name = “User”,.offset = 0x02d00000,.size = 0x00f00000,},同時還應(yīng)根據(jù)CPU手冊修改NAND Flash的讀寫時序:

      static struct s3c2410_platform_nand smdk_nand_info = {

      .tacls

      = 0,.twrph0

      = 30,.twrph1

      = 0,};5.3.3 關(guān)閉 ECC 校驗

      本設(shè)計中,內(nèi)核都是通過 U-boot 寫到

      Nand Flash 的,U-boot 通過的軟件ECC算法產(chǎn)生ECC校驗碼,這與內(nèi)核校驗的ECC碼不一樣,而內(nèi)核中的 ECC 碼是由

      S3C2410 中

      Nand Flash 控制器產(chǎn)生的。所以,我們在這里選擇禁止內(nèi)核

      ECC 校驗.,具體操作如下: 文件drivers/mtd/nand/s3c2410.c中,找到s3c2410_nand_init_chip()函數(shù),將最后一行的

      chip-->eccmode

      = NAND_ECC_SOFT 改為:

      chip-->eccmode

      = NAND_ECC_NONE

      5.4 CS8900a網(wǎng)卡的移植過程

      本課題中使用的LJD2410開發(fā)板帶有 CS8900A網(wǎng)卡芯片,并提供RJ-45網(wǎng)絡(luò)接口。Linux內(nèi)核中并沒有為 ARM體系配置CS8900A的網(wǎng)卡驅(qū)動,需要自己添加。CS8900A的驅(qū)動文件有兩個:CS8900A.h 和CS8900A.c,這兩個文件可以由網(wǎng)絡(luò)獲得,將其拷貝至 drivers/net/arm 文件夾下,但這樣并不能使驅(qū)動程序正常工作,還應(yīng)對內(nèi)核源文件做些修改。

      5.4.1 修改硬件地址映射

      (1)在/arch/arm/mach-s2410文件夾里建立文件smdk2410.h,添加如下代碼:

      #define pSMDK2410_ETH_IO

      __phys_to_pfn(0x19000000)

      #define vSMDK2410_ETH_IO

      0xE0000000

      #define SMDK2410_EHT_IRQ

      IRQ_EINT9

      這三個宏分別定義了網(wǎng)卡的物理地址、虛擬地址和占用的中斷號。

      (2)修改/arch/arm/mach-s2410/mach-smdk2410.c,添加如下代碼:

      #include

      (3)在 map_desc smdk2410_iodesc[]結(jié)構(gòu)題中添加CS8900A對于的 io 空間映射:

      static struct map_desc smdk2410_iodesc[] __initdata = {

      { vSMDK2410_ETH_IO , pSMDK2410_ETH_IO, SZ_, MT_DEVICE }, };

      5.4.2 添加 CS8900A 內(nèi)核編譯項

      Kconfig 文件是 Linux2.6 內(nèi)核引入的配置文件,是內(nèi)核配置選項的源文件。只有在這個文件里加入相應(yīng)代碼,才能在編譯選項中出現(xiàn)菜單項。

      在/drivers/net/arm/Kconfig中增加CS8900A的編譯項代碼:

      config

      ARM_CS8900

      tristate “CS8900 support”

      depends on NET_ETHERNET && ARM && ARCH_SMDK2410

      help …

      最后應(yīng)在/drivers/net/arm/Makefile 中添加:

      obj-$(CONFIG_ARM_CS8900)

      += cs8900.o

      以上工作完成后,新移植的CS8900A驅(qū)動就可以編譯進(jìn)內(nèi)核里了。

      5.5 Linux 內(nèi)核的剪裁配置

      配置內(nèi)核選項是整個移植過程中很重要的一步,本設(shè)計使用SMDK2410作為參考開發(fā)板,所以可以參考內(nèi)核中 SMDK2410 開發(fā)板的配置文件,通過以下命令將其復(fù)制到內(nèi)核根文件夾下:

      $ cp arch/arm/config/smdk2410_defconfig.config 在此基礎(chǔ)上,根據(jù)本課題的實際需求進(jìn)行配置增減。

      5.5.1 使用配置菜單

      配置內(nèi)核可以選擇不同的配置界面,圖形界面或者光標(biāo)界面。由于光標(biāo)菜單運行時不依賴于X11圖形軟件環(huán)境,可以運行在字符終端上,所以光標(biāo)菜單界面比較通用。圖4-2所示就是執(zhí)行 make menuconfig出現(xiàn)的配置菜單。

      在各級子菜單中,選擇相應(yīng)的配置時,有 3種選擇,它們代表的含義分別如下:

      Y—將該功能編譯進(jìn)內(nèi)核。

      N—不將該功能編譯進(jìn)內(nèi)核。

      M—將該功能編譯成可以在需要時動態(tài)插入到內(nèi)核中的模塊。

      圖5-2 內(nèi)核配置主菜單 內(nèi)核配置原則是:將與內(nèi)核其他部分關(guān)系較遠(yuǎn)且不經(jīng)常且不經(jīng)常使用的部分功能代碼編譯成可加載模塊,有利于減少內(nèi)核長度,減小內(nèi)核消耗的內(nèi)存,簡化該功能相應(yīng)的環(huán)境改變時對內(nèi)核的影響;不需要的功能就不選;與內(nèi)核關(guān)系緊密而且經(jīng)常使用的部分功能代碼直接編譯到內(nèi)核中。

      5.5.2 基本配置選項

      Linux內(nèi)核的各個版本配置餐單各不相同,下面以本課題使用的2.6.24.4版為例,結(jié)合本課題的實際需求,簡介下內(nèi)核的基本配置選項。

      (1)General setup:包含通用的一些配置選項,保持默認(rèn)即可。

      (2)Enable loadable module supple:包含支持動態(tài)模塊的配置選項,保持默認(rèn)。

      (3)System Type:包含系統(tǒng)平臺列表及其相關(guān)的配置,去掉SMDK2410以外所有開發(fā)板的支持、開啟s3c2410 DMA支持。

      (4)Bus support:包含各種總線配置選項,全部去掉。

      (5)Kernel Features:包含內(nèi)核特性相關(guān)選項,保持默認(rèn)。

      (6)Boot options:包含內(nèi)核啟動相關(guān)選項,其中內(nèi)核啟動參數(shù)設(shè)置為:

      “noinitrd console=ttySAC0,115200 root=/dev/nfs init=linuxrc nfsroot=192.168.0.2:/home/arm/FS/myrootfs mem=64M

      ip=192.168.0.10:192.168.0.2:192.168.0.1:255.255.255.0:LJD2410:eth0:off”,支持NFS文件系統(tǒng)。

      (7)Floating point emulation:包含浮點數(shù)運算仿真功能,需要開啟“NWFPE”選項。

      (8)Userapace binary formats:包含支持的應(yīng)用程序格式,僅保留“ELF”格式支持,去掉其它。

      (9)Power management options:包含電源管理功能,保持默認(rèn)。

      (10)Networking:包含網(wǎng)絡(luò)功能:需要開啟基本功能選項。

      (11)Device Drivers:包含設(shè)備驅(qū)動選項,下一小節(jié)將詳細(xì)介紹。

      (12)File systems:包含各種文件系統(tǒng)的支持選項,去掉“EX2”等選項,僅保留 ROM 文件系統(tǒng)支持,在“Miscellaneous filesystems”子菜單中近保留“cramfs”文件系統(tǒng)支持,并且開啟NFS文件系統(tǒng)支持,去掉其它選項。

      (13)Kernel hacking:包含各種內(nèi)核調(diào)試選項,保持默認(rèn)。

      (14)Security options:包含安全性有關(guān)選項,保持默認(rèn)。

      (15)Cryptographic API:包含加密算法,保持默認(rèn)。

      (16)Library routines:包含幾種壓縮和校驗函數(shù),保持默認(rèn)。5.5.3 驅(qū)動程序配置選項

      幾乎所有Linux的設(shè)備驅(qū)動都在“Device Drivers”菜單下,它對設(shè)備驅(qū)動程序加以歸類,放在子菜單下。本課題對于設(shè)備驅(qū)動的裁剪較多,具體如下:

      (1)MTD support:MTD設(shè)備驅(qū)動,應(yīng)添選NAND Flash驅(qū)動支持。

      (2)Network debice support:網(wǎng)絡(luò)設(shè)備支持,在子菜單“Ethernet(10 or 100Mbits)”中可以看到CS8900A網(wǎng)卡的配置項,這正是4.4節(jié)工作的結(jié)果。

      (3)Real Time Clock:時鐘驅(qū)動選項,應(yīng)選上“Samsung S3C series SoC RTC”,這樣系統(tǒng)時鐘才能正常運行。

      (4)由于嵌入式導(dǎo)航計算機(jī)只使用串口作為輸入輸出接口,所以應(yīng)該剪裁掉那些無用的驅(qū)動,包括:并口、ATA及SATA驅(qū)動、RAID驅(qū)動、ISDN支持、輸入設(shè)備驅(qū)動、多媒體設(shè)備支持、USB 支持以及MMC/SD卡支持。(5)其它驅(qū)動支持保持默認(rèn)即可。

      5.5.4 保存配置文件

      內(nèi)核配置主菜單中選擇“Save an Alternate Configuration File”即可將目前的配置狀態(tài)保存成文件。程序默認(rèn)保存為“.config”,此文件位于內(nèi)核根目錄內(nèi),可以直接修改。

      5.5.5 編譯 Linux 內(nèi)核

      正式編譯Linux內(nèi)核之前,應(yīng)當(dāng)清理一下內(nèi)核樹,命令如下:

      $ make mrproper

      此命令會清除掉.config 文件,所以應(yīng)當(dāng)在配置內(nèi)核之前做。

      Linux 2.6 版本的編譯已經(jīng)簡化,使用一個 make 命令就可以完成諸如建 立文件依賴、生成zImage、編譯模塊、安裝模塊等一系列功能。內(nèi)核編譯完 成后,將在/arch/arm/boot 目錄中生成 image 和 zIamge 兩個內(nèi)核映像文件,其中 image 為正常大小的映像文件,而 zImage 為壓縮后的映像文件。此時 編譯好的可加載模塊也被安裝到預(yù)定位置,默認(rèn)為/lib/modules。5.6 內(nèi)核的下載及啟動

      5.6.1 將引導(dǎo)信息加入內(nèi)核映像

      U-boot 引導(dǎo)內(nèi)核時需要檢查一個 64byte 的頭信息,其中包含了入口地址、映像類型等基本信息。這個引導(dǎo)頭可以用 U-boot 附帶的 mkimage 工具生成,命令如下:

      $ mkimage-n 'linux-2.6.24'-A arm-O linux-T kernel-C none-a 0x30008000-e 0x30008040-d zImage zImage.img 各個參數(shù)的含義:

      -n:設(shè)置映像名

      -A:設(shè)置體系信息

      -O:設(shè)置操作系統(tǒng)信息

      -T:設(shè)置映像類型

      -c:壓縮類型

      -a:讀入地址

      -e:入口地址

      -d:源映像文件

      該命令生成的zImage.img文件就可以下載到開發(fā)板運行了。

      5.6.2 內(nèi)核映像的下載及運行

      將上一小節(jié)中生成的zImage.img文件拷貝到主機(jī)tftpboot 文件夾內(nèi)。啟動開發(fā)板,進(jìn)入U-boot 提示符。使用tftp命令將內(nèi)核映像下載到開發(fā)板內(nèi)存中:

      LJD2410> tftp 0x30008000 zImage.img

      TFTP from server 192.168.0.2;our IP is 192.168.0.10

      Filename ‘zImage.img’

      Load address : 0x30008000

      Loading:

      ####

      Done

      其中 0x30008000 為指定的下載到內(nèi)存的地址,zImge.img 就是帶有引導(dǎo)頭的內(nèi)核映像。當(dāng)內(nèi)核下載完成后,可以通過bootm命令啟動內(nèi)核:

      LJD2410> bootm 0x30008000 6 建立根文件系統(tǒng)

      6.1 根文件系統(tǒng)概述

      6.1.1 根文件系統(tǒng)簡介

      對于嵌入式操作系統(tǒng)而言,僅包含內(nèi)核是不夠的,還必須有文件系統(tǒng)的支持。跟文件系統(tǒng)(root filesystem)是 Linux系統(tǒng)的核心部分,包含系統(tǒng)使用的軟件和庫,以及無偶有用來為用戶提供支持架構(gòu)和用戶使用的應(yīng)用軟件,并作為存儲數(shù)據(jù)讀寫結(jié)果的區(qū)域。在Linux系統(tǒng)啟動時,首先完成內(nèi)核安裝及環(huán)境初始化,最后會尋找一個文件系統(tǒng)作為根文件系統(tǒng)被加載。Linux系統(tǒng)中使用“/”來唯一表示根文件系統(tǒng)的安裝路徑。嵌入式系統(tǒng)中通常可以選擇的根文件系統(tǒng)有:Romfs, CRAMFS, RAMFS,JFFS2, EXT2等,甚至還可以使用NFS(網(wǎng)絡(luò)文件系統(tǒng))作為根文件系統(tǒng)。

      6.1.2 NFS 文件系統(tǒng)與Cramfs文件系統(tǒng)

      NFS(Network File System)是由SUN公司發(fā)展,并于1984年推出的一種文件系統(tǒng)。它可以讓開發(fā)者通過網(wǎng)絡(luò)連接,使開發(fā)板可以直接掛載主機(jī)的某一個指定文件夾作為根文件系統(tǒng)。在嵌入式開發(fā)過程中,通常使用這種文件系統(tǒng)搭建交叉編譯環(huán)境。

      cramfs(Compressed ROM File System)是Linux創(chuàng)始人Linus Torvalds開發(fā)的一個適用于嵌入式系統(tǒng)的文件系統(tǒng)。cramfs是一個只讀文件系統(tǒng),采用了zlib壓縮,壓縮比一般可以達(dá)到1:2,但仍可以做到高效的隨機(jī)讀取。Linux系統(tǒng)中,通常把不需要經(jīng)常修改的目錄壓縮存放,并在系統(tǒng)引導(dǎo)的時候再將壓縮文件解開。因為 cramfs 不會影響系統(tǒng)讀取文件的速度,而且是一個高度壓縮的文件系統(tǒng),因此本課題最終選用cramfs作為根文件系統(tǒng)部署到開發(fā)板。

      6.2 建立Linux根文件系統(tǒng)目錄

      嵌入式Linux根文件系統(tǒng)必須包含一些必須的目錄,比如設(shè)備目錄/dev、命令目錄/bin、庫目錄/lib等等。

      本課題構(gòu)建根文件系統(tǒng)的工作目錄是 myrootfs,通過下列命令可以在myrootfs中創(chuàng)建所需的子目錄:

      $ mkdir bin dev etc lib proc sbin sys usr $ mkdir usr/bin usr/lib usr/sbin lib/modules $ mkdir mnt tmp var $ chmod 1777 tmp $ mkdir var/lib var/lock var/log var/run var/tmp $ chmod 1777 var/tmp $ mkdir home root boot 這樣,一個基本的根文件系統(tǒng)就建立起來了,但是各個目錄都是空的,缺少各種程序和命令工具,需要進(jìn)一步完善。心得體會

      本課題的目標(biāo)是為基于ARM9處理器的導(dǎo)航計算機(jī)移植Linux操作系統(tǒng)。研究過程中,使用了 LJD2410 型開發(fā)板,此開發(fā)板的處理器是基于 ARM920T的 Samsung S3c2410,能夠滿足嵌入式導(dǎo)航計算機(jī)的硬件需求。本課題所做的工作簡要總結(jié)如下:

      首先,本文對嵌入式系統(tǒng)、嵌入式Linux操作系統(tǒng)和ARM體系處理器做了簡單介紹,并且分析了嵌入式導(dǎo)航計算機(jī)的操作系統(tǒng)需求。

      其次,介紹了交叉開發(fā)環(huán)境的建立。本課題兩臺主機(jī)連接開發(fā)板的方法,主機(jī)分別安裝不同的操作系統(tǒng),在開發(fā)過程中完成不同的工作。通過 TFTP和NFS等網(wǎng)絡(luò)服務(wù),實現(xiàn)高效連接,有利于提高開發(fā)效率。這部分是整個課題的基礎(chǔ),之后的所有工作都是在這個基礎(chǔ)上完成的。

      第三,本文重點介紹了 Linux 系統(tǒng)的移植過程。Linux 系統(tǒng)移植包括三個方面:啟動加載程序(Bootloader)的移植,Linux 內(nèi)核的移植和根文件系統(tǒng)的建立。本課題選用功能強(qiáng)大的 U-boot 作為啟動加載程序,通過對其源代碼進(jìn)行修改,使其可以正常運行于開發(fā)板,并且實現(xiàn)下載、燒寫等功能。內(nèi)核則采用了2008年 4月發(fā)布的2.6.24.4版本,移植了網(wǎng)卡驅(qū)動,并針對課題需求,進(jìn)行了修改和裁剪,使得內(nèi)核加載更快,運行更穩(wěn)定。根文件系統(tǒng)選用了Cramfs文件系統(tǒng),這種文件系統(tǒng)采用壓縮格式,存儲空間需求小,但是不影響讀取速度,非常適合與嵌入式Linux系統(tǒng)。這三個方面的工作有前后繼承關(guān)系,但是又有一定獨立性,移植過程中應(yīng)多調(diào)試,多實驗。

      最后,簡單介紹了系統(tǒng)部署的方法。將Linux 內(nèi)核和根文件系統(tǒng)部署到開發(fā)板后,開發(fā)板就可以脫離交叉開發(fā)環(huán)境而獨立運行,最終達(dá)到設(shè)計需求。

      本課題充分利用前人積累的經(jīng)驗,結(jié)合最新的軟件版本進(jìn)行移植工作。在移植過程中遇到了許多困難和問題,主要靠查閱文獻(xiàn)和自己的試探性試驗來研究問題,通過多次的實踐,最終得到明確的解決方法。雖然移植后的Linux系統(tǒng)可以正常運行在開發(fā)板上,能滿足設(shè)計需求。但由于時間倉促,許多問題沒有深入研究,難免會出現(xiàn)一定的疏漏和瑕疵,需要我在今后的學(xué)習(xí)中不斷努力,加以改進(jìn)。

      第三篇:嵌入式系統(tǒng)應(yīng)用與學(xué)習(xí)心得體會

      μC/OS嵌入式實時操作系統(tǒng)的應(yīng)用和學(xué)習(xí)心得

      μC/OS-II 是一種基于優(yōu)先級的搶占式多任務(wù)實時操作系統(tǒng),包含了實時內(nèi)核、任務(wù)管理、時間管理、任務(wù)間通信同步(信號量,郵箱,消息 隊列)和內(nèi)存管理等功能。它可以使各個任務(wù)獨立工作,互不干涉,很容易實現(xiàn)準(zhǔn)時而且無誤執(zhí)行,使實時應(yīng)用程序的設(shè)計和擴(kuò)展變得容易,使應(yīng)用程序的設(shè)計過程大為減化。它是一個完整的、可移植、可固化、可裁剪的搶占式實時多任務(wù)內(nèi)核。μC/OS-II絕大部分的代碼是用ANSII的C語言編寫的,包含一小部分匯編代碼,使之可供不同架構(gòu)的微處理器使用。至今,從8位到64位,μC/OS-II已在超過40種不同架構(gòu)上的微處理器上運行。μC/OS-II已經(jīng)在世界范圍內(nèi)得到廣泛應(yīng)用,包括很多領(lǐng)域,如手機(jī)、路由器、集線器、不間斷電源、飛行器、醫(yī)療設(shè)備及工業(yè)控制上。實際上,μC/OS-II已經(jīng)通過了非常嚴(yán)格的測試,并且得到了美國航空管 理局的認(rèn)證,可以用在飛行器上。這說明μC/OS-II是穩(wěn)定可靠的,可用于與人性命攸關(guān)的安全緊要系統(tǒng)。除此以外,μC/OS-II 的鮮明特點就是源碼公開,便于移植和維護(hù)。

      我們在學(xué)習(xí)μC/OS嵌入式實時操作系統(tǒng)時用的教科書是任哲編著的 《嵌入式實時操作系統(tǒng)μC/OS-Ⅱ原理及應(yīng)用》,這本書介紹了嵌入式實時操作系統(tǒng)μC/OS-Ⅱ內(nèi)核的任務(wù)管理和調(diào)度、系統(tǒng)時鐘和節(jié)拍服務(wù)、時間管理、中斷、任務(wù)的通信和同步、內(nèi)存的簡單管理原理,同時給出了實例。最后,還介紹了μC/OS-Ⅱ的移植方法。

      在多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個任務(wù),或者說為每個任務(wù)分配CPU時間,并且負(fù)責(zé)任務(wù)之間的通訊。內(nèi)核提供的基本服務(wù)是任務(wù)切換。之所以使用實時內(nèi)核可以大大簡化應(yīng)用系統(tǒng)的設(shè)計,是因為實時內(nèi)核允許將應(yīng)用分成若干個任務(wù),由實時內(nèi)核來管理它們。內(nèi)核本身也增加了應(yīng)用程序的額外負(fù)荷,代碼空間增加ROM的用量,內(nèi)核本身的數(shù)據(jù)結(jié)構(gòu)增加了RAM的用量。但更主要的是,每個任務(wù)要有自己的??臻g,這一塊吃起內(nèi)存來是相當(dāng)厲害的。內(nèi)核本身對CPU的占用時間一般在2到5個百分點之間。μC/OS-Ⅱ有一個精巧的內(nèi)核調(diào)度算法,實時內(nèi)核精小,執(zhí)行效率高,算法巧妙,代碼空間很少,具有如下特點:只支持基于優(yōu)先級的搶占式調(diào)度算法,不支持時間片輪循;64個優(yōu)先級,只能創(chuàng)建64個任務(wù),用戶只能創(chuàng)建56個任務(wù);每個任務(wù)優(yōu)先級都不相同;不支持優(yōu)先級逆轉(zhuǎn);READY隊列通過內(nèi)存映射表實現(xiàn)快速查詢;效率非常高;支持時鐘節(jié)拍;支持信號量,消息隊列,事件控制塊,事件標(biāo)志組,消息郵箱任務(wù)通訊機(jī)制;支持中斷嵌套,中斷嵌套層數(shù)可達(dá)255層,中斷使用當(dāng)前任務(wù)的堆棧保存上下文;每個任務(wù)有自己的堆棧,堆棧大小用戶自己設(shè)定;支持動態(tài)修改任務(wù)優(yōu)先級;任務(wù)TCB為靜態(tài)數(shù)組,建立任務(wù)只是從中獲得一個TCB,不用動態(tài)分配,釋放內(nèi)存;任務(wù)堆棧為用戶靜態(tài)或者動態(tài)創(chuàng)建,在任務(wù)創(chuàng)建外完成,任務(wù)創(chuàng)建本身不進(jìn)行動態(tài)內(nèi)存分配;任務(wù)的總個數(shù)(OS_MAX_TASKS)由用戶決定;0優(yōu)先級最高,63優(yōu)先級最低;有一個優(yōu)先級最低的空閑任務(wù),在沒有用戶任務(wù)運行的時候運行。

      任務(wù)的調(diào)度核心主要是在任務(wù)就緒表中查找具有最高優(yōu)先級別的就緒任務(wù)及實現(xiàn)任務(wù)切換,即將找到的的最高優(yōu)先級別的任務(wù)的“任務(wù)號”---> “當(dāng)前任務(wù)的任務(wù)號OSPrioCur”;從OSTCBPrioTbl[]取出最高優(yōu)先級別任務(wù)的任務(wù)控制塊首地址---> “當(dāng)前任務(wù)的任務(wù)控制塊指針OSTCBCur”,最后調(diào)用OS_TASK_SW()完成現(xiàn)場切換(即將CPU的寄存器信息保存到當(dāng)前正運行任務(wù)的私棧中,然后從待運行的高優(yōu)先級別的任務(wù)私棧中彈出原先保存寄存器信息到CPU)。

      時鐘節(jié)拍服務(wù)放到一個時鐘節(jié)拍任務(wù)中完成,通過采用啥希散列表機(jī)制來管理延時任務(wù),每次時鐘節(jié)拍服務(wù)只需要處理極少數(shù)的延時任務(wù),從而大大減少了時鐘節(jié)拍服務(wù)花費的時間,提高了系統(tǒng)的實時性。

      另外,在μC/OS系列RTOS中,時鐘節(jié)拍服務(wù)除了會跟蹤延時的任務(wù),還會跟蹤那些指定了超時時限的等待任務(wù)。也就是說,當(dāng)指定的超時時限結(jié)束時,即使任務(wù)等待的事件沒有發(fā)生,時鐘節(jié)拍服務(wù)也會使該任務(wù)恢復(fù)運行。

      uC/OS-II的時間管理是通過定時中斷來實現(xiàn)的,該定時中斷一般為10毫秒或100毫秒發(fā)生一次,時間頻率取決于用戶對硬件系統(tǒng)的定時器編程來實現(xiàn)。中斷發(fā)生的時間間隔是固定不變的,該中斷也成為一個時鐘節(jié)拍。

      uC/OS-II要求用戶在定時中斷的服務(wù)程序中,調(diào)用系統(tǒng)提供的與時鐘節(jié)拍相關(guān)的系統(tǒng)函數(shù),例如中斷級的任務(wù)切換函數(shù),系統(tǒng)時間函數(shù)。

      uC/OS-II 中最多可以支持64 個任務(wù),分別對應(yīng)優(yōu)先級0~63,其中0 為最高優(yōu)先級。63為最低級,系統(tǒng)保留了4個最高優(yōu)先級的任務(wù)和4個最低優(yōu)先級的任務(wù),所有用戶可以使用的任務(wù)數(shù)有56個。還提供了任務(wù)管理的各種函數(shù)調(diào)用,包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先級,任務(wù)掛起和恢復(fù)等。

      系統(tǒng)初始化時會自動產(chǎn)生兩個任務(wù):一個是空閑任務(wù),它的優(yōu)先級最低,該任務(wù)僅給一個整形變量做累加運算;另一個是系統(tǒng)任務(wù),它的優(yōu)先級為次低,該任務(wù)負(fù)責(zé)統(tǒng)計當(dāng)前cpu的利用率。

      想使用在MCU上使用μC/OS-II則必須滿足以下幾個條件:①處理器C 編譯器支持可重入代碼的生成;②用C 語言可以打開和關(guān)閉中斷;③ 處理器支持中斷,并能產(chǎn)生定時中斷(中斷頻率通常設(shè)置在10~100 Hz 之間);④ 處理器支持足夠的RAM 空間,以滿足多任務(wù)環(huán)境下設(shè)置任務(wù)堆棧的要求;⑤處理器有相應(yīng)的指令,能將堆棧指針和其它CPU 寄存器讀出和存儲到堆棧或內(nèi)存中。μC/OS-II代碼中大部分是用C語言寫的,但涉及到數(shù)據(jù)類型的重定義、堆棧結(jié)構(gòu)的設(shè)計、任務(wù)切換時狀態(tài)的保存和恢復(fù)等問題的大部分代碼由于與處理器有關(guān),是用匯編語言實現(xiàn)的。移植所要做的工作,就是在不同的處理器上用匯編語言來改寫與處理器有關(guān)的代碼及其他與處理器特性相關(guān)的部分。

      在μC/OS-II移植過程中涉及以上問題的代碼都包含在文件OS_CPU.H、OS_CPU_C.C、OS_CPU_A.ASM中。因此移植的主要工作也在源代碼的基礎(chǔ)上圍繞著這三個文件的改寫展開。

      總之,學(xué)習(xí)μC/OS嵌入式實時操作系統(tǒng)首先得先了解整個系統(tǒng)的結(jié)構(gòu),工作時的流程,比如任務(wù)1運行時如果有外部中斷會發(fā)生什么(調(diào)用中斷服務(wù)程序,把相應(yīng)的任務(wù)加如就緒列,內(nèi)核進(jìn)行調(diào)度,就緒隊列中的最高優(yōu)先級的任務(wù)...)等,再對代碼進(jìn)行具體的研究會比較容易。

      我們需熟知μC/OS嵌入式實時操作系統(tǒng)中的函數(shù)及其應(yīng)用,例如引起任務(wù)調(diào)度的系統(tǒng)函數(shù)有OSStart()uCOS/II啟動 ;OSTaskSuspend()掛起任務(wù) ;OSTaskResume()恢復(fù)任務(wù) ;OSTimeDly()/OSTimeDlyHMSM()等待一個事件的發(fā)生等。只有在熟識系統(tǒng)運行的方式及可以引發(fā)其運行的函數(shù)的情況下我們才能較好的去運用它,用它來實現(xiàn)移植,從而達(dá)到我們的目的。

      學(xué)習(xí)實時操作系統(tǒng),任哲編著的 《嵌入式實時操作系統(tǒng)μC/OS-Ⅱ原理及應(yīng)用》這本書相對來說比較適合初學(xué)者,它篇幅適中,通俗易懂,若能結(jié)合北京航空航天大學(xué)《ucosii操作系統(tǒng)講義》就更加好了。

      正所謂讀書百遍,其義自現(xiàn),通過對《北航》和《任哲》的資料不斷反復(fù)地學(xué)習(xí)和閱讀,我心中總算有些眉目了,我是先用別人的程序進(jìn)行移植調(diào)試后才加入自己的代碼,雖然開始都是實驗---下載--失敗,但隨著我的不斷努力,最終也是能夠成功的,所以說學(xué)習(xí)這種技術(shù),需要的是耐心,因為它需要我們一步一步慢慢加深理解,調(diào)試程序,有時一個符號打錯了都會造成實驗的失敗,我們就要耐心仔細(xì)的在代碼的海洋里尋找著這一根小針并把它去除改正。

      第四篇:《嵌入式系統(tǒng)原理及應(yīng)用》結(jié)課論文格式模版

      《嵌入式系統(tǒng)原理及應(yīng)用》

      結(jié)課論文

      題目:此處寫論文題目

      學(xué)姓專班成

      號 名 業(yè) 級 績

      此處填寫學(xué)號 此處填寫姓名 機(jī)械電子工程 格式如:1班

      北京理工大學(xué)珠海學(xué)院機(jī)械與車輛學(xué)院

      201X年 XX 月 XX 日

      論文題目(如:基層電大法學(xué)本科畢業(yè)論文寫作問題研究)

      摘 要:摘要是對你寫的全文內(nèi)容的高度概括,而不是簡單的前言,100-300字即可。關(guān)鍵詞:關(guān)鍵詞是你全文中出現(xiàn)頻率最高的3-5個詞語,如本例文中關(guān)鍵詞為基層電大;法學(xué)本科;畢業(yè)論文;問題研究

      撰寫畢業(yè)論文是開放教育法學(xué)本科實施專業(yè)教學(xué)計劃、實現(xiàn)培養(yǎng)目標(biāo)必不可少的環(huán)節(jié)。遠(yuǎn)程開放教育在畢業(yè)論文這一集中實踐環(huán)節(jié)上進(jìn)行了多年的探索并取得了不少成功經(jīng)驗,但毋庸諱言,同時也存在亟待解決的問題。筆者作為多年在基層電大從事法學(xué)專業(yè)教學(xué)和畢業(yè)論文指導(dǎo)的專職教師,對法學(xué)本科學(xué)生在畢業(yè)論文寫作中存在的若干問題進(jìn)行了初步的分析和探討。

      一、基層電大法學(xué)本科畢業(yè)論文寫作存在的問題

      (一)選題問題

      選題問題萬丈高樓平地起,完成畢業(yè)論文的第一步是確定研究論題,選題得當(dāng)與否直接影響論文的質(zhì)量,關(guān)系論文的成敗。法學(xué)本科學(xué)生在選題時存在的常見問題如下:

      1.選題偏大,如“論依法治國”,“論民法的基本原則”,“談司法腐敗”,這些選題偏大,涉及范圍過寬,又由于論文篇幅和字?jǐn)?shù)所限,對于學(xué)生而言很難把握,在內(nèi)容上面面俱到必然導(dǎo)致論述不夠透徹深入。

      2.題目陳舊,如“論正當(dāng)防衛(wèi)的條件”,“淺析青少年犯罪的原因”,選題陳舊則會老生常談,人云亦云,照搬別人的資料和結(jié)論,缺乏個人的創(chuàng)新觀點。

      3.選題過于集中,視野不夠開闊。一是選題時題目扎堆,以我校2004年秋法本為例,在78名學(xué)生中有5人寫家庭暴力問題研究,4人寫計算機(jī)犯罪,3人寫刑事被害人保護(hù)問題,這些選題扎堆的論文大同小異,結(jié)構(gòu)相似,內(nèi)容相仿,缺乏創(chuàng)新。二是選題集中于民法、刑法及訴訟法等課程,而憲法學(xué)、法理學(xué)、行政法學(xué)等學(xué)科以及涉外的學(xué)科如國際私法、國際公法等的研究比較缺乏。

      (二)論文本身問題

      1.文體問題。少數(shù)學(xué)生上交的初稿根本不是學(xué)術(shù)論文,或是工作總結(jié),或是學(xué)習(xí)體會,或是案例分析。

      2.論文本身質(zhì)量不高,寫作水平低,學(xué)術(shù)性欠缺。有的詞句表達(dá)不清,邏輯思維混亂;有的文章從理論到理論,很少聯(lián)系到學(xué)生自身的實際生活和實際工作,更沒有作者自己的思索和見解;還有的羅列了大量的事例,沒有提升到理論的高度。

      3.論文格式不規(guī)范。文章層次不清,緒論、本論、結(jié)論標(biāo)示不明顯,小標(biāo)題混

      三、對策及建議

      1.明確法學(xué)本科畢業(yè)論文的學(xué)術(shù)定位我們不能用普通高校法學(xué)本科學(xué)生畢業(yè)論文的標(biāo)準(zhǔn)來衡量開放教育學(xué)生畢業(yè)論文的水平,針對開放教育學(xué)生的理論基礎(chǔ)知識薄弱而實踐經(jīng)驗相對豐富的特點,在論文理論性方面的要求可以適當(dāng)降低,論文的寫作著重在于培養(yǎng)一種法律思維能力,重在理論與實踐的有機(jī)結(jié)合。所以,根據(jù)開放教育法學(xué)本科學(xué)生的工作性質(zhì)和生活閱歷,引導(dǎo)其選擇能將工作經(jīng)驗、生活積累都運用起來的題目,以充分發(fā)揮社會經(jīng)驗豐富,動手能力強(qiáng)的優(yōu)勢,而避免了理論基礎(chǔ)相對較薄弱的劣勢,從而揚長避短,寫出具備電大畢業(yè)論文特色(平易性、實踐性)的高質(zhì)量論文。筆者認(rèn)為這種鼓勵務(wù)實的做法更符合成人教育的培養(yǎng)目標(biāo)。

      2.畢業(yè)論文教學(xué)應(yīng)該貫穿于教學(xué)的各個環(huán)節(jié)按照教學(xué)計劃的安排,畢業(yè)論文安排在最后一個學(xué)期完成,而開放教育的學(xué)生都是業(yè)余學(xué)習(xí),用來寫論文的時間少之又少。從選題到寫作的全部過程都在這么短暫的時間內(nèi)完成,要保證質(zhì)量是很難的。筆者認(rèn)為畢業(yè)論文的教學(xué)不應(yīng)只是集中在對學(xué)生寫作過程的指導(dǎo)上,而應(yīng)貫穿于從入學(xué)教育開始的各個教學(xué)環(huán)節(jié)中;從平時的積累和準(zhǔn)備入手,從根本上提高畢業(yè)論文的質(zhì)量,才能真正把這一教學(xué)環(huán)節(jié)落到實處。(1)入學(xué)教育的心理準(zhǔn)備。在開學(xué)初第一學(xué)期開學(xué)典禮入學(xué)教育時,專業(yè)責(zé)任教師要把畢業(yè)論文寫作的任務(wù)介紹給學(xué)生,使學(xué)生提早了解畢業(yè)論文寫作的重要性和意義,引起學(xué)生思想上高度重視,從而在今后的學(xué)習(xí)中會關(guān)注并搜集與論文寫作有關(guān)的資料信息,甚至?xí)鲃拥剡M(jìn)行思考和研究。(2)專業(yè)課程學(xué)習(xí)中進(jìn)行理論準(zhǔn)備和材料準(zhǔn)備。論文的寫作實際上是一個消化知識、整合知識、訓(xùn)練思維的過程,是一個富于進(jìn)取性的主動學(xué)習(xí)的過程。

      3.加強(qiáng)指導(dǎo)教師的管理和監(jiān)督一是嚴(yán)格按中央電大的有關(guān)標(biāo)準(zhǔn)聘請熟練掌握本學(xué)科理論知識并具有較強(qiáng)的責(zé)任心,能夠在實踐教學(xué)中指導(dǎo)到位的稱職的教師;二是重視對指導(dǎo)教師的培訓(xùn),經(jīng)培訓(xùn)合格的,發(fā)給指導(dǎo)教師資格證,持證上崗;三是加強(qiáng)對指導(dǎo)教師的監(jiān)督,指導(dǎo)教師要從選題開始,對論文的選題、寫作提綱、初稿和二稿,實行嚴(yán)格的審查和認(rèn)真地指導(dǎo),并有每一次指導(dǎo)過程的記錄,對終審發(fā)現(xiàn)論文質(zhì)量不高、抄襲、指導(dǎo)缺位的給予經(jīng)濟(jì)制裁和取消指導(dǎo)教師資格的處分,督促指導(dǎo)教師切實負(fù)起論文指導(dǎo)的責(zé)任。

      四、結(jié)束語

      畢業(yè)論文作為檢查學(xué)生運用理論解決實際問題能力,檢查學(xué)生綜合水平措施的功能是眾所周知的,但筆者認(rèn)為畢業(yè)論文的寫作更是一個過程、一種訓(xùn)練,是培養(yǎng)學(xué)生閱讀能力、分析能力、寫作能力、創(chuàng)新能力的過程,是對學(xué)生掌握法學(xué)基礎(chǔ)理論、專業(yè)技術(shù)知識的功底,分析問題的能力及書面語言的表達(dá)水平的一種綜

      合訓(xùn)練。因此,應(yīng)該把畢業(yè)論文這一實踐性教學(xué)環(huán)節(jié)當(dāng)成一門課,當(dāng)成整個教學(xué)過程中的一個組成部分,看成培養(yǎng)學(xué)生綜合能力的過程。在這一思想的指導(dǎo)下,我們有必要進(jìn)行畢業(yè)論文教學(xué)模式及其運行機(jī)制的探索和研究,盡快地建立完善的教學(xué)操作規(guī)程,這是當(dāng)前開放教育畢業(yè)論文教學(xué)改革面臨的一項重要任務(wù)。

      參考文獻(xiàn)

      [1]謝虹光.畢業(yè)論文學(xué)術(shù)定位初探[J].山西廣播電視大學(xué)學(xué)報,2004,(4).[2]張鎖通.工商管理本科論文指導(dǎo)和答辯問題探討[J].河北廣播電視大學(xué)學(xué)報,2006,(3).[3]黃芬香.開放教育文科類畢業(yè)論文評價模式的構(gòu)建[J].中國遠(yuǎn)程教育,2006,(4).[4]鄭春玲.對開放教育畢業(yè)論文的反思[J].湖北廣播電視大學(xué)學(xué)報,2006,(5).[5]黃河.教育學(xué)[M].北京:高等教育出版社,2008,(5),59-80.注意:(上述模版中黑色字體部分不要改動,直接把藍(lán)色字體部分按照自己的論文題目、提綱及內(nèi)容進(jìn)行改寫即可,要求正文字?jǐn)?shù)2500-4000字。文中適當(dāng)插入圖、表,但不得占據(jù)過大篇幅,必須統(tǒng)一編號、排版。本模板所指定的字體、字號以及所有排版格式請不要擅自調(diào)整)(參考文獻(xiàn)至少5個)

      第五篇:嵌入式系統(tǒng)及應(yīng)用結(jié)課論文要求

      結(jié)課論文要求

      1、內(nèi)容要求:結(jié)合課程內(nèi)容,結(jié)合本專業(yè)及其研究方向,自選專題闡述嵌入式系統(tǒng)應(yīng)用技術(shù),主要包括所選專題概述、基于STM32處理器的硬件系統(tǒng)(框圖)和基于嵌入式操作系統(tǒng)(μC/OS-Ⅱ或嵌入式Linux)的軟件系統(tǒng)(組成結(jié)構(gòu))介紹以及開發(fā)環(huán)境和實驗結(jié)果說明等內(nèi)容。

      2、論文格式要求:按照公開發(fā)表論文的格式,參考學(xué)校學(xué)報的要求。

      3、論文字?jǐn)?shù)(含摘要、圖、表):3500-4500

      論文參考格式

      《嵌入式系統(tǒng)及應(yīng)用》結(jié)課論文(首頁左上角)

      中文標(biāo)題

      作者

      (天津職業(yè)技術(shù)師范大學(xué)自動化與電氣工程學(xué)院天津300222)

      摘要:

      關(guān)鍵詞:

      Titel

      Author

      (Sch of Automation and Elec, Tianjin University of Technology and Education, Tianjin 300222, China)

      Abstract:

      Keywords:

      1.前言

      (以下為正文,可根據(jù)內(nèi)容自由設(shè)置二級標(biāo)題X.X和三級標(biāo)題X.X.X)

      2.3.4.……

      X.結(jié)束語

      參考文獻(xiàn)(著錄格式見學(xué)報封三)

      [1]

      [2]

      ……

      下載嵌入式系統(tǒng)的主要應(yīng)用(精選5篇)word格式文檔
      下載嵌入式系統(tǒng)的主要應(yīng)用(精選5篇).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        嵌入式系統(tǒng)設(shè)計與應(yīng)用[共5篇]

        第一章: 嵌入式系統(tǒng)定義:以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能,可靠性,成本,體積,功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng)。(一切非PC計算機(jī)系統(tǒng)) 嵌入式系統(tǒng)特點:“......

        基于AVR單片機(jī)的嵌入式系統(tǒng)的應(yīng)用分析

        關(guān)鍵字:AVR單片機(jī) 嵌入式系統(tǒng)引言 隨著技術(shù)的發(fā)展,嵌入式系統(tǒng)的設(shè)計及應(yīng)用對人們的生活產(chǎn)生了很大的影響,并將逐漸改變?nèi)藗兾磥淼纳罘绞?,在特定的操作系統(tǒng)上開發(fā)應(yīng)用程序,可以......

        嵌入式系統(tǒng)實驗報告

        嵌入式系統(tǒng)實驗報告 學(xué)號: 姓 名: 班 級:13電子信息工程指導(dǎo)老師: 蘇州大學(xué) 電子信息學(xué)院 2016年12月 實驗一:一個燈的閃爍 1、實驗要求 實現(xiàn)PF6-10端口所連接的任意一個LED燈......

        嵌入式系統(tǒng)調(diào)查報告

        “嵌入式系統(tǒng)在企業(yè)中的應(yīng)用”調(diào)查報告 工學(xué)院范裕婷內(nèi)容提要:現(xiàn)今,全過程自動化產(chǎn)品制造、大范圍電子商務(wù)活動、高度協(xié)同科學(xué)實驗以及現(xiàn)代化家庭起居,是嵌入式系統(tǒng)在企業(yè)中應(yīng)......

        嵌入式系統(tǒng)發(fā)展趨勢

        未來嵌入式系統(tǒng)的發(fā)展趨勢 在網(wǎng)絡(luò)、通信、微電子發(fā)展的基礎(chǔ)上,以及勢不可擋的數(shù)字化信息產(chǎn)品的強(qiáng)大需求推動下,嵌入式技術(shù)具有廣闊的發(fā)展創(chuàng)新空間。 (1)低功耗、高性能、高可......

        嵌入式系統(tǒng)實驗

        南京信息工程大學(xué) 實驗(實習(xí))報告 實驗(實習(xí))名稱電機(jī)轉(zhuǎn)動控制及中斷實驗 實驗(實習(xí))日期2016.5 得分 指導(dǎo)教師 謝勝東學(xué)院 計算機(jī)與軟件 專業(yè) 計算機(jī)科學(xué)與技術(shù) 年級2013......

        嵌入式系統(tǒng)實驗報告

        嵌入式系統(tǒng)設(shè)計實驗報告 班 級: 學(xué) 號: 姓 名: 成 績: 指導(dǎo)教師: 1. 實驗一 1.1 實驗名稱 博創(chuàng)UP-3000實驗臺基本結(jié)構(gòu)及使用方法 1.2 實驗?zāi)康?1.學(xué)習(xí)嵌入式系統(tǒng)開發(fā)流程。 2.熟悉U......

        嵌入式系統(tǒng)實驗報告

        廣西工學(xué)院鹿山學(xué)院 實 驗 報 告 課程名稱: 嵌入式系統(tǒng) 指導(dǎo)教師: 劉瑞琪 班 級: 自動化101 姓 名: 楊杰 學(xué) 號: 20102787 成績評定: 指導(dǎo)教師簽字: 2013年5月25日 實驗一簡單的......