久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

嵌入式系統的主要應用(精選5篇)

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

第一篇:嵌入式系統的主要應用

嵌入式系統的主要應用

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

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

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

3.POS網絡及電子商務:公共交通無接觸智能卡發行系統,公共電話卡發行系統,自動售貨機,各種智能ATM終端將全面走入人們的生活。

4.環境工程與自然:水文資料實時監測,防洪體系及水土質量監測、堤壩安全,地震監測網,實時氣象信息網,水源和空氣污染監測。在很多環境惡劣,地況復雜的地區,嵌入式系統將實現無人監測。

5.機器人:嵌入式芯片的發展將使機器人在微型化,高智能方面優勢更加明顯,同時會大幅度降低機器人的價格,使其在工業領域和服務領域獲得更廣泛的應用。

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

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

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

第二篇:基于嵌入式系統的圖形界面應用設計范文

目錄 嵌入式系統概述...................................................................................................................4

1.1 嵌入式系統簡介.......................................................................................................4 1.2 嵌入式系統的組成...................................................................................................5 1.3 本課題的背景和意義...............................................................................................5 2 硬件平臺及ARM體系結構................................................................................................7

2.1 處理器選擇...............................................................................................................7 2.2 ARM體系結構............................................................................................................7 3 軟件平臺...............................................................................................................................9

3.1嵌入式操作系統選擇................................................................................................9 3.2 交叉編譯環境的建立.............................................................................................10 3.2.1 上位機的軟硬件配置.........................................................................................10 3.2.2 硬件連接與調試.............................................................................................11 3.2.3 配置TFTP及NFS服務...................................................................................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 目錄結構.............................................................................................17 U-boot 的啟動過程及工作原理...................................................................................18 4.3.1 啟動模式介紹...................................................................................................18 4.3.2 啟動階段1分析...............................................................................................19 4.3.3 啟動階段2分析...............................................................................................20 U-boot的移植過程........................................................................................................20 4.4.1 準備工作...........................................................................................................20 4.4.2 添加支持 NAND Flash 啟動功能...................................................................21 4.4.3 添加 NAND Flash 讀寫功能.......................................................................22 4.4.4 修改 U-boot環境變量保存方式....................................................................22 4.4.5 加入 NAND Flash 閃存型號支持...............................................................23 4.5 U-boot 的燒寫及測試.........................................................................................23 4.6 設置U-boot環境變量..................................................................................................24 5 Linux 內核的移植.............................................................................................................25 Linux 內核的結構.........................................................................................................25 Linux 啟動過程簡析.....................................................................................................26 Linux內核的移植過程..................................................................................................26 5.3.1 選擇參考板.......................................................................................................26 5.3.2 修改 NAND Flash 分區信息...........................................................................26 5.3.3 關閉 ECC 校驗.................................................................................................27 5.4 CS8900a網卡的移植過程....................................................................................28 5.4.1 修改硬件地址映射...........................................................................................28 5.4.2 添加 CS8900A 內核編譯項.............................................................................28 5.5 Linux 內核的剪裁配置.......................................................................................29 5.5.1 使用配置菜單...........................................................................................................29 5.5.2 基本配置選項...................................................................................................30 5.5.3 驅動程序配置選項...................................................................................................31 5.5.4 保存配置文件...................................................................................................31 5.5.5 編譯 Linux 內核.............................................................................................31 5.6 內核的下載及啟動...............................................................................................32 5.6.1 將引導信息加入內核映像...............................................................................32 5.6.2 內核映像的下載及運行...................................................................................32 6 建立根文件系統.................................................................................................................33 6.1 根文件系統概述...................................................................................................33 6.1.1 根文件系統簡介...........................................................................................33 6.1.2 NFS 文件系統與Cramfs文件系統...................................................................33 6.2 建立Linux根文件系統目錄...............................................................................33 7 心得體會.............................................................................................................................34 基于嵌入式系統的圖形界面應用設計 嵌入式系統概述

1.1 嵌入式系統簡介

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

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

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

縱觀國際相關產業在圖形用戶界面方面的發展現狀,許多國際知名公司早已認識到GUI在嵌入式產品方面產生的強大增值功能,以及帶動的巨大市場價值,因此在公司內部成立了專門從事GUI研究與設計的部門。

