欧美色欧美亚洲高清在线观看,国产特黄特色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)用設(shè)計(jì)范文

      時(shí)間:2019-05-12 06:55:50下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《基于嵌入式系統(tǒng)的圖形界面應(yīng)用設(shè)計(jì)范文》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《基于嵌入式系統(tǒng)的圖形界面應(yīng)用設(shè)計(jì)范文》。

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

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

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

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

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

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

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

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

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

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

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

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

      2.運(yùn)行時(shí)耗用系統(tǒng)資源小

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

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

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

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

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

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

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

      1.3 本課題的背景和意義

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

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

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

      1.4 本課題的主要工作和研究?jī)?nèi)容

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

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

      (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ū)動(dòng)程序。(6)制作根文件系統(tǒng)。(7)編寫應(yīng)用程序進(jìn)行測(cè)試。

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

      2.1 處理器選擇

      本設(shè)計(jì)的處理器選擇高性能、低功耗的ARM9微處理器Samsung S3c2410。S3c2410 是著名半導(dǎo)體公司 Samsung 推出的一款 32 位 RISC 處理器。S3c2410的內(nèi)核基于 ARM920T,帶有MMU功能,主頻高達(dá)203MHz,可以支持 Linux、WinCE 等主流嵌入式操作系統(tǒng)。同時(shí)它還采用了一種叫做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個(gè)內(nèi)部時(shí)鐘控制器;

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

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

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

      (11)NAND Flash控制器;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      ARM9系列微處理器具有以下特點(diǎn): 1.5級(jí)整數(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支持實(shí)時(shí)操作系統(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)用場(chǎng)合。軟件平臺(tái)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      硬件:

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

      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ā)方式,但是許多操作都是基于命令行的,所以需要扎實(shí)的Linux基礎(chǔ)知識(shí)。

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

      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)對(duì)PC機(jī)的串口進(jìn)行設(shè)置。方法如下:

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

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

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

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

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

      圖 3-4

      DNW 設(shè)置

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

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

      TFTP 服務(wù)簡(jiǎn)介:

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

      TFTP 服務(wù)在 Linux 系統(tǒng)中有客戶端和服務(wù)器兩個(gè)軟件包。配置 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 的意義是:根管理員、組和其他用戶對(duì) 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)行測(cè)試: $ cd ~ $ tftp 127.0.0.1 Tftp> get test 若可下載test 文件,則證明TFTP服務(wù)配置正確。NFS 服務(wù)簡(jiǎn)介:

      NFS 就是 Network File System 的縮寫,最早之前是由 Sun 這家公司所開發(fā)的。最大的功能就是可以透過網(wǎng)絡(luò),讓不同的機(jī)器、不同的操作系統(tǒng)、可以彼此分享個(gè)別的檔案(share files)。所以,可以簡(jiǎn)單的將它看做是一個(gè)文件服務(wù)器(file server)。通過 NFS 服務(wù)器可以讓開發(fā)板將網(wǎng)絡(luò)遠(yuǎn)端的 NFS 主機(jī)分享的目錄,掛載到開發(fā)板當(dāng)中,在開發(fā)板看起來,那個(gè)遠(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時(shí),apt 會(huì)自動(dòng)安裝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都會(huì)變?yōu)閚obody。(3)本地測(cè)試NFS:

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

      3.2.4 安裝交叉編譯工具

      交叉編譯簡(jiǎn)介:

      所謂交叉編譯,簡(jiǎn)單的說,就是在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上的可執(zhí)行代碼,比如在 PC平臺(tái)上(X86 CPU)編譯出能運(yùn)行在以 ARM 為內(nèi)核的CPU平臺(tái)上的程序,一般選擇GNU開發(fā)工具 gcc。GNU的開發(fā)工具都是免費(fèi)的,遵循 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項(xiàng)目組的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

      測(cè)試交叉編譯器:

      可以通過一個(gè)簡(jiǎn)單的程序測(cè)試安裝好的交叉編譯工具,看其能否正常工作。編寫一個(gè) 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 概述

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

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

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

      U-boot 是德國(guó) 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 個(gè)子目錄,分別存放和管理不同的源碼。這些目錄中所要存放的文件有其規(guī)則,可以分為3類,如表3-1所示:

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

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

      4.3.1 啟動(dòng)模式介紹

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

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

      正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時(shí)侯,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)存儲(chǔ)設(shè)備中。Bootloader 的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用; 此外,以后的系統(tǒng)更新也會(huì)使Bootloader的這種工作模式。工作于這種模式下的 Bootloader 通常都會(huì)向它的終端用戶提供一個(gè)簡(jiǎn)單的命令行接口。

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

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

      圖 4-1 U-boot啟動(dòng)代碼流程圖

      4.3.2 啟動(dòng)階段1分析

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

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

      (1)設(shè)置異常向量,當(dāng)發(fā)生異常時(shí),執(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手冊(cè)的推薦值。(6)調(diào)用cpu初始化函數(shù)cpu_init_crit。其中一個(gè)功能是設(shè)置CP15寄存 器,失效指令(I)Cache和數(shù)據(jù)(D)Cache后,禁止MMU與 Cache。(7)重定向,將 NAND Flash代碼復(fù)制到 RAM,其中有以下兩個(gè)個(gè)步 驟:

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

      (b)配置棧空間,配置代碼段的開始地址、動(dòng)態(tài)內(nèi)存區(qū)長(zhǎng)度、全局?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 運(yùn)行的第一個(gè) C 程序,在 lib_arm/board.c 文件中定義。隨后進(jìn)入第二階段。

      4.3.3 啟動(dòng)階段2分析

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

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

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

      U-boot的移植過程

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

      4.4.1 準(zhǔn)備工作

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

      arm:CPU 的架構(gòu)(ARCH)arm920t:CPU 的類型(CPU),其對(duì)應(yīng)于 cpu/arm920t 子目錄。LJD2410:開發(fā)板的型號(hào)(BOARD),對(duì)應(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)測(cè)試編譯能否成功: $ make distclean $ make LJD2410_config $ make CROSS_COMPILE=arm-linux-如果編譯成功,證明已經(jīng)建立好了LJD2410的編譯項(xiàng),但是還要進(jìn)行進(jìn)一步的修改,因?yàn)楝F(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 啟動(dòng)功能

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

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

      由于使用了新的 Flash 讀函數(shù),在編譯時(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 運(yùn)行至第二階段進(jìn)入 start_armboot()函數(shù)。其中 nand_init()函數(shù)是對(duì) NAND Flash 的最初初始化函數(shù)。其調(diào)用與CFG_NAND_LEGACY 宏有關(guān),如果沒定義

      CFG_NAND_LEGACY 這個(gè)宏,就按照 start_armboot()調(diào)用 drivers/nand/nand.c 中的 nand_init 函數(shù)(該函數(shù)在 1.2.0 已經(jīng)被實(shí)現(xiàn))默認(rèn)規(guī)定,但還有個(gè) board_nand_init()函數(shù)沒實(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ù)探測(cè) NAND Flash。

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

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

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

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

      4.4.5 加入 NAND Flash 閃存型號(hào)支持

      在/include/linux/mtd/

      nand_ids.h

      對(duì)

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

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

      4.5 U-boot 的燒寫及測(cè)試

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

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

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

      sjf2410 /f:u-boot.bin(3)sjf2410程序啟動(dòng)后,會(huì)有三個(gè)選項(xiàng),依次為:

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

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

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

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

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

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

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

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

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

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

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

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

      這種方法得益于先前所做的移植工作,優(yōu)點(diǎn)是操作簡(jiǎn)便,可以在線設(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)

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

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

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

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

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

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

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

      (c)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      顯然,移植工作的重點(diǎn)就是移植arch目錄下的文件。Linux 啟動(dòng)過程簡(jiǎn)析

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

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

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

      5.3.1 選擇參考板

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

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

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

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

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

      根據(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個(gè)分區(qū),如圖4-1所示:

      圖5-1 NAND Flash分區(qū)示意圖 Linux 內(nèi)核對(duì)于 Flash分區(qū)由 arch/arm/plat-s3c24xx/common-smdk.c 文件中的 mtd_partition smdk_default_nand_part 結(jié)構(gòu)體定義,默認(rèn)已經(jīng)分為了8個(gè)區(qū)。按照?qǐng)D4-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,},同時(shí)還應(yīng)根據(jù)CPU手冊(cè)修改NAND Flash的讀寫時(shí)序:

      static struct s3c2410_platform_nand smdk_nand_info = {

      .tacls

      = 0,.twrph0

      = 30,.twrph1

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

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

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

      S3C2410 中

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

      ECC 校驗(yàn).,具體操作如下: 文件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ū)動(dòng),需要自己添加。CS8900A的驅(qū)動(dòng)文件有兩個(gè):CS8900A.h 和CS8900A.c,這兩個(gè)文件可以由網(wǎng)絡(luò)獲得,將其拷貝至 drivers/net/arm 文件夾下,但這樣并不能使驅(qū)動(dòng)程序正常工作,還應(yīng)對(duì)內(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

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

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

      #include

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

      static struct map_desc smdk2410_iodesc[] __initdata = {

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

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

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

      在/drivers/net/arm/Kconfig中增加CS8900A的編譯項(xiàng)代碼:

      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ū)動(dòng)就可以編譯進(jìn)內(nèi)核里了。

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

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

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

      5.5.1 使用配置菜單

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

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

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

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

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

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

      5.5.2 基本配置選項(xiàng)

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

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

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

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

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

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

      (6)Boot options:包含內(nèi)核啟動(dòng)相關(guān)選項(xiàng),其中內(nèi)核啟動(dòng)參數(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:包含浮點(diǎn)數(shù)運(yùn)算仿真功能,需要開啟“NWFPE”選項(xiàng)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      U-boot 引導(dǎo)內(nèi)核時(shí)需要檢查一個(gè) 64byte 的頭信息,其中包含了入口地址、映像類型等基本信息。這個(gè)引導(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 各個(gè)參數(shù)的含義:

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

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

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

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

      -c:壓縮類型

      -a:讀入地址

      -e:入口地址

      -d:源映像文件

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

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

      將上一小節(jié)中生成的zImage.img文件拷貝到主機(jī)tftpboot 文件夾內(nèi)。啟動(dòng)開發(fā)板,進(jìn)入U(xiǎn)-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命令啟動(dòng)內(nèi)核:

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

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

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

      對(duì)于嵌入式操作系統(tǒng)而言,僅包含內(nèi)核是不夠的,還必須有文件系統(tǒng)的支持。跟文件系統(tǒng)(root filesystem)是 Linux系統(tǒng)的核心部分,包含系統(tǒng)使用的軟件和庫,以及無偶有用來為用戶提供支持架構(gòu)和用戶使用的應(yīng)用軟件,并作為存儲(chǔ)數(shù)據(jù)讀寫結(jié)果的區(qū)域。在Linux系統(tǒng)啟動(dòng)時(shí),首先完成內(nèi)核安裝及環(huán)境初始化,最后會(huì)尋找一個(gè)文件系統(tǒng)作為根文件系統(tǒng)被加載。Linux系統(tǒng)中使用“/”來唯一表示根文件系統(tǒng)的安裝路徑。嵌入式系統(tǒng)中通??梢赃x擇的根文件系統(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ī)的某一個(gè)指定文件夾作為根文件系統(tǒng)。在嵌入式開發(fā)過程中,通常使用這種文件系統(tǒng)搭建交叉編譯環(huán)境。

      cramfs(Compressed ROM File System)是Linux創(chuàng)始人Linus Torvalds開發(fā)的一個(gè)適用于嵌入式系統(tǒng)的文件系統(tǒng)。cramfs是一個(gè)只讀文件系統(tǒng),采用了zlib壓縮,壓縮比一般可以達(dá)到1:2,但仍可以做到高效的隨機(jī)讀取。Linux系統(tǒng)中,通常把不需要經(jīng)常修改的目錄壓縮存放,并在系統(tǒng)引導(dǎo)的時(shí)候再將壓縮文件解開。因?yàn)?cramfs 不會(huì)影響系統(tǒng)讀取文件的速度,而且是一個(gè)高度壓縮的文件系統(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 這樣,一個(gè)基本的根文件系統(tǒng)就建立起來了,但是各個(gè)目錄都是空的,缺少各種程序和命令工具,需要進(jìn)一步完善。心得體會(huì)

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

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

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

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

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

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

      第二篇:嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用

      第一章:

      嵌入式系統(tǒng)定義:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能,可靠性,成本,體積,功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。(一切非PC計(jì)算機(jī)系統(tǒng))嵌入式系統(tǒng)特點(diǎn):“專用”計(jì)算機(jī)系統(tǒng),運(yùn)行環(huán)境差異很大,比通用PC系統(tǒng)資源少,功耗低,體積小,集成度高,成本低,具有完整的系統(tǒng)測(cè)試和可靠性評(píng)估體系,具有較長(zhǎng)的生命周期,需要專用開發(fā)工具和方法進(jìn)行設(shè)計(jì),包含專用調(diào)試電路,多學(xué)科知識(shí)集成系統(tǒng)。嵌入式系統(tǒng)應(yīng)用范圍:汽車,工業(yè)控制,通信設(shè)備,消費(fèi)電子,商業(yè)終端,航空航天,軍事需求。

      嵌入式系統(tǒng)的基本開發(fā)流程:系統(tǒng)定義與需求分析階段,方案設(shè)計(jì)階段,詳細(xì)設(shè)計(jì)階段,軟、硬件集成測(cè)試階段,系統(tǒng)功能性測(cè)試及可靠性測(cè)試階段。

      系統(tǒng)定義與需求分析階段:對(duì)系統(tǒng)需求進(jìn)行分析,制定系統(tǒng)的設(shè)計(jì)依據(jù)。方案設(shè)計(jì)階段:確定系統(tǒng)初步設(shè)計(jì)方案并形成設(shè)計(jì)描述文檔。詳細(xì)設(shè)計(jì)階段:完善初步方案,對(duì)方案實(shí)施詳細(xì)設(shè)計(jì)。

      軟硬件集成測(cè)試階段:對(duì)系統(tǒng)軟硬件進(jìn)行綜合測(cè)試,驗(yàn)證系統(tǒng)設(shè)計(jì)功能。

      系統(tǒng)功能性能測(cè)試及可靠性測(cè)試測(cè)試:對(duì)系統(tǒng)功能,性能,可靠性進(jìn)行綜合測(cè)評(píng)。

      對(duì)于使用操作系統(tǒng)的嵌入式系統(tǒng)來說,嵌入式系統(tǒng)軟件結(jié)構(gòu)一般包含4個(gè)層面:板級(jí)支持包層,實(shí)時(shí)操作系統(tǒng)(RTOS)層,應(yīng)用程序接口(API)層,應(yīng)用程序?qū)?。有些資料將應(yīng)用程序接口API歸屬于OS層,按3層劃分的應(yīng)用程序控制系統(tǒng)的運(yùn)作和行為;操作系統(tǒng)與硬件無關(guān),不同的嵌入式操作系統(tǒng)其組成結(jié)構(gòu)也不盡相同 嵌入式操作系統(tǒng)種類繁多,大體分為兩種:商用型和免費(fèi)型

      商用型:VxWorks,Windows CE,pSoS,Palm OS,OS-9,LynxOS,QNX和LYNX 免費(fèi)型:Linux和uC/OS—II uC/OS—II具有執(zhí)行效率高,占用空間小,可移植性及擴(kuò)展性強(qiáng),實(shí)施性能優(yōu)良,穩(wěn)定性和可靠性良好等特點(diǎn)。其內(nèi)核采用微內(nèi)核結(jié)構(gòu),將基本功能(如進(jìn)程管理,存儲(chǔ)管理,中斷處理)放在內(nèi)核中,留給用戶一個(gè)標(biāo)準(zhǔn)API函數(shù),并根據(jù)各個(gè)任務(wù)的優(yōu)先級(jí)分配CPU時(shí)間。交叉開發(fā)環(huán)境:交叉開發(fā)是指一個(gè)通用計(jì)算機(jī)上進(jìn)行軟件的編輯編譯,然后下載到嵌入式設(shè)備中進(jìn)行調(diào)試的開發(fā)方式,它通常采用宿主機(jī)/目標(biāo)機(jī)模式。

      第二章:

      RISC是精簡(jiǎn)指令集

      精簡(jiǎn)指令集體系結(jié)構(gòu)的優(yōu)點(diǎn):硬連線的指令譯碼邏輯,便于流水線執(zhí)行,大多數(shù)RISC指令為單周期執(zhí)行。

      精簡(jiǎn)指令集處理器的優(yōu)點(diǎn):處理器關(guān)心面積小,開發(fā)時(shí)間縮短,開發(fā)成本降低,容易實(shí)現(xiàn)高性能,低成本的處理器。

      精簡(jiǎn)指令集體系結(jié)構(gòu)缺點(diǎn):與CISC相比,通常RISC的代碼密度低;RISC不能執(zhí)行x86代碼;RISC給優(yōu)化編譯程序帶來了困難

      ARM設(shè)計(jì)采用的RISC技術(shù)特征主要有:Load/Store體系結(jié)構(gòu),固定的32位指令,3地址指令格式。

      ARM7TDM名稱具體含義:ARM7:32位ARM體系結(jié)構(gòu)4T版本;T:Thumb16位壓縮指令集;D:支持片上Debug,使處理器能夠停止以響應(yīng)調(diào)試請(qǐng)求;M:增強(qiáng)型Multiplier,與前代相比具有較高的性能且產(chǎn)生64位的結(jié)果。I:EmbeddedICE硬件以支持片上斷點(diǎn)和觀察點(diǎn)。ARM7 3級(jí)流水線:(取指級(jí),譯碼級(jí),執(zhí)行級(jí))ARM9TDMI 流水線操作:(取指,譯碼,執(zhí)行,緩沖/數(shù)據(jù),回寫)5級(jí) ARM處理器核可工作兩種狀態(tài):ARM狀態(tài)和Thumb狀態(tài)

      從ARM進(jìn)入Thumb狀態(tài),當(dāng)操作數(shù)寄存器Rm的狀態(tài)位bit[0]為1時(shí),執(zhí)行“BX Rm”指令進(jìn)入Thumb狀態(tài)

      從Thumb進(jìn)入ARM狀態(tài),當(dāng)操作數(shù)寄存器Rm的狀態(tài)位bit[0]為0時(shí),執(zhí)行“BX Rm”指令進(jìn)入ARM狀態(tài)

      ARM處理器工作模式(共7種):除用戶模式外的其他六種模式稱為特權(quán)模式。特權(quán)模式:主要處理異常和監(jiān)控調(diào)用(有時(shí)也稱為軟件中斷),他們可以自由地訪問系統(tǒng)資源和切換模式

      ARM處理器總共有37個(gè)寄存器,均為32位 ARM狀態(tài)下的通用寄存器分為3類: 未分組寄存器:R0~~R7(為公用寄存器)

      分組寄存器:R8~~R14

      R13通常用于堆棧指針SP

      R14用做子程序鏈接寄存器

      程序計(jì)數(shù)器:R15(PC)

      用做程序計(jì)數(shù)器

      ARM程序狀態(tài)寄存器中

      條件碼標(biāo)志(N Z C V)

      N——在結(jié)果是帶符號(hào)的二進(jìn)制補(bǔ)碼的情況下,結(jié)果為負(fù),N=1 否則為0 Z——結(jié)果為0 Z=1 否則為0 C——針對(duì)加法:產(chǎn)生進(jìn)位

      C=1 否則為0

      針對(duì)減法:產(chǎn)生借位

      C=0 否則為1

      針對(duì)有移位操作的非加減法指令

      C為移位操作中最后移出位的值

      對(duì)于其他指令

      C通常不變

      V——對(duì)于加減法指令

      操作數(shù)和結(jié)果為帶符號(hào)的整數(shù)時(shí),產(chǎn)生溢出

      V=1 否則為0

      對(duì)于其他指令

      V通常不發(fā)生變化 ARM的異常中斷響應(yīng)過程: 一:將CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對(duì)應(yīng)的SPSR中,以實(shí)現(xiàn)對(duì)處理器當(dāng)前狀態(tài),中斷屏蔽字以及各條件標(biāo)志位的保存。二:設(shè)置當(dāng)前狀態(tài)寄存CPSR中的相應(yīng)位:

      設(shè)置CPSR模式控制位CPSR[4:0],使處理器進(jìn)入相應(yīng)的執(zhí)行模式

      當(dāng)進(jìn)入Reset或FIQ模式時(shí),還要設(shè)置中斷標(biāo)志位(CPSR[6]=1)禁止FIQ中斷,否則其值不變

      設(shè)置中斷標(biāo)志位(CPSR[7]=1),禁止IRQ中斷

      三:將寄存器LR-設(shè)置成異常返回地址 return link(對(duì)于某些異常中斷,保存在LR-的值可能與實(shí)際返回的地址有一個(gè)常數(shù)的偏移量),使異常處理程序執(zhí)行完后能正確返回原程序

      四:給程序計(jì)數(shù)器PC強(qiáng)制賦值,使程序從相應(yīng)的向量地址開始執(zhí)行中斷處理程序。

      非向量中斷和中斷向量的區(qū)別和聯(lián)系

      異常中斷的優(yōu)先級(jí):復(fù)位(最高),數(shù)據(jù)異常中斷,F(xiàn)IQ,IRQ,取值指異常中止,SWI未定義指令

      ARM支持的數(shù)據(jù)類型(6種):8位有符號(hào)和無符號(hào)字節(jié)

      16位有符號(hào)和無符號(hào)半字,以2字節(jié)的邊界定位

      32位有符號(hào)和無符號(hào)半字,以4字節(jié)的邊界定位

      ARM存儲(chǔ)器組織:以字節(jié)為單位尋址的存儲(chǔ)器中有“小端”和“大端”兩種方式存儲(chǔ)字 小端格式:較高的有效字節(jié)存放在較高的存儲(chǔ)器地址,較低的有效字節(jié)存放在較低的存儲(chǔ)器地址

      大端格式:較高的有效字節(jié)存放在較低的存儲(chǔ)器地址,較低的有效字節(jié)存放在較高的存儲(chǔ)器地址

      ARM處理器能方便地配置為其中任何一種存儲(chǔ)器方式,但他們的缺省設(shè)置為小端格式(71頁有題)

      ARM7TDM內(nèi)核的重要特性:53頁最上面

      第三章:

      指令分類中基本指令格式

      S

      可選后綴,若指定S,則根據(jù)指令執(zhí)行結(jié)果更新CPSR中的條件碼 ARM尋址方式

      立即尋址有選擇題

      寄存器間接尋址:ARM的數(shù)據(jù)傳送指令都是基于寄存器間接尋址,即通過Load/Store完成對(duì)數(shù)據(jù)的傳送操作

      103頁舉例

      可能為考題

      偽操作

      是ARM匯編語言程序里的一些特殊指令助記符,它的作用主要是為完成匯編程序做各種準(zhǔn)備,在源程序進(jìn)行匯編時(shí)由匯編程序處理,而不是在計(jì)算機(jī)運(yùn)行期間由機(jī)器執(zhí)行 ARM嵌入式系統(tǒng)程序設(shè)計(jì)可以分為ARM匯編語言程序設(shè)計(jì)、嵌入式C語言程序設(shè)計(jì)以及C語言與匯編語言的混合編程。

      ARM匯編程序中

      AREA指示符定義本程序段位代碼段

      即申請(qǐng)一個(gè)定義段 161頁程序

      可能考

      嵌入式C語言程序設(shè)計(jì)中修飾符:interrupt、near、far、huge Interrupt在函數(shù)修飾為中斷函數(shù),沒有輸入和輸出參數(shù) 第三章課后習(xí)題見李向妮筆記

      第四章

      DMA

      I2C

      I2S 基于S3C44B0X的最小系統(tǒng)設(shè)計(jì):

      嵌入式最小系統(tǒng)是指保證嵌入式微處理器可靠工作所必需的基本電路組成的系統(tǒng),通常包括處理器單元、時(shí)鐘單元、復(fù)位單元、、存儲(chǔ)器單元、供電電源和調(diào)試接口。

      基于ARM的嵌入式最小系統(tǒng)基本組成包括:基于ARM核的微處理器、電源電路、復(fù)位電路、時(shí)鐘電路、存儲(chǔ)器電路(FLASH和SDRAM)、UART接口電路和JTAG調(diào)試接口

      第五章:

      uC/OS—II采用的搶占式內(nèi)核是一個(gè)真正的實(shí)時(shí)操作系統(tǒng)

      uC/OS—II基本特點(diǎn):源碼開放;可移植性;可裁剪;搶占式內(nèi)核;可擴(kuò)展的多任務(wù);可確定的執(zhí)行時(shí)間;中斷管理;穩(wěn)定性和可靠性

      uC/OS—II的文件結(jié)構(gòu)(與內(nèi)核功能相關(guān)的文件):任務(wù)管理;同步通信;內(nèi)存管理;時(shí)間管理

      uC/OS—II任務(wù)及其運(yùn)行狀態(tài):

      任務(wù)是一個(gè)簡(jiǎn)單的程序,對(duì)應(yīng)于實(shí)際應(yīng)用中的一個(gè)邏輯功能。對(duì)uC/OS—II來說,任務(wù)是系統(tǒng)運(yùn)行的基本單元,系統(tǒng)以任務(wù)為單元分配內(nèi)存資源和處理時(shí)間,每個(gè)任務(wù)都有自己獨(dú)立的寄存器和??臻g。

      任務(wù)看起來就像一個(gè)無限循環(huán)永不返回的函數(shù),但是不同于函數(shù)的是,它有一套自己的內(nèi)存空間,運(yùn)行時(shí)完全占用處理器資源,在任意確定的時(shí)刻都處于休眠、就緒、運(yùn)行、掛起以及中斷服務(wù)這五種狀態(tài)之一 圖見書上337

      第六章

      uCLinux與標(biāo)準(zhǔn)Linux的最大區(qū)別就在于內(nèi)存管理。標(biāo)準(zhǔn)Linux是針對(duì)有MMU的處理器設(shè)計(jì)的

      uCLinux不使用虛擬內(nèi)存管理技術(shù),采用的是實(shí)存儲(chǔ)器管理策略,也就是說uCLinux系統(tǒng)對(duì)內(nèi)存的訪問是直接的

      uCLinux與標(biāo)準(zhǔn)Linux系統(tǒng)在進(jìn)程的創(chuàng)建

      進(jìn)程的執(zhí)行

      進(jìn)程的終止

      上有著顯著不同 基于uCLinux操作系統(tǒng)的應(yīng)用開發(fā)環(huán)境一般是由目標(biāo)系統(tǒng)硬件開發(fā)板和宿主PC機(jī)所構(gòu)成。目標(biāo)硬件開發(fā)板用于運(yùn)行操作系統(tǒng)和系統(tǒng)應(yīng)用軟件,而目標(biāo)板所用到的操作系統(tǒng)的內(nèi)核編譯、電子詞典應(yīng)用程序的開發(fā)和調(diào)試則需要通過宿主PC機(jī)來完成。目標(biāo)板用來進(jìn)行內(nèi)核編譯

      PC機(jī)用來進(jìn)行調(diào)試

      移植就是使一個(gè)實(shí)時(shí)操作系統(tǒng)能夠在某個(gè)微處理器平臺(tái)上或者微控制器上運(yùn)行。uCLinux移植包括3個(gè)層次的移植: 處理器結(jié)構(gòu)層次移植、芯片層次移植、板級(jí)移植。

      移植思路:開發(fā)環(huán)境確定以后,首先,要為uCLinux設(shè)計(jì)一個(gè)BootLoader,通過BootLoader來初始化硬件,引導(dǎo)uCLinux運(yùn)行。BootLoader的設(shè)計(jì)可以在ads中或者Linux中實(shí)現(xiàn)。其次,針對(duì)硬件環(huán)境和設(shè)計(jì)的BootLoader修改uClinux內(nèi)核。最后,在交叉編譯環(huán)境下配置、編譯、鏈接uClinux,下載編譯得到的印象文件到FLASH,通過BootLoader來啟動(dòng)uCLinux。如果參數(shù)默認(rèn)或者無參數(shù),則先執(zhí)行BootLoader,否則BootLoader第二位,參數(shù)執(zhí)行為第一位。

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

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

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

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

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

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

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

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

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

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

      第四篇:嵌入式系統(tǒng)設(shè)計(jì)報(bào)告

      嵌入式系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告

      班 級(jí):學(xué) 號(hào):姓 名:成 績(jī):指導(dǎo)教師:

      20090612 2009112107 侯金鐘 武俊鵬、劉書勇 1.實(shí)驗(yàn)一

      1.1 實(shí)驗(yàn)名稱

      嵌入式系統(tǒng)硬件開發(fā)環(huán)境

      1.2 實(shí)驗(yàn)?zāi)康?/p>

      1.熟悉UP-net3000實(shí)驗(yàn)平臺(tái)。

      2.超級(jí)終端設(shè)置及BIOS 功能使用。

      1.3 實(shí)驗(yàn)環(huán)境

      硬件:ARM 嵌入式開發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。

      軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。

      1.4 實(shí)驗(yàn)內(nèi)容及要求

      熟悉UP-net3000實(shí)驗(yàn)平臺(tái)的硬件電路和外設(shè),ARM JTAG的安裝和使用,利用超級(jí)終端檢驗(yàn)外設(shè)的工作狀態(tài)。

      1.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      1.建立工程

      (1)運(yùn)行ARM SDT 2.5 集成開發(fā)環(huán)境(ARM Project Manager).(2)在新建的工程中,如圖1A-2 所示,選中工程樹的“根部”。

      (3)因?yàn)殚_發(fā)板上的嵌入式處理器ARM7TDMI 沒有浮點(diǎn)處理器,所以,如圖1A-3 所

      示,在彈出的對(duì)話框中設(shè)置Floating Point Processor 為none,并保持其他的設(shè)置不變。(4)選中工程樹的“根部”,通過菜單Project | Tool Configuration for work1.apj | asmlink | Set,對(duì)整個(gè)工程的連接方式進(jìn)行設(shè)置。(5)在彈出的對(duì)話框中,選中Entry and Base 標(biāo)簽,如圖1A-4 所示,設(shè)置連接的Read-Only(只讀)和Read-Write(讀寫)地址。

      (6)選擇Linker Configuration 的ImageLayout 標(biāo)簽,(7)選擇Project | Edit Project Tamplete 菜單,彈出Project Template Editor 對(duì)話框。

      (8)選擇Project | Edit Variables for work1.apj,彈出Edit Variables for work1.apj 對(duì)話框。

      2.進(jìn)行程序的在線仿真、調(diào)試

      1.6 實(shí)驗(yàn)過程與分析

      熟悉UP-net3000實(shí)驗(yàn)平臺(tái)的硬件電路和外設(shè),安裝了ARM JTAG,利用超級(jí)終端檢驗(yàn)了外設(shè)的工作狀態(tài)。

      1.7 實(shí)驗(yàn)結(jié)果總結(jié)

      軟件安裝成功,結(jié)果顯示正常。

      1.8 心得體會(huì)

      通過此次試驗(yàn),我對(duì)ARM的環(huán)境的功能有一定的了解與完善。對(duì)試驗(yàn)臺(tái)有了基本的認(rèn)識(shí)與使用。

      2.實(shí)驗(yàn)二

      2.1 實(shí)驗(yàn)名稱

      嵌入式系統(tǒng)軟件開發(fā)環(huán)境

      2.2 實(shí)驗(yàn)?zāi)康?/p>

      1.熟悉ADS1.2 開發(fā)環(huán)境,學(xué)會(huì)ARM 仿真器的使用。

      2.使用ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,了解嵌入式開發(fā)的基本思想和過程。

      2.3 實(shí)驗(yàn)環(huán)境

      硬件:ARM 嵌入式開發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。

      軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。

      2.4 實(shí)驗(yàn)內(nèi)容及要求

      本次實(shí)驗(yàn)使用ADS 集成開發(fā)環(huán)境。新建一個(gè)簡(jiǎn)單的工程文件,并編譯這個(gè)工程文件。學(xué)習(xí)ARM 仿真器的使用和開發(fā)環(huán)境的設(shè)置。下載已經(jīng)編譯好的文件到嵌入式控制器中運(yùn)行。學(xué)會(huì)在程序中設(shè)置斷點(diǎn),觀察系統(tǒng)內(nèi)存和變量。

      2.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      (1)運(yùn)行ADS1.2 集成開發(fā)環(huán)境(CodeWarrior for ARM Developer Suite)。

      (2)在新建的工程中,選擇Debug 版本,使用Edit | Debug Settings菜單對(duì)Debug 版本進(jìn)行參數(shù)設(shè)置。(3)在Debug Settings 對(duì)話框中選擇Target Settings 項(xiàng)。在Post-linker一欄中選擇ARM from ELF。

      (4)在Debug Settings 對(duì)話框中選擇ARM Linker 項(xiàng)

      (5)在第四步中如果選擇簡(jiǎn)單的地址連接設(shè)置,在Debug Settings 對(duì)話框中選擇ARM Linker 項(xiàng)

      (6)回到的工程窗口中,選擇Release 版本,使用Edit | Release Settings 菜單對(duì)Release 版本進(jìn)行參數(shù)設(shè)置。(7)參照第(3)、(4)、(5)、(6)步在Release Settings 對(duì)話框中設(shè)置Release版本的Post-linker、連接地址范圍、入口模塊和輸出文件。(8)回到如圖1B-3 所示的工程窗口中,選擇Targets 選項(xiàng)卡,如圖1B-11 所示。選中DebugRel 版本,按Del 鍵將其刪除。DebugRel 子樹是一個(gè)折衷版本,通常用不到,所以在這里刪除。

      2.6 實(shí)驗(yàn)過程與分析

      1)回到工程窗口選中Debug 版本,執(zhí)行菜單Project | Make 對(duì)工程進(jìn)行編譯連接。(2)在ADS 中執(zhí)行菜單Project | Debug 啟動(dòng)ADS1.2 的調(diào)試工具AXD。(3)在AXD 中執(zhí)行菜單Options | Configure Target 對(duì)AXD 進(jìn)行設(shè)置。(4)點(diǎn)Select 按鈕選擇遠(yuǎn)程連接為ARM ethernet driver,點(diǎn)Configure 按鈕輸入仿真器的IP 地址。

      (5)等待程序裝載完畢以后,通過Execute | Go 菜單以及Execute | Stop(或者工具欄中的相應(yīng)按鈕)運(yùn)行或暫停程序。程序暫停后在窗口中將顯示出程序暫停的位置。(6)通過Execute | Step 菜單(或者工具欄中的相應(yīng)按鈕)可以單步運(yùn)行程序。

      (7)程序停止后可以通過Processor Views | Sources 菜單查看源文件,并可在適當(dāng)位置按F9 設(shè)置端點(diǎn)。

      (8)使用在Processor View 菜單下的Registers、Variables 和Memory 命令可以查看工作寄存器或者內(nèi)存變量。讀者可以逐一地嘗試,為以后調(diào)試程序打下基礎(chǔ)。

      2.7 實(shí)驗(yàn)結(jié)果總結(jié)

      超級(jí)終端輸出“Hello World!”。

      2.8 心得體會(huì)

      基本了解了ADS1.2的配置條件,學(xué)會(huì)了ARM仿真器的使用方法。

      3.實(shí)驗(yàn)三

      3.1 實(shí)驗(yàn)名稱

      鍵盤及LED實(shí)驗(yàn)

      3.2 實(shí)驗(yàn)?zāi)康?/p>

      1.學(xué)習(xí)鍵盤及LED 驅(qū)動(dòng)原理。

      2.掌握ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驅(qū)動(dòng)17鍵的鍵盤和8個(gè)共陰極LED。

      3.3 實(shí)驗(yàn)環(huán)境

      硬件:ARM 嵌入式開發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。

      軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。

      3.4 實(shí)驗(yàn)內(nèi)容及要求

      通過ZLG7289芯片驅(qū)動(dòng)17鍵的鍵盤和8個(gè)共陰極LED,將按鍵值在LED上顯示出來。要求從右至左循環(huán)顯示至少四位數(shù)字。

      基本功能實(shí)現(xiàn)之后可考慮實(shí)現(xiàn)從左至右顯示四位及四位以上數(shù)字(最大八位),并可設(shè)置清零鍵等擴(kuò)展功能。

      3.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      利用所給的基礎(chǔ)代碼進(jìn)行調(diào)試,觀察輸出結(jié)果,結(jié)合指導(dǎo)書和教材掌握基本原理和源代碼的編寫方式。根據(jù)實(shí)驗(yàn)的要求設(shè)計(jì)函數(shù)流程,并反復(fù)調(diào)試,實(shí)現(xiàn)功能。1.新建工程,將“Exp3 鍵盤及LED 驅(qū)動(dòng)實(shí)驗(yàn)”中的文件添加到工程。2.定義ZLG7289 寄存器(ZLG7289.h)

      #define ZLG7289_CS(0x20)//GPB5 #define ZLG7289_KEY(0x10)//GPG4 #define ZLG7289_ENABLE()do{ZLG7289SIOBand=rSBRDR;ZLG7289SIOCtrl=rSIOCON;rSIOCON=0x31;rSBRDR=0xff;rPDATB&=(~ZLG7289_CS);}while(0)#define ZLG7289_DISABLE()do{rPDATB|=ZLG7289_CS;rSBRDR=ZLG7289SIOBand;rSIOCON=ZLG7289SIOCtrl;}while(0)3.編寫ZLG7289 驅(qū)動(dòng)函數(shù)(ZLG7289.c)4.定義鍵盤映射表:(Keyboard16.c)

      unsigned char KeyBoard_Map[]= {4,8,11,0,0,0,0,0,5,9,12,15,1,0,0,0,6,10,13,16,2,3,0,0,7,0,14,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//64 鍵值映射表,通過查找鍵盤映射表來確定鍵盤掃描碼對(duì)應(yīng)的按鍵值。

      5.定義鍵值讀取函數(shù)。(Keyboard16.c)6.編寫主函數(shù),將按鍵值在數(shù)碼管上顯示。

      3.6 實(shí)驗(yàn)過程與分析

      利用鍵盤驅(qū)動(dòng)函數(shù)實(shí)現(xiàn)基本數(shù)字輸入,然后利用循環(huán)左移函數(shù)實(shí)現(xiàn)輸入數(shù)字做一樣功能,并通過改變函數(shù)中相應(yīng)delay的值來消除鍵盤按鍵帶來的抖動(dòng)。

      3.7 實(shí)驗(yàn)結(jié)果總結(jié)

      按鍵值可以在LED上顯示出來。要求從右至左循環(huán)顯示八位數(shù)字,同時(shí)可以復(fù)位清零。達(dá)到實(shí)驗(yàn)的效果。

      3.8 心得體會(huì)

      通過本次實(shí)驗(yàn),我了解了LED的顯示屏幕的數(shù)字的移位功能,這個(gè)功能不止可以用一個(gè)方法實(shí)現(xiàn),而循環(huán)左移是其中比較巧妙且省力的一種,在遇到類似情況的時(shí)候,可以優(yōu)先考慮能不能利用到文件中已經(jīng)存在的函數(shù),這樣可以不必自己編寫函數(shù),省時(shí)省力。是一種可靠的方法。4.實(shí)驗(yàn)四

      4.1 實(shí)驗(yàn)名稱

      電機(jī)轉(zhuǎn)動(dòng)控制及中斷實(shí)驗(yàn)

      4.2 實(shí)驗(yàn)?zāi)康?/p>

      1.熟悉ARM本身自帶的六路即三對(duì)PWM,掌握相應(yīng)寄存器的配置。

      2.編程實(shí)現(xiàn)ARM系統(tǒng)的PWM輸出和I/O輸出,前者用于控制直流電機(jī),后者用于控制步進(jìn)電機(jī)。

      3.了解直流電機(jī)和步進(jìn)電機(jī)的工作原理,學(xué)會(huì)用軟件的方法實(shí)現(xiàn)步進(jìn)電機(jī)的脈沖分配,即用軟件的方法代替硬件的脈沖分配器。

      4.了解44B0處理器上中斷的應(yīng)用。5.學(xué)習(xí)在44B0處理器上中斷的應(yīng)用。

      6.進(jìn)一步熟悉平臺(tái)外圍硬件及其驅(qū)動(dòng)程序的編寫。

      4.3 實(shí)驗(yàn)環(huán)境

      硬件:ARM 嵌入式開發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。

      軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。

      4.4 實(shí)驗(yàn)內(nèi)容及要求

      1.學(xué)習(xí)步進(jìn)電機(jī)和直流電機(jī)的工作原理,了解實(shí)現(xiàn)兩個(gè)電機(jī)轉(zhuǎn)動(dòng)對(duì)于系統(tǒng)的軟件和硬件要求。學(xué)習(xí)ARM 知識(shí),掌握 PWM 的生成方法,同時(shí)也要掌握 I/O的控制方法。

      2.編程實(shí)現(xiàn)ARM芯片的一對(duì)PWM輸出用于控制直流電機(jī)的轉(zhuǎn)動(dòng),通過A/D旋鈕控制其轉(zhuǎn)動(dòng)方式。

      3.編程實(shí)現(xiàn)ARM的四路I/O通道,實(shí)現(xiàn)環(huán)形脈沖分配用于控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng),通過A/D旋鈕控制步進(jìn)電機(jī)的轉(zhuǎn)角。

      4.通過鍵盤控制直流電機(jī)與步進(jìn)電機(jī)的切換。5.設(shè)置并啟動(dòng)定時(shí)器。

      6.設(shè)置中斷,編寫定時(shí)器中斷服務(wù)程序,對(duì)中斷次數(shù)進(jìn)行計(jì)數(shù)并在LED上顯示結(jié)果。

      4.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      1.添加并打開工程。

      2.進(jìn)行直流電機(jī)初始化設(shè)置和代碼編寫。3.進(jìn)行步進(jìn)電機(jī)初始化設(shè)置和代碼編寫。

      4.對(duì)Timer3編程,編寫定時(shí)器中斷服務(wù)程序,完成對(duì)中斷次數(shù)的計(jì)數(shù)。5.編寫LED計(jì)數(shù)顯示函數(shù),使LED能正確計(jì)數(shù)并顯示0-9999。6.編寫中斷初始化函數(shù)和中斷響應(yīng)函數(shù)。7.終端下載測(cè)試。

      4.6 實(shí)驗(yàn)過程與分析 1.對(duì)直流電機(jī)進(jìn)行編程和測(cè)試,掌握轉(zhuǎn)速和旋轉(zhuǎn)方向的設(shè)定方法。

      2.對(duì)步進(jìn)電機(jī)進(jìn)行編程和測(cè)試,掌握ARM的四路I/O通道,實(shí)現(xiàn)環(huán)形脈沖分配用于控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng),通過A/D旋鈕控制步進(jìn)電機(jī)的轉(zhuǎn)角。

      3.對(duì)主函數(shù)進(jìn)行編程,用鍵盤響應(yīng)直流電機(jī)與步進(jìn)電機(jī)的切換控制。

      4.掌握中斷相關(guān)語句的應(yīng)用,弄清定義的中斷向量、中斷向量號(hào),編寫中斷響應(yīng)函數(shù),并完成中斷響應(yīng)控制。

      4.7 實(shí)驗(yàn)結(jié)果總結(jié)

      實(shí)現(xiàn)了直流電機(jī)與步進(jìn)電機(jī)的基本設(shè)置和控制,可以通過鍵盤控制電機(jī)之間的切換。完成了中斷的響應(yīng)和定時(shí)中斷。當(dāng)對(duì)其中一個(gè)旋鈕轉(zhuǎn)動(dòng)時(shí),就可以由直流電機(jī)轉(zhuǎn)換成步進(jìn)電機(jī)的轉(zhuǎn)換,達(dá)到實(shí)驗(yàn)的效果。

      4.8 心得體會(huì)

      通過本次實(shí)驗(yàn),我了解了直流電機(jī)和步進(jìn)電機(jī)的工作原理,同時(shí)也知曉了電機(jī)間的轉(zhuǎn)換過程,了解其中的道理內(nèi)涵,熟悉了ARM自帶的A/D轉(zhuǎn)換器的工作原理及編程方法,了解了中斷的意義和實(shí)現(xiàn)方法,實(shí)現(xiàn)了簡(jiǎn)單了中斷處理程序。同時(shí)我也收獲了很多關(guān)于ARM處理機(jī)的相關(guān)知識(shí)。

      5.實(shí)驗(yàn)五

      5.1 實(shí)驗(yàn)名稱

      觸摸屏驅(qū)動(dòng)實(shí)驗(yàn)

      5.2 實(shí)驗(yàn)?zāi)康?/p>

      1.了解觸摸屏的基本概念與原理。

      2.理解觸摸屏與LCD的關(guān)系。3.編程實(shí)現(xiàn)對(duì)觸摸屏的控制。

      4.熟悉用 ARM 內(nèi)置的 LCD控制器驅(qū)動(dòng) LCD。

      5.3 實(shí)驗(yàn)環(huán)境

      硬件:ARM 嵌入式開發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。

      軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。

      5.4 實(shí)驗(yàn)內(nèi)容及要求

      1.了解觸摸屏基本原理,理解對(duì)觸摸屏進(jìn)行輸出標(biāo)定、與LCD顯示器配合的過程。2.通過編程實(shí)現(xiàn)觸摸兩點(diǎn)自動(dòng)在兩點(diǎn)間劃直線。3.通過編程實(shí)現(xiàn)在觸摸屏上動(dòng)態(tài)畫出曲線。5.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      1.添加并打開工程。

      2.在頭文件中定義宏和常量及驅(qū)動(dòng)函數(shù)。

      #define ADS7843_CTRL_START 0x80 #define ADS7843_GET_X 0x50 #define ADS7843_GET_Y 0x10 #define ADS7843_CTRL_12MODE 0x0 #define ADS7843_CTRL_8MODE 0x8 #define ADS7843_CTRL_SER 0x4 #define ADS7843_CTRL_DFR 0x0 #define ADS7843_CTRL_DISPWD 0x3 // Disable power down #define ADS7843_CTRL_ENPWD 0x0 // enable power down #define ADS7843_PIN_CS(1<<6)//GPF6 #define ADS7843_PIN_PEN(1<<5)//GPG5 /////////觸摸屏動(dòng)作//////// #define TCHSCR_ACTION_NULL 0 #define TCHSCR_ACTION_CLICK 1 //觸摸屏單擊 #define TCHSCR_ACTION_DBCLICK 2 //觸摸屏雙擊 #define TCHSCR_ACTION_DOWN 3 //觸摸屏按下 #define TCHSCR_ACTION_UP 4 //觸摸屏抬起 #define TCHSCR_ACTION_MOVE 5 //觸摸屏移動(dòng)

      #define TCHSCR_IsPenNotDown()(rPDATG&ADS7843_PIN_PEN)(ADS7843_CTRL_START|ADS7843_GET_X|ADS7843_CTRL_12MODE |ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)//采樣x 軸電壓值,數(shù)據(jù)為12 位,參考電壓輸入模式為差分模式,允許省電模式

      #defineADS7843_CMD_Y(ADS7843_CTRL_START|ADS7843_GET_Y|ADS7843_CTRL_12MODE |ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)int TchScr_Xmax=1840,TchScr_Xmin=176, TchScr_Ymax=195,TchScr_Ymin=1910;//觸摸屏返回電壓值范圍 #defineADS7843_CMD_X 3.校準(zhǔn)觸摸屏坐標(biāo),進(jìn)行坐標(biāo)轉(zhuǎn)換。

      4.實(shí)現(xiàn)觸屏取點(diǎn)并顯示功能。

      將觸摸動(dòng)作及觸摸點(diǎn)坐標(biāo)在超級(jí)終端上顯示出來。5.實(shí)現(xiàn)兩點(diǎn)間自動(dòng)劃線功能。6.實(shí)現(xiàn)觸摸屏動(dòng)態(tài)劃線功能。

      可以使用TchScr_GetScrXY()函數(shù)(第三個(gè)參數(shù)為0)來獲得液晶屏的x、y 方向的電壓

      范圍,分別點(diǎn)觸摸屏有效面積的左上角和右下角,得到下列參數(shù):

      TchScr_Xmax=1840;TchScr_Xmin=176;TchScr_Ymax=195;TchScr_Ymin=1910;//此數(shù)值僅供參考,請(qǐng)以實(shí)際校對(duì)為準(zhǔn)

      5.6 實(shí)驗(yàn)過程與分析 1.在定義觸屏響應(yīng)功能的函數(shù)中對(duì)點(diǎn)擊觸屏進(jìn)行響應(yīng)函數(shù)的修改,在其中添加修改點(diǎn)顏色的函數(shù),修改得到的觸摸點(diǎn)的顏色,并顯示在LCD上。

      2.獲取第一個(gè)點(diǎn)坐標(biāo)并儲(chǔ)存,獲取第二個(gè)點(diǎn)坐標(biāo)并儲(chǔ)存,由編寫的劃線函數(shù)取得儲(chǔ)存的兩點(diǎn)間直線上所有點(diǎn)的坐標(biāo),并對(duì)其改變顏色,顯示在LCD上,即完成劃直線功能。

      3.將劃線函數(shù)應(yīng)用到響應(yīng)觸屏移動(dòng)消息的函數(shù)下,即可對(duì)連續(xù)獲得的觸摸坐標(biāo)進(jìn)行連續(xù)的畫短直線,連接成曲線,完成動(dòng)態(tài)劃線功能。

      5.7 實(shí)驗(yàn)結(jié)果總結(jié)

      了解了觸摸屏響應(yīng)動(dòng)作消息的函數(shù)的工作原理,通過修改實(shí)現(xiàn)了觸摸屏響應(yīng)不同動(dòng)作進(jìn)行畫點(diǎn)、劃線、動(dòng)態(tài)劃線的功能。驗(yàn)證觸摸屏的靈敏度的實(shí)驗(yàn)。

      5.8 心得體會(huì)

      通過這次實(shí)驗(yàn),我基本掌握了通過編程驅(qū)動(dòng)觸摸屏以及觸摸屏響應(yīng)時(shí)間,實(shí)現(xiàn)了觸摸屏對(duì)不同動(dòng)作消息的響應(yīng)。同時(shí)也知曉了在觸摸屏上的描點(diǎn)畫線的實(shí)現(xiàn),但是由于不知名的原因,描點(diǎn)畫線的誤差較大,位置偏差較大,同時(shí)觸摸屏有時(shí)會(huì)不靈敏,出現(xiàn)時(shí)好時(shí)壞的現(xiàn)象,但是由于我們的辛勤鉆研,最終克服了這個(gè)困難,實(shí)現(xiàn)了最后的觸摸屏的實(shí)現(xiàn)。

      6.實(shí)驗(yàn)六

      6.1 實(shí)驗(yàn)名稱

      UCOS-Ⅱ在ARM微處理器上的裁剪

      6.2 實(shí)驗(yàn)?zāi)康?/p>

      1.了解UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu)。

      2.掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實(shí)現(xiàn)方法。3.學(xué)習(xí)如何根據(jù)具體情況對(duì)UCOS-Ⅱ操作系統(tǒng)進(jìn)行裁剪。

      4.通過對(duì)UCOS-Ⅱ配置文件(OS_CFG.H)中相關(guān)的配置常量進(jìn)行設(shè)置,實(shí)現(xiàn)對(duì)UCOS-Ⅱ的裁剪。

      6.3 實(shí)驗(yàn)環(huán)境

      硬件:ARM 嵌入式開發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。

      軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。

      6.4 實(shí)驗(yàn)內(nèi)容及要求

      對(duì)UCOS-Ⅱ內(nèi)核進(jìn)行裁剪并移植到ARM7微處理器上。

      6.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟 1.按照要求,載入STARTUP目錄下文件,完成系統(tǒng)初始化、環(huán)境配置。2.載入U(xiǎn)COS-Ⅱ的全部源碼,與處理器架構(gòu)相關(guān)的文件位于arch目錄下。3.在os_cpu.h中編寫與處理器和編譯器相關(guān)的代碼。

      4.編寫os_cpu_c.c等6個(gè)與操作系統(tǒng)相關(guān)的函數(shù)。5.編寫os_cpu.asm等4個(gè)與處理器相關(guān)的函數(shù)。

      6.6 實(shí)驗(yàn)過程與分析

      按照實(shí)驗(yàn)步驟進(jìn)行,得到了需要的系統(tǒng)。

      6.7 實(shí)驗(yàn)結(jié)果總結(jié)

      按照要求進(jìn)行了裁剪,得到了滿足需要又緊湊的應(yīng)用軟件系統(tǒng)。

      6.8 心得體會(huì)

      通過本次實(shí)驗(yàn),我了解了UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu),掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實(shí)現(xiàn)方法,學(xué)會(huì)了如何根據(jù)具體情況對(duì)UCOS-Ⅱ操作系統(tǒng)進(jìn)行裁剪。

      7.實(shí)驗(yàn)七

      7.1 實(shí)驗(yàn)名稱

      UCOS-Ⅱ在ARM微處理器上的移植和編譯

      7.2 實(shí)驗(yàn)?zāi)康?/p>

      1.了解UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu)。

      2.掌握將UCOS-Ⅱ內(nèi)核移植到ARM7處理器上的基本方法。

      7.3 實(shí)驗(yàn)環(huán)境

      硬件:ARM 嵌入式開發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。

      軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。

      7.4 實(shí)驗(yàn)內(nèi)容及要求

      1.將UCOS-Ⅱ內(nèi)核進(jìn)行移植到ARM7微處理器上。

      2.編寫兩個(gè)簡(jiǎn)單任務(wù),在超級(jí)終端上觀察兩個(gè)任務(wù)的切換。

      7.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      1.該實(shí)驗(yàn)的文件分為兩類,其一是 STARTUP 目錄下的系統(tǒng)初始化、配置等文件,其二是 UCOS-Ⅱ的全部源碼,arch 目錄下的 3 個(gè)文件是和處理器架構(gòu)相關(guān)的。

      2.設(shè)置 os_cpu.h 中與處理器和編譯器相關(guān)的代碼。

      3.用 C 語言編寫 6 個(gè)操作系統(tǒng)相關(guān)的函數(shù)(OS_CPU_C.C)。4.用匯編語言編寫 4 個(gè)與處理器相關(guān)的函數(shù)(OS_CPU.ASM)。5.編寫一個(gè)簡(jiǎn)單的多任務(wù)程序來測(cè)試一下移植是否成功。6.編譯并下載移植后的 UCOS-Ⅱ。

      7.6 實(shí)驗(yàn)過程與分析

      1.按照實(shí)驗(yàn)步驟進(jìn)行,將μC/OS-II 內(nèi)核移植到了ARM7 微處理器上。2編寫了兩個(gè)簡(jiǎn)單任務(wù),在超級(jí)終端上觀察兩個(gè)任務(wù)的切換。

      7.7 實(shí)驗(yàn)結(jié)果總結(jié)

      將μC/OS-II 內(nèi)核順利移植到了ARM7 微處理器上。

      7.8 心得體會(huì)

      通過本次實(shí)驗(yàn),使我更加了解了μC/OS-II 內(nèi)核的主要結(jié)構(gòu),掌握了ARM的C語言和匯編語言的編程方法,了解了ARM7處理器結(jié)構(gòu),掌握了將μC/OS-II 內(nèi)核移植到ARM 7 處理器上的基本原理與嵌入式編程實(shí)現(xiàn)方法。

      8.實(shí)驗(yàn)八

      8.1 實(shí)驗(yàn)名稱

      綜合實(shí)驗(yàn)

      8.2 實(shí)驗(yàn)?zāi)康?/p>

      對(duì)前七次實(shí)驗(yàn)進(jìn)行總結(jié),應(yīng)用之前所學(xué)的知識(shí),將前幾次實(shí)驗(yàn)內(nèi)容結(jié)合起來,完成鍵盤,LED,觸摸屏,直流電機(jī),步進(jìn)電機(jī)各種功能的組合。實(shí)現(xiàn)一個(gè)較為全面的功能結(jié)構(gòu)。

      8.3 實(shí)驗(yàn)環(huán)境

      硬件:ARM 嵌入式開發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。

      軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。

      8.4 實(shí)驗(yàn)內(nèi)容及要求

      對(duì)前七次實(shí)驗(yàn)進(jìn)行總結(jié),應(yīng)用之前所學(xué)的知識(shí),完成自擬的嵌入式系統(tǒng),要求綜合前期基礎(chǔ)實(shí)驗(yàn)的各種功能。

      8.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟

      1.添加并打開工程。2.進(jìn)行LCD設(shè)計(jì),在LCD顯示屏輸出文本。

      3.進(jìn)行LED及鍵盤設(shè)計(jì),完成LED輸出顯示功能和鍵盤輸入功能。4.進(jìn)行電機(jī)控制設(shè)計(jì),完成鍵盤控制電機(jī)轉(zhuǎn)動(dòng)功能。5.進(jìn)行中斷設(shè)計(jì),完成定時(shí)中斷功能。

      6.進(jìn)行觸摸屏設(shè)計(jì),完成觸摸屏感應(yīng)和劃線功能。7.進(jìn)行裁剪和移植功能設(shè)計(jì)和完成。

      8.6 實(shí)驗(yàn)過程與分析

      1.完成LCD顯示功能,在LCD顯示屏上輸出文本:“Hello World!”。2.進(jìn)入界面觸屏控制選擇功能,實(shí)現(xiàn)觸屏選擇功能。

      3.自定義四種種功能,第一為電機(jī)控制,從鍵盤讀取命令,并將功能編號(hào)顯示在LED上,LED顯示的是計(jì)數(shù)的數(shù)據(jù),同時(shí)旋轉(zhuǎn)按鈕完成電機(jī)轉(zhuǎn)速的控制選擇。

      4.第三種功能為劃線,功能編號(hào)顯示在LED高四位上,同時(shí)LCD屏幕清屏,為劃線功能做準(zhǔn)備,可以實(shí)現(xiàn)劃線功能。

      5.第四種功能為定時(shí)中斷,當(dāng)由鍵盤控制時(shí),LED顯示數(shù)值清零,實(shí)現(xiàn)了中斷。6.實(shí)現(xiàn)裁剪與移植功能。

      8.7 實(shí)驗(yàn)結(jié)果總結(jié)

      完成了各種基本功能,并通過自擬的系統(tǒng)將各種功能整合起來,完成了一個(gè)小的嵌入式系統(tǒng),對(duì)前七次的功能有了更深入的了解。通過LED的計(jì)數(shù),當(dāng)在計(jì)數(shù)值在前30秒之內(nèi),由鍵盤控制LED的數(shù)值及顯示,按鍵盤上的某一個(gè)按鍵,實(shí)現(xiàn)對(duì)LED上的數(shù)值清零,后30秒由觸摸屏控制清零,并且在前30秒之內(nèi),旋轉(zhuǎn)按鈕,實(shí)現(xiàn)對(duì)直流電機(jī)的運(yùn)轉(zhuǎn),并且到步進(jìn)電機(jī)的轉(zhuǎn)換。

      8.8 心得體會(huì)

      通過這次實(shí)驗(yàn),我更加深刻地掌握了前幾次實(shí)驗(yàn)中的基本功能的實(shí)現(xiàn)方法,并且把幾種功能聯(lián)合在一起,實(shí)現(xiàn)一些功能,把LED 顯示屏,LCD觸摸屏,鍵盤,直流電機(jī),步進(jìn)電機(jī)等等設(shè)備聯(lián)合在一起,對(duì)該實(shí)驗(yàn)有一定的幫助與提高,而我和我的隊(duì)友也對(duì)嵌入式系統(tǒng)有了更深入的了解,在此期間,也學(xué)習(xí)了關(guān)于ARM處理器的開發(fā)與實(shí)踐,了解了關(guān)于手機(jī)的嵌入式設(shè)備的產(chǎn)生過程,我也深深的對(duì)此充滿了興趣,對(duì)未來的嵌入式課程設(shè)計(jì)奠定了深厚的基礎(chǔ),可是令我遺憾的是,我和隊(duì)員的水平所限,沒有完成中斷優(yōu)先級(jí)的控制。本來想完成更多的功能,可是最后由于時(shí)間緊迫,也有一些其他的事情來分神分心,所以就只能完成這些,但是在未來的幾周內(nèi),嵌入式課程設(shè)計(jì)也給了我們很大的空間去做未完成的事情。我相信我們會(huì)做的更加完美,功能更強(qiáng)大,用于未來的生活中去實(shí)踐。

      第五篇:《嵌入式系統(tǒng)設(shè)計(jì)》教學(xué)大綱

      《嵌入式系統(tǒng)設(shè)計(jì)》課程教學(xué)大綱

      嵌入式系統(tǒng)設(shè)計(jì)(Design of Embedded Systems)

      一、課程教學(xué)目的和基本要求

      教學(xué)目的:

      嵌入式系統(tǒng)技術(shù)已被廣泛地應(yīng)用于工業(yè)控制系統(tǒng)、信息家電、通信設(shè)備、醫(yī)療儀器、智能儀器儀表等眾多領(lǐng)域。如手機(jī)、PDA、MP3、手持設(shè)備、智能電話、機(jī)頂盒等,可以說嵌入式系統(tǒng)無處不在。本課程講述當(dāng)前主流的嵌入式處理器—ARM的微處理器和實(shí)時(shí)操作系統(tǒng)μC/OS,介紹嵌入式系統(tǒng)的基本原理和應(yīng)用及設(shè)計(jì)方法。通過本課程的學(xué)習(xí),著重培養(yǎng)學(xué)生的實(shí)際動(dòng)手能力,使學(xué)生掌握ARM的系統(tǒng)結(jié)構(gòu)、指令系統(tǒng)、程序設(shè)計(jì)方法、系統(tǒng)擴(kuò)展方法、應(yīng)用及開發(fā)技術(shù)等。使學(xué)生在工作中具有利用嵌入式系統(tǒng)開發(fā)產(chǎn)品和解決實(shí)際問題的基本能力。

      基本要求:

      1、掌握嵌入式系統(tǒng)技術(shù)的基本原理。

      2、了解并掌握ARM的系統(tǒng)結(jié)構(gòu)、指令系統(tǒng)、程序設(shè)計(jì)方法、系統(tǒng)擴(kuò)展方法、應(yīng)用及開發(fā)技術(shù)等。

      3、比較熟練地用ADS進(jìn)行ARM實(shí)驗(yàn)箱的編程及調(diào)試。

      4、了解并掌握實(shí)時(shí)操作系統(tǒng)μC/OS,并學(xué)會(huì)用μC/OS開發(fā)小型應(yīng)用系統(tǒng)。

      二、先修課程及本課程總學(xué)時(shí)

      先修課程:C程序設(shè)計(jì)語言、單片機(jī)原理 本課程總學(xué)時(shí):36

      三、課程章節(jié)及各章節(jié)學(xué)時(shí)安排

      第一章 嵌入式系統(tǒng)概述(2學(xué)時(shí))

      第二章 嵌入式系統(tǒng)硬件基礎(chǔ)(2學(xué)時(shí))

      第三章 設(shè)計(jì)方法及ADS集成開發(fā)環(huán)境(4學(xué)時(shí))

      第一節(jié) 嵌入式系統(tǒng)的設(shè)計(jì)方法(2學(xué)時(shí))第二節(jié) ADS集成開發(fā)環(huán)境(2學(xué)時(shí))第四章 ARM7體系結(jié)構(gòu)(4學(xué)時(shí))

      第一節(jié)ARM7體系結(jié)構(gòu)介紹(2學(xué)時(shí))第二節(jié)ARM7TDMI(-S)指令集簡(jiǎn)介。(2學(xué)時(shí))第五章 ARM指令集(8學(xué)時(shí))

      第一節(jié) ARM處理器尋址方式。(2學(xué)時(shí))第二節(jié)ARM指令集。(2學(xué)時(shí))第三節(jié)ARM匯編程序設(shè)計(jì)。(2學(xué)時(shí))第四節(jié)C與匯編混合編程。(2學(xué)時(shí))第六章 硬件結(jié)構(gòu)與功能(12學(xué)時(shí))第一節(jié) LPC2106/2105/2104結(jié)構(gòu)(2學(xué)時(shí))第二節(jié) GPIO及引腳連接模塊。(2學(xué)時(shí))

      第三節(jié) UART0和UART1、I2C接口、SPI接口。(2學(xué)時(shí))第四節(jié) 定時(shí)器0和定時(shí)器1。(2學(xué)時(shí))第五節(jié) 脈寬調(diào)制器(PWM)。(2學(xué)時(shí))

      第六節(jié) 看門狗及Flash存儲(chǔ)器系統(tǒng)和編程。(2學(xué)時(shí))第七章 μC/0S-II程序設(shè)計(jì)(4學(xué)時(shí))

      第一節(jié) μC/0S-II簡(jiǎn)介及移植(2學(xué)時(shí))第二節(jié) 移植μC/0S-II。(2學(xué)時(shí))

      四、課程主要內(nèi)容

      第一章 嵌入式系統(tǒng)概述(2學(xué)時(shí))

      1、嵌入式系統(tǒng)簡(jiǎn)介(包括什么是嵌入式系統(tǒng),嵌入式系統(tǒng)的特點(diǎn),嵌入式系統(tǒng)的分類)。

      2、嵌入式系統(tǒng)的應(yīng)用領(lǐng)域。

      3、嵌入式系統(tǒng)的現(xiàn)狀和發(fā)展趨勢(shì)。

      4、嵌入式微處理器和嵌入式操作系統(tǒng)。

      5、嵌入式系統(tǒng)中的一些重要概念。難點(diǎn):什么是嵌入式系統(tǒng)。

      第二章 嵌入式系統(tǒng)硬件基礎(chǔ)(2學(xué)時(shí))

      1、嵌入式系統(tǒng)的總體結(jié)構(gòu)。

      2、與嵌入式系統(tǒng)相關(guān)的硬件知識(shí)。難點(diǎn):總體結(jié)構(gòu)。

      第三章 設(shè)計(jì)方法及ADS集成開發(fā)環(huán)境(4學(xué)時(shí))第一節(jié) 嵌入式系統(tǒng)的設(shè)計(jì)方法

      包括嵌入式系統(tǒng)的設(shè)計(jì)流程,嵌入式系統(tǒng)的一般設(shè)計(jì)方法,嵌入式系統(tǒng)的硬件/軟件協(xié)同設(shè)計(jì)技術(shù)。第二節(jié) ADS集成開發(fā)環(huán)境

      1、ADS 1.2 集成開發(fā)環(huán)境的組成

      2、工程的編輯

      3、工程的調(diào)試

      4、仿真器的安裝與應(yīng)用 難點(diǎn):調(diào)試、仿真器。

      第四章 ARM7體系結(jié)構(gòu)(4學(xué)時(shí))第一節(jié)ARM7體系結(jié)構(gòu)介紹

      1、處理器模式。

      2、內(nèi)部寄存器。

      3、程序狀態(tài)寄存器。

      4、異常。

      第二節(jié)ARM7TDMI(-S)指令集簡(jiǎn)介。難點(diǎn):異常。

      第五章 ARM指令集(8學(xué)時(shí))第一節(jié) ARM處理器尋址方式。第二節(jié)ARM指令集。

      第三節(jié)ARM匯編程序設(shè)計(jì)。第四節(jié)C與匯編混合編程。難點(diǎn):ARM匯編程序設(shè)計(jì)。

      第六章 硬件結(jié)構(gòu)與功能(12學(xué)時(shí))第一節(jié) LPC2106/2105/2104結(jié)構(gòu)

      1、存儲(chǔ)器尋址。

      2、系統(tǒng)控制模塊。

      3、存儲(chǔ)器加速模塊。

      4、向量中斷控制器。

      第二節(jié) GPIO及引腳連接模塊。

      第三節(jié) UART0和UART1、I2C接口、SPI接口。第四節(jié) 定時(shí)器0和定時(shí)器1。第五節(jié) 脈寬調(diào)制器(PWM)。

      第六節(jié) 看門狗及Flash存儲(chǔ)器系統(tǒng)和編程。

      難點(diǎn):存儲(chǔ)器重新映射,編程實(shí)現(xiàn)功能部件的初始化和控制。本章實(shí)驗(yàn):LPC2106/2105/2104功能部件基礎(chǔ)實(shí)驗(yàn)。

      第七章 μC/0S-II程序設(shè)計(jì)(4學(xué)時(shí))第一節(jié) μC/0S-II簡(jiǎn)介及移植

      1、移植規(guī)則。

      2、編寫LPC2106/2105/2104的啟動(dòng)代碼。第二節(jié) 移植μC/0S-II。難點(diǎn):移植μC/0S-II。本章實(shí)驗(yàn):學(xué)習(xí)移植μC/0S-II。

      五、教材及主要參考書

      教材:

      《嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)》,馬文華,科學(xué)出版社,2006年

      主要參考書:

      [1] 田苗苗.嵌入式控制系統(tǒng).北京航空航天大學(xué)出版社,2002年 [2] 呂 駿 譯.嵌入式系統(tǒng)設(shè)計(jì).電子工業(yè)出版社,2002年

      [3] 周立功等.ARM微控制器基礎(chǔ)與實(shí)戰(zhàn).北京航空航天大學(xué)出版社,2003年

      [4] 李駒光等.ARM應(yīng)用系統(tǒng)開發(fā)祥解.清華大學(xué)出版社,2003年

      [5] 劭貝貝譯.uCOS-II-源代碼公開的實(shí)時(shí)嵌入式操作系統(tǒng).中國(guó)電力出版社,2001年 [6] 田苗苗.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā).清華大學(xué)出版社,2002年 [7] 袁勤勇等譯.嵌入式系統(tǒng)構(gòu)件.機(jī)械工業(yè)出版社,2002年 [8] 田苗苗.《實(shí)用嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)—基于ARM微處理器與μCOS-II實(shí)時(shí)操作系統(tǒng)》(第二版),清華大學(xué)出版社,2003.9 [9] 邵貝貝譯.《源代碼公開的實(shí)時(shí)嵌入式操作系統(tǒng)——μCOS-II》,北京航空航天大學(xué)出版社,2003年

      六、其他需要說明的情況

      1.采用多媒體教學(xué)。

      2.實(shí)驗(yàn)課單列,每周2學(xué)時(shí)。

      3.每周作業(yè)量2~3小時(shí),主要針對(duì)基本概念、開發(fā)環(huán)境的操作和編程。

      七、成績(jī)?cè)u(píng)定

      1.理論考核

      占60% 2.實(shí)踐考核

      占40%(其中包括:實(shí)驗(yàn)、作業(yè)、課堂提問、學(xué)生自行設(shè)計(jì)制作的作品)。

      下載基于嵌入式系統(tǒng)的圖形界面應(yīng)用設(shè)計(jì)范文word格式文檔
      下載基于嵌入式系統(tǒng)的圖形界面應(yīng)用設(shè)計(jì)范文.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為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)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        《嵌入式系統(tǒng)設(shè)計(jì)》教案

        嵌入式系統(tǒng)設(shè)計(jì)教案 課程總學(xué)時(shí): 32 講課學(xué)時(shí): 24 實(shí)驗(yàn)學(xué)時(shí): 8 授 課 人: 楊詞慧 南昌航空大學(xué)信息工程學(xué)院 目錄 1 嵌入式系統(tǒng)概述 ...............................................

        嵌入式系統(tǒng)設(shè)計(jì)中UML的應(yīng)用論文(大全)

        摘要:隨著計(jì)算機(jī)技術(shù)的發(fā)展,嵌入式系統(tǒng)被廣泛應(yīng)用到社會(huì)生產(chǎn)中。嵌入式計(jì)算機(jī)系統(tǒng)與普通的個(gè)人計(jì)算機(jī)系統(tǒng)存在很大區(qū)別,它具有節(jié)約成本、可靠性高等優(yōu)勢(shì),主要被用于工廠生產(chǎn)設(shè)備......

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

        μC/OS嵌入式實(shí)時(shí)操作系統(tǒng)的應(yīng)用和學(xué)習(xí)心得 μC/OS-II 是一種基于優(yōu)先級(jí)的搶占式多任務(wù)實(shí)時(shí)操作系統(tǒng),包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步(信號(hào)量,郵箱,消息......

        北航—嵌入式系統(tǒng)設(shè)計(jì)教學(xué)大綱

        《嵌入式系統(tǒng)設(shè)計(jì)》課程計(jì)劃 北航機(jī)器人研究所王田苗魏洪興 一、課程名稱:嵌入式系統(tǒng)設(shè)計(jì) 二、課程目的: 嵌入式系統(tǒng)技術(shù)已被廣泛地應(yīng)用于工業(yè)控制系統(tǒng)、信息家電、通信設(shè)備、......

        嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)總結(jié)報(bào)告

        嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ) 嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ) 結(jié)題報(bào)告 學(xué)生1: 學(xué)生2: 學(xué)生3: 組長(zhǎng): 組長(zhǎng)電話: 指導(dǎo)老師: 完成時(shí)間: 嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ) 目錄 目錄 ........................................

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

        《嵌入式系統(tǒng)原理及應(yīng)用》 結(jié)課論文 題目:此處寫論文題目 學(xué)姓專班成 號(hào) 名 業(yè) 級(jí) 績(jī) 此處填寫學(xué)號(hào) 此處填寫姓名 機(jī)械電子工程 格式如:1班 北京理工大學(xué)珠海學(xué)院機(jī)械與車輛學(xué)......

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

        結(jié)課論文要求 1、內(nèi)容要求:結(jié)合課程內(nèi)容,結(jié)合本專業(yè)及其研究方向,自選專題闡述嵌入式系統(tǒng)應(yīng)用技術(shù),主要包括所選專題概述、基于STM32處理器的硬件系統(tǒng)(框圖)和基于嵌入式操作系統(tǒng)(......

        嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告

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