圖形用戶界面(GUI)是一種結合計算機科學、美學、心理學、行為學,以及商業領域需求分析的人機系統工程。這種面向用戶的系統工程設計目的是優化產品性能,使操作更人性化,減輕使用者的認知負擔,使其更適合用戶的操作需要,直接提升產品的市場競爭力。

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

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

2.運行時耗用系統資源小

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

5.在某些應用場合應具備實時性

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

可以預見,隨著電子、計算機等行業的高速發展,嵌入式系統將以它專用化,效率高的特性深入實際應用的各個領域,因而開發與改進嵌入式圖形用戶界面有著長遠的意義。

1.2 嵌入式系統的組成

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

圖1-1 嵌入式系統的組成

1.3 本課題的背景和意義

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

嵌入式Linux有著嵌入式導航計算機操作系統需要的很多特色:支持多 任務處理、中斷處理及任務間通信,性能穩定,剪裁性好,開發與使用都很 方便。因此,本設計選用嵌入式Linux作為嵌入式導航計算機的操作系統,這對于實現導航計算機的高效率、低功耗具有現實意義。

圖1-2 嵌入式導航計算機硬件平臺結構圖

1.4 本課題的主要工作和研究內容

本課題的最重目標是為嵌入式導航計算機移植Linux操作系統。通過參 閱大量文獻,學習嵌入式Linux系統和 ARM 體系微處理芯片S3C2410的相 關知識,研究啟動下載程序 Bootloader 和 Linux內核的基本工作原理,并且 搭建交叉編譯平臺,重點是移植Bootloader和內核,以及制作根文件系統。具體工作內容包括:

(1)學習Linux操作系統的知識。

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

(5)修改和裁剪Linux 2.6.24.4內核,移植網卡驅動程序。(6)制作根文件系統。(7)編寫應用程序進行測試。

(8)將內核和根文件系統部署到開發板。2 硬件平臺及ARM體系結構

2.1 處理器選擇

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

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

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

(3)4通道DMA;

(4)3通道UART;

(5)2通道USB;

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

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

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

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

(11)NAND Flash控制器;

(12)PLL數字鎖相環。

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

2.2 ARM體系結構

ARM微處理器基本架構:

ARM9微處理器采用RISC體系結構:優先選取使用頻最高的簡單指令,避免復雜指令

RISC體系結構應具有如下特點:

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

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

5.所有的指令都可根據前面的執行結果決定是否被執行,從而提高指令的執行效率。

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

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

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

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

ARM微處理器的指令結構:

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

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

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

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

6.MPU支持實時操作系統。

7.支持數據Cache和指令Cache,具有更高的指令和數據處理能力。大小都為16K。8.ARM9系列微處理器主要應用于無線設備、儀器儀表、安全系統、機頂盒、高端打印機、數字照相機和數字攝像機等。

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

3.1嵌入式操作系統選擇

本設計的嵌入式操作系統選擇嵌入式Linux操作系統。

嵌入式操作系統是一種支持嵌入式系統應用的操作系統軟件,它是嵌入式系統(包括硬、軟件系統)極為重要的組成部分,通常包括與硬件相關的底層驅動軟件、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器等Browser。

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

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

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

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

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

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

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

3.2 交叉編譯環境的建立

采用交叉開發環境(Cross Development Environment)是嵌入式應用軟

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

圖3-1 交叉開發模型

3.2.1 上位機的軟硬件配置

硬件:

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

PC機:

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

PC機的操作系統為Windows XP,裝有DNW串口調試工具以及SJF2410 三星Flash燒寫工具。前者用于串口調試,后者用于燒寫Bootloader。

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

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

Boot:用于存放bootloader相關程序。Kernel:用于存放 Linux內核源碼。FS:用于存放根文件系統相關的程序。Program:用于存放用戶程序。

3.2.2 硬件連接與調試

硬件連接方式:

圖3-2 硬件連接圖

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

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

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

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

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

在本課題嵌入式系統中的目標開發板,采用串口調試的方法,即把串口當作目標開發板的顯示終端,無論是打印輸出,還是管理配置輸入,都使用串口,這就需要主機系統裝有串口調試工具。PC機中安裝有DNW串口調試工具,在使用DNW之前,應當對PC機的串口進行設置。方法如下:

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

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

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

圖3-3 串口屬性設置

運行 DNW 工具,選擇菜單“Configuration”——“Options”,按圖 2-4所示進行設置。

圖 3-4

DNW 設置

每次使用DNW之前,應當設置DNW連接到串口。點擊菜單中的 “Serial Port”——“Connect”,當DNW的標題欄出現[COM1,115200bps]的提示后,表明已經連接好,此時才可以使用DNW工具。

3.2.3 配置TFTP及NFS服務

TFTP 服務簡介:

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

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

TFTP 服務安裝與配置:

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

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

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

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

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

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

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

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

sync:文件同步寫入到內存和硬盤當中。

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

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

3.2.4 安裝交叉編譯工具

交叉編譯簡介:

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

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

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

登陸arm-linux項目組的FTP服務器:

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)設置環境變量:

修改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源文件,通過以下命令進行編譯,編譯后生成名為Hello的可執行文件,通過 file 命令可以查看文件的類型。當顯示以下信息是表明交叉編譯工具正常安裝了,通過編譯生成了ARM體系可執行的文件。注意,通過該交叉編譯器編譯的可執行文件只能在 ARM 體系下執行,不能在基于X86的普通PC上執行。

$ 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就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核準備好正確的環境。

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

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

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

4.2.1 U-boot 的獲取

U-boot 的源碼可以從sourceforge網站下載,網址為:

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 目錄結構

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

第一類目錄與處理器體系結構或開發板硬件直接相關。第二類目錄是一些通用的函數或者驅動程序。第三類目錄是U-boot 的應用程序、工具或者文檔。

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

4.3.1 啟動模式介紹

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

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

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

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

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

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

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

4.3.2 啟動階段1分析

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

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

(1)設置異常向量,當發生異常時,執行 cpu/arm920t/interrupts.c 中定義的中斷處理函數。

(2)設置CPU的模式為SVC(管理模式,操作系統使用的保護模式)(3)關閉看門狗。(4)禁掉所有中斷。

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

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

(b)配置棧空間,配置代碼段的開始地址、動態內存區長度、全局數據 大小以及分配IRQ 和FRQ的棧空間。

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

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

4.3.3 啟動階段2分析

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

(2)NAND Flash初始化,利用 nand_init()函數實現。(3)環境變量初始化,利用env_relocate()函數實現。(4)外圍設備初始化,利用 devices_init()函數實現。(5)使能中斷,利用enable_interrupts()函數實現。(6)初始化網絡設備。

(7)進入U-boot 的命令循環,接受用戶輸入的命令,執行相應的工作。

U-boot的移植過程

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

4.4.1 準備工作

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

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

(2)在 board 子目錄中建立 LJD2410開發板目錄: $ 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-如果編譯成功,證明已經建立好了LJD2410的編譯項,但是還要進行進一步的修改,因為現在的代碼是完全拷貝 smdk2410 開發板的,還不能工作在LJD2410板上。接下來要按照 LJD2410板的硬件配置來進一步移植。(5)調整SDRAM的刷新率,修改 lowlevel_init.S: #define REFCNT 1268 在smdk2410.c中調整 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啟動,所以將程序復制到RAM里面去需要新加代碼實現,一般通過 copy_myself 函數實現。這可以參考 VIVI的copy_muself代碼將其添加到Start.S中,詳見附錄 A-1。

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

由于使用了新的 Flash 讀函數,在編譯時需要重新鏈接,修改 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 運行至第二階段進入 start_armboot()函數。其中 nand_init()函數是對 NAND Flash 的最初初始化函數。其調用與CFG_NAND_LEGACY 宏有關,如果沒定義

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

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

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

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

4.4.4 修改 U-boot環境變量保存方式

由于本課題使用NAND Flash作為外存儲器,所以U-boot 的參數存儲函數應當進行適當的修改。

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

4.4.5 加入 NAND Flash 閃存型號支持

在/include/linux/mtd/

nand_ids.h

nand_flash_dev nand_flash_ids結構體的賦值進行修改,加入下列代碼:

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

4.5 U-boot 的燒寫及測試

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

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

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

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

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

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

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

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

其中,“LJD2410 >”即系統提示符,在此可以輸入 U-boot 的命令并執行。U-boot 提供了幾十個常用的命令,通過這些命令,可以對開發板進行調試,可以引導Linux內核,還可以擦寫 Flash 完成系統部署等功能。

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

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

4.6 設置U-boot環境變量

U-boot的環境變量存儲在NAND Flash中U-boot程序映像后面的128Kb字節中,這部分被稱為“變量區”。

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

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

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

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

LJD2410 > setenv ipaddr 192.168.0.10 LJD2410 > saveenv 系統顯示:

Saving Environment to NAND...Erasing Nand...Writing to Nand...done 表明新設置的環境變量已保存至Flash中的變量區。5 Linux 內核的移植

Linux 內核的結構

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

Linux 內核主要由 5 個子系統組成:進程調度、內存管理、虛擬文件系 統、網絡接口、進程間通信。

Linux內核源碼中幾個主要的目錄說明如下:

(1)/arch包含了所有硬件結構特定的內核代碼。

Linux 系統能支持如此多平臺的部分原因是因為內核把原程序代碼清晰的劃分為體系結構無關部分和體系結構相關部分。對于任何平臺,都必須包含以下幾個目錄:

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

(b)kernel:存放支持體系結構特有的(如信號處理和SMP)特征的實現。

(c)

lib:存放高速體系結構特有的(如strlen和 memcpy)通用函數的實現。

(d)mm:存放體系結構特有的內存管理程序的實現。

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

(2)/drivers包含了內核中所有的設備驅動程序。

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

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

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

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

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

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

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

(9)/net 包含了和網絡相關的代碼。

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

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

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

Linux 內核啟動就是引導內核映像啟動的過程。典型的內核映像是zImage,包含自引導程序和壓縮的vmlinux兩部分。

啟動過程從內核映像入口開始執行,解壓 vmlinux并轉到虛擬地址空間;再調用統一的內核啟動函數 start_kernel(),完成一系列基本初始化;隨后啟動一個叫做 init 的內核線程,完成掛載文件系統、初始化設備驅動和啟動用戶空間 init 進程等工作。

Linux內核的移植過程

5.3.1 選擇參考板

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

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

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

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

(4)參考板Linux設備驅動工作正常,至少已經驅動基本接口。

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

ARCH := arm

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

5.3.2 修改 NAND Flash 分區信息

本課題中,NAND Flash應按照功能分為 4個分區,如圖4-1所示:

圖5-1 NAND Flash分區示意圖 Linux 內核對于 Flash分區由 arch/arm/plat-s3c24xx/common-smdk.c 文件中的 mtd_partition smdk_default_nand_part 結構體定義,默認已經分為了8個區。按照圖4-1的分區信息,修改該結構體為:

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,},同時還應根據CPU手冊修改NAND Flash的讀寫時序:

static struct s3c2410_platform_nand smdk_nand_info = {

.tacls

= 0,.twrph0

= 30,.twrph1

= 0,};5.3.3 關閉 ECC 校驗

本設計中,內核都是通過 U-boot 寫到

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

S3C2410 中

Nand Flash 控制器產生的。所以,我們在這里選擇禁止內核

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

chip-->eccmode

= NAND_ECC_SOFT 改為:

chip-->eccmode

= NAND_ECC_NONE

5.4 CS8900a網卡的移植過程

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

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

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

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

#include

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

static struct map_desc smdk2410_iodesc[] __initdata = {

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

5.4.2 添加 CS8900A 內核編譯項

Kconfig 文件是 Linux2.6 內核引入的配置文件,是內核配置選項的源文件。只有在這個文件里加入相應代碼,才能在編譯選項中出現菜單項。

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

config

ARM_CS8900

tristate “CS8900 support”

depends on NET_ETHERNET && ARM && ARCH_SMDK2410

help …

最后應在/drivers/net/arm/Makefile 中添加:

obj-$(CONFIG_ARM_CS8900)

+= cs8900.o

以上工作完成后,新移植的CS8900A驅動就可以編譯進內核里了。

5.5 Linux 內核的剪裁配置

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

$ cp arch/arm/config/smdk2410_defconfig.config 在此基礎上,根據本課題的實際需求進行配置增減。

5.5.1 使用配置菜單

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

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

Y—將該功能編譯進內核。

N—不將該功能編譯進內核。

M—將該功能編譯成可以在需要時動態插入到內核中的模塊。

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

5.5.2 基本配置選項

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

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

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

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

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

(5)Kernel Features:包含內核特性相關選項,保持默認。

(6)Boot options:包含內核啟動相關選項,其中內核啟動參數設置為:

“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文件系統。

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

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

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

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

(11)Device Drivers:包含設備驅動選項,下一小節將詳細介紹。

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

(13)Kernel hacking:包含各種內核調試選項,保持默認。

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

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

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

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

(1)MTD support:MTD設備驅動,應添選NAND Flash驅動支持。

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

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

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

5.5.4 保存配置文件

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

5.5.5 編譯 Linux 內核

正式編譯Linux內核之前,應當清理一下內核樹,命令如下:

$ make mrproper

此命令會清除掉.config 文件,所以應當在配置內核之前做。

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

5.6.1 將引導信息加入內核映像

U-boot 引導內核時需要檢查一個 64byte 的頭信息,其中包含了入口地址、映像類型等基本信息。這個引導頭可以用 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 各個參數的含義:

-n:設置映像名

-A:設置體系信息

-O:設置操作系統信息

-T:設置映像類型

-c:壓縮類型

-a:讀入地址

-e:入口地址

-d:源映像文件

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

5.6.2 內核映像的下載及運行

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

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 為指定的下載到內存的地址,zImge.img 就是帶有引導頭的內核映像。當內核下載完成后,可以通過bootm命令啟動內核:

LJD2410> bootm 0x30008000 6 建立根文件系統

6.1 根文件系統概述

6.1.1 根文件系統簡介

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

6.1.2 NFS 文件系統與Cramfs文件系統

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

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

6.2 建立Linux根文件系統目錄

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

本課題構建根文件系統的工作目錄是 myrootfs,通過下列命令可以在myrootfs中創建所需的子目錄:

$ 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 這樣,一個基本的根文件系統就建立起來了,但是各個目錄都是空的,缺少各種程序和命令工具,需要進一步完善。心得體會

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

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

其次,介紹了交叉開發環境的建立。本課題兩臺主機連接開發板的方法,主機分別安裝不同的操作系統,在開發過程中完成不同的工作。通過 TFTP和NFS等網絡服務,實現高效連接,有利于提高開發效率。這部分是整個課題的基礎,之后的所有工作都是在這個基礎上完成的。

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

最后,簡單介紹了系統部署的方法。將Linux 內核和根文件系統部署到開發板后,開發板就可以脫離交叉開發環境而獨立運行,最終達到設計需求。

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

第三篇:嵌入式系統應用與學習心得體會

μC/OS嵌入式實時操作系統的應用和學習心得

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

我們在學習μC/OS嵌入式實時操作系統時用的教科書是任哲編著的 《嵌入式實時操作系統μC/OS-Ⅱ原理及應用》,這本書介紹了嵌入式實時操作系統μC/OS-Ⅱ內核的任務管理和調度、系統時鐘和節拍服務、時間管理、中斷、任務的通信和同步、內存的簡單管理原理,同時給出了實例。最后,還介紹了μC/OS-Ⅱ的移植方法。

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

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

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

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

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

uC/OS-II要求用戶在定時中斷的服務程序中,調用系統提供的與時鐘節拍相關的系統函數,例如中斷級的任務切換函數,系統時間函數。

uC/OS-II 中最多可以支持64 個任務,分別對應優先級0~63,其中0 為最高優先級。63為最低級,系統保留了4個最高優先級的任務和4個最低優先級的任務,所有用戶可以使用的任務數有56個。還提供了任務管理的各種函數調用,包括創建任務,刪除任務,改變任務的優先級,任務掛起和恢復等。

系統初始化時會自動產生兩個任務:一個是空閑任務,它的優先級最低,該任務僅給一個整形變量做累加運算;另一個是系統任務,它的優先級為次低,該任務負責統計當前cpu的利用率。

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

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

總之,學習μC/OS嵌入式實時操作系統首先得先了解整個系統的結構,工作時的流程,比如任務1運行時如果有外部中斷會發生什么(調用中斷服務程序,把相應的任務加如就緒列,內核進行調度,就緒隊列中的最高優先級的任務...)等,再對代碼進行具體的研究會比較容易。

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

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

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

第四篇:《嵌入式系統原理及應用》結課論文格式模版

《嵌入式系統原理及應用》

結課論文

題目:此處寫論文題目

學姓專班成

號 名 業 級 績

此處填寫學號 此處填寫姓名 機械電子工程 格式如:1班

北京理工大學珠海學院機械與車輛學院

201X年 XX 月 XX 日

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

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

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

一、基層電大法學本科畢業論文寫作存在的問題

(一)選題問題

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

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

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

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

(二)論文本身問題

1.文體問題。少數學生上交的初稿根本不是學術論文,或是工作總結,或是學習體會,或是案例分析。

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

3.論文格式不規范。文章層次不清,緒論、本論、結論標示不明顯,小標題混

三、對策及建議

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

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

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

四、結束語

畢業論文作為檢查學生運用理論解決實際問題能力,檢查學生綜合水平措施的功能是眾所周知的,但筆者認為畢業論文的寫作更是一個過程、一種訓練,是培養學生閱讀能力、分析能力、寫作能力、創新能力的過程,是對學生掌握法學基礎理論、專業技術知識的功底,分析問題的能力及書面語言的表達水平的一種綜

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

參考文獻

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

第五篇:嵌入式系統及應用結課論文要求

結課論文要求

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

2、論文格式要求:按照公開發表論文的格式,參考學校學報的要求。

3、論文字數(含摘要、圖、表):3500-4500

論文參考格式

《嵌入式系統及應用》結課論文(首頁左上角)

中文標題

作者

(天津職業技術師范大學自動化與電氣工程學院天津300222)

摘要:

關鍵詞:

Titel

Author

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

Abstract:

Keywords:

1.前言

(以下為正文,可根據內容自由設置二級標題X.X和三級標題X.X.X)

2.3.4.……

X.結束語

參考文獻(著錄格式見學報封三)

[1]

[2]

……

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

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    嵌入式系統設計與應用[共5篇]

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

    基于AVR單片機的嵌入式系統的應用分析

    關鍵字:AVR單片機 嵌入式系統引言 隨著技術的發展,嵌入式系統的設計及應用對人們的生活產生了很大的影響,并將逐漸改變人們未來的生活方式,在特定的操作系統上開發應用程序,可以......

    嵌入式系統實驗報告

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

    嵌入式系統調查報告

    “嵌入式系統在企業中的應用”調查報告 工學院范裕婷內容提要:現今,全過程自動化產品制造、大范圍電子商務活動、高度協同科學實驗以及現代化家庭起居,是嵌入式系統在企業中應......

    嵌入式系統發展趨勢

    未來嵌入式系統的發展趨勢 在網絡、通信、微電子發展的基礎上,以及勢不可擋的數字化信息產品的強大需求推動下,嵌入式技術具有廣闊的發展創新空間。 (1)低功耗、高性能、高可......

    嵌入式系統實驗

    南京信息工程大學 實驗(實習)報告 實驗(實習)名稱電機轉動控制及中斷實驗 實驗(實習)日期2016.5 得分 指導教師 謝勝東學院 計算機與軟件 專業 計算機科學與技術 年級2013......

    嵌入式系統實驗報告

    嵌入式系統設計實驗報告 班 級: 學 號: 姓 名: 成 績: 指導教師: 1. 實驗一 1.1 實驗名稱 博創UP-3000實驗臺基本結構及使用方法 1.2 實驗目的 1.學習嵌入式系統開發流程。 2.熟悉U......

    嵌入式系統實驗報告

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

主站蜘蛛池模板: 欧美亚洲日韩在线在线影院| 日韩精品乱码av一区二区| 亚洲精品一区国产| 精品日产卡一卡二卡国色天香| 久久中文字幕av不卡一区二区| 亚洲中文字幕久久精品无码app| 少妇人妻大乳在线视频不卡| 国产精品无码电影在线观看| 亚洲精品国产成人av蜜臀| 亚洲国产一区二区三区波多野结衣| 亚洲欧美综合在线一区| 国产xxxx69真实实拍| 视频久re精品在线观看| 国产成人亚洲综合无码18禁h| 亚洲国产一区二区三区四区电影网| 日韩免费人妻av无码专区蜜桃| 国产精品国产三级国产专区50| 日韩成人无码| 欧美伊人色综合久久天天| 免费无遮挡在线观看网站| 亚洲国产欧美在线人成| 国产精品亚洲a∨天堂不卡| 疯狂做受xxxx高潮欧美日本| 日本在线a一区视频高清视频| 亚洲av中文无码乱人伦在线观看| 无码人妻丰满熟妇区五十路百度| 国产精品成人网址在线观看| 成年美女看的黄网站色戒| 国产极品jk白丝喷白浆图片| 狠狠色噜噜狠狠狠狠97首创麻豆| 久久亚洲日韩av一区二区三区| 久久精品青青大伊人av| 精品人妻无码| 人妻精品无码一区二区三区| 亚洲h成年动漫在线观看网站| 亚洲综合激情另类小说区| 欧美真人性野外做爰| 久久人人爽人人爽人人片av超碰| 自慰系列无码专区| 国产免费人成视频在线观看| 亚洲国产一成人久久精品|