嵌入式實習報告_第1頁
嵌入式實習報告_第2頁
嵌入式實習報告_第3頁
嵌入式實習報告_第4頁
嵌入式實習報告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

嵌入式系統(tǒng)實習匯報學院:計算機與信息學院專業(yè):電子信息工程班級:1111學號:111123姓名:王金民指導老師:嚴朝軍彭文標嵌入式系統(tǒng)開發(fā)與應(yīng)用概述在今日,嵌入式ARM技術(shù)已經(jīng)成為了一門比較熱門的學科,無論是在電子類的什么領(lǐng)域,你都可以看到嵌入式ARM的影子。假如你還停留在單片機級別的學習,那么實際上你已經(jīng)落下時代腳步了,ARM嵌入式技術(shù)正以幾何的倍數(shù)高速發(fā)展,它幾乎滲透到了幾乎你所想到的領(lǐng)域。由于嵌入式系統(tǒng)具有體積小、性能強、功耗低、可靠性高以及面向行業(yè)詳細應(yīng)用等突出特性,目前已經(jīng)廣泛地應(yīng)用于軍事國防、消費電子、信息家電、網(wǎng)絡(luò)通信、工業(yè)控制等各個領(lǐng)域。嵌入式的廣泛應(yīng)用可以說是無所不在。linux系統(tǒng)linux系統(tǒng)重要是由顧客空間和內(nèi)核空間再加上外部的硬件平臺構(gòu)成,顧客空間就是顧客應(yīng)用程序的運行空間,重要包括兩方面的內(nèi)容:顧客應(yīng)用程序和GNU

C

Library(glibc)。而內(nèi)核空間有三方面的內(nèi)容,一是系統(tǒng)調(diào)用接口,它作為顧客空間和內(nèi)核空間互相轉(zhuǎn)移的一種方式,二是內(nèi)核空間,三是體系有關(guān)內(nèi)核代碼,在linux內(nèi)核代碼中,可以看到arch目錄下有許多子目錄,其中每一種子目錄代表一種硬件平臺。

而為何要把linux系統(tǒng)劃分為顧客空間和內(nèi)核空間呢?重要是一旦顧客空間和內(nèi)核空間沒有分開,那顧客將擁有很大的權(quán)限去操控內(nèi)核或顧客應(yīng)用程序的瓦解將會導致系統(tǒng)的瓦解,而linux系統(tǒng)是運用cpu的模式分級來分別運行顧客空間和內(nèi)核空間,這樣就可以使操作系統(tǒng)得到充足的保護。而現(xiàn)代的cpu一般實現(xiàn)了不一樣的工作模式,以ARM處理器為例實現(xiàn)了7種運行模式,分別為:1)顧客模式(usr):ARM微處理器正常程序執(zhí)行模式2)系統(tǒng)模式(sys):運行具有特權(quán)的操作系統(tǒng)任務(wù)3)中斷模式(irq):用于通用的中斷處理4)外部中斷模式(fiq):用于高速數(shù)據(jù)傳播或通道處理5)數(shù)據(jù)訪問終止模式(abt):當數(shù)據(jù)或指令預取終止時進入該模式,可用于虛擬存儲及存儲保護6)管理模式(svc):操作系統(tǒng)使用的保護模式7)未定義指令中斷模式(und):當未定義的指令執(zhí)行時進入該模式,可用于支持硬件協(xié)處理器的軟件仿真ARM微處理器的運行模式可以通過軟件變化,也可以通過外部中斷或異常處理變化,除顧客模式外,其他模式都是非顧客模式或特權(quán)模式,除顧客模式和系統(tǒng)模式外,其他模式都是異常模式,常用于處理異常或中斷,以及需要訪問受保護的系統(tǒng)資源等狀況。同步顧客空間和內(nèi)核空間是程序執(zhí)行的兩種不一樣狀態(tài),通過系統(tǒng)調(diào)用和硬件中斷去實現(xiàn)顧客空間到內(nèi)核空間的轉(zhuǎn)移,系統(tǒng)調(diào)用是積極的,硬件中斷是被動的,例如鍵盤按下或者串口中斷。接下來說說linux的內(nèi)核架構(gòu),它重要是包括7大構(gòu)成部分1.內(nèi)存管理

內(nèi)存管理的重要作用是使多種進程能安全高效的共享內(nèi)存區(qū)域,一般使用如下兩個手段:①內(nèi)存映射:將物理內(nèi)存映射到虛擬內(nèi)存中,變有限為無限②有效管理:使用多種內(nèi)存管理算法(如伙伴算法),減少內(nèi)存揮霍2.虛擬文獻系統(tǒng)

vfs隱藏了多種文獻系統(tǒng)的詳細細節(jié),為文獻操作提供統(tǒng)一的接口3.網(wǎng)絡(luò)協(xié)議棧

它為linux提供了完善豐富的網(wǎng)絡(luò)協(xié)議實現(xiàn)4.進程管理

進程管理的重點是創(chuàng)立進程、停止進程,并控制它們之間的通信。進程管理還包括控制活動進程怎樣共享cpu,即進程調(diào)度。5.設(shè)備驅(qū)動

設(shè)備驅(qū)動也是內(nèi)核的一部分,它不一樣于內(nèi)核的其他部件,并且獨立于內(nèi)核的其他部件,同步它是與設(shè)備交互的唯一模塊,一般由第三方廠商開發(fā),一種驅(qū)動程序不與其他驅(qū)動程序交互;內(nèi)核與驅(qū)動程序之間也僅通過一種嚴格定義的接口交互。6.系統(tǒng)調(diào)用接口

SCI層為顧客空間提供了一套原則的系統(tǒng)調(diào)用函數(shù)來訪問Linux內(nèi)核,搭起了顧客空間到內(nèi)核空間的橋梁。7.體系有關(guān)部分

Linux內(nèi)核源代碼采用樹形構(gòu)造進行組織,非常合理地把功能有關(guān)的文獻都放在同一種子目錄下,使得程序更具可讀性。下面簡介下這些目錄的構(gòu)成arch目錄arch是architecture的縮寫。內(nèi)核所支持的每種CPU體系,在該目錄下均有對應(yīng)的子目錄。每個CPU的子目錄,又深入分解為boot,mm,kernel等子目錄,分別包括控制系統(tǒng)引導,內(nèi)存管理,系統(tǒng)調(diào)用等。其下子目錄有|

--x86

/*英特爾cpu及與之相兼容體系構(gòu)造的子目錄*/|

|--boot

/*引導程序*/|

|

|--compressed

/*內(nèi)核解壓縮*/|

|--tools

/*生成壓縮內(nèi)核映像的程序*/|

|--kernel

/*有關(guān)內(nèi)核特性實現(xiàn)方式,如信號處理、時鐘處理*/|

|--lib

/*硬件有關(guān)工具函數(shù)*/block目錄

部分塊設(shè)備驅(qū)動程序crypto目錄加密、壓縮、CRC校驗算法documentation內(nèi)核的文檔drivers目錄(重點)設(shè)備驅(qū)動程序fs目錄寄存多種文獻系統(tǒng)的實現(xiàn)代碼。每個子目錄對應(yīng)一種文獻系統(tǒng)的實現(xiàn),公用的源程序用于實現(xiàn)虛擬文獻系統(tǒng)vfs。|

|--devpts

/*

/dev/pts虛擬文獻系統(tǒng)*/|

|--ext2

/*第二擴展文獻系統(tǒng)*/|

|--fat

/*MS的fat32文獻系統(tǒng)*/|

|--isofs

/*ISO9660光盤cd-rom上的文獻系統(tǒng)*/include目錄

內(nèi)核所需要的頭文獻。與平臺無關(guān)的頭文獻在include/linux

子目錄下,與平臺有關(guān)的頭文獻則放在對應(yīng)的子目錄中。

init目錄內(nèi)核初始化代碼ipc目錄進程間通信的實現(xiàn)代碼kernel目錄Linux大多數(shù)關(guān)鍵的關(guān)鍵功能都是在這個目錄實現(xiàn)。(調(diào)度程序,進程控制,模塊化)lib目錄庫文獻代碼mm目錄mm目錄中的文獻用于實現(xiàn)內(nèi)存管理中與體系構(gòu)造無關(guān)的部分(與體系構(gòu)造有關(guān)的部分在哪里實現(xiàn)?arch)net目錄網(wǎng)絡(luò)協(xié)議的實現(xiàn)代碼|

|--802

/*802無線通訊協(xié)議關(guān)鍵支持代碼*/|

|--appletalk

/*與蘋果系統(tǒng)連網(wǎng)的協(xié)議*/|

|--ax25

/*AX25無線INTERNET協(xié)議*/|

|--bridge

/*橋接設(shè)備*/|

|--ipv4

/*IP協(xié)議族V4版32位尋址模式*/|

|--ipv6

/*IP協(xié)議族V6版*/samples某些內(nèi)核編程的范例scripts配置內(nèi)核的腳本securitySElinux的模塊sound音頻設(shè)備的驅(qū)動程序usrcpio命令實現(xiàn)virt內(nèi)核虛擬機Linux內(nèi)核的配置與編譯Linux內(nèi)核具有可定制的長處,配置內(nèi)核的目的是裁剪掉不必要的文獻和目錄,獲得一種最簡樸的又能滿足顧客開發(fā)的操作系統(tǒng),以解除嵌入式開發(fā)過程中所碰到的存儲空間有限的困擾。內(nèi)核配置與編譯的詳細環(huán)節(jié)如下:1.清除臨時文獻、中間文獻和配置文獻1)make

clean

Remove

most

generated

files

but

keep

the

config即清除大部分生成的文獻但保留配置文獻2)make

mrproper

Remove

all

generated

files

+

config

files即清除所有生成的文獻尚有配置文獻3)make

distclean

Mrproper

+

remove

editor

backup

and

patch

files即實現(xiàn)make

mrproper命令的同步刪除編輯器備份文獻和補丁文獻2.確定目的系統(tǒng)的軟硬件配置狀況,例如cpu類型,網(wǎng)卡型號,所需支持的網(wǎng)絡(luò)協(xié)議等。3.使用如下命令之一配置內(nèi)核:1)

make

config:基于文本模式的交互式配置2)make

menuconfig:基于文本模式的菜單型配置3)make

oldconfig:使用已經(jīng)有的配置文獻(.config),不過會問詢新增的配置選項4)make

xconfig:圖形化的配置(需安裝圖形化系統(tǒng))Make

menuconfig是最為常用的內(nèi)核配置方式

假如一種.config文獻已經(jīng)存在,它將使用該文獻設(shè)置那些默認的值4.編譯內(nèi)核

編譯內(nèi)核一般也需要幾種環(huán)節(jié),一是清除此前編譯通過的殘留文獻;二是編譯內(nèi)核image文獻和可加載模塊;三是安裝模塊。下面是編譯內(nèi)核的詳細環(huán)節(jié)。①make

dep

命令用在內(nèi)核2.4或之前,用于建立源文獻之間的依賴關(guān)系,在執(zhí)行內(nèi)核配置命令之后使用,不過在2.6內(nèi)核中已經(jīng)取消該命令,該功能由內(nèi)核配置命令實現(xiàn)。②make

clean

命令用于刪除前面留下來的中間文獻,該命令不會刪除.config等配置文獻。這個環(huán)節(jié)是可選的,它的目的是清除原先編譯過而殘留的.com和.o(obj文獻)。假如是剛下載的源代碼,那么這一步就可以省略了,不過假如已經(jīng)編譯多次內(nèi)核,這一步是必要的,否則背面也許會出現(xiàn)諸多莫名其妙的小問題。③make

zImage命令用于編譯生成壓縮形式的內(nèi)核鏡像,當編譯成功后,就會在arch\arm\boot\目錄下生成zImage文獻,大小一般為幾百KB。對于嵌入式Linux內(nèi)核而言,直接將生成的zImage下載到嵌入式目的板的flash中即可。對于較大的內(nèi)核,假如用make

zImage編譯,系統(tǒng)會提醒使用make

bzImage命令來編譯,bzImage是big

zImage的縮寫,可用于生成較大的壓縮內(nèi)核,例如桌面Linux系統(tǒng)內(nèi)核。④在配置菜單的過程中,有些選項被選擇為模塊的,即選項前為[M],并且在回答Enable

loadable

module

support(CONFIG_MODULES)時選了Yes的,則接下來就還要用命令make

modules

來編譯這些可加載模塊,并用make

modules_install將make

modules生成的模塊文獻復制到對應(yīng)目錄,桌面Linux內(nèi)核一般是在/lib/modules目錄下。⑤制作init

ramdiskmkinitrd

initrd-$version

$version例:mkinitrd

initrd-2.6.29

2.6.29$version

可以通過查詢/lib/modules下的目錄得到Ramdisk是將一部分固定大小的內(nèi)存當做分區(qū)來使用。它并非一種實際的文獻系統(tǒng),二是一種將實際的文獻系統(tǒng)裝入內(nèi)存的機制,并且可以作為根文獻系統(tǒng)。將某些常常被訪問而又不會更改的文獻(如只讀的根文獻系統(tǒng))通過ramdisk放在內(nèi)存中,可以明顯的提高系統(tǒng)的性能。在linux的啟動階段,initrd提供了一套機制,可以將內(nèi)核映像和根文獻系統(tǒng)一起載入內(nèi)存。⑥cp

arch/x86/boot/bzImage/boot/vmlinuz-$version$version

為所編譯的內(nèi)核版本號(拷貝initrd-2.6.29到/boot下,將arch/x86/boot/bzImage更名為vmlinuz-2.6.29移動到/boot下)⑦修改/etc/grub.conf

或者/etc/lilo.conf(GNU

GRUB(簡稱

GRUB

)是一種來自GNU項目的多操作系統(tǒng)啟動程序。GRUB是多啟動規(guī)范的實現(xiàn),它容許顧客可以在計算機內(nèi)同步擁有多種操作系統(tǒng),并在計算機啟動時選擇但愿運行的操作系統(tǒng)。GRUB可用于選擇操作系統(tǒng)分區(qū)上的不一樣內(nèi)核,也可用于向這些內(nèi)核傳遞啟動參數(shù)。)這時重啟Linux操作系統(tǒng),在進入內(nèi)核時按下回車鍵進入內(nèi)核選擇界面,選擇自己編譯的內(nèi)核,即可進入自己編譯的內(nèi)核的操作系統(tǒng),用uname

-r

可以查看目前內(nèi)核版本。嵌入式linux文獻系統(tǒng)的制作與移植

文獻系統(tǒng)包括兩個層次的含義:1.按照固定格式組織的目錄與文獻2.在特定的存儲介質(zhì)上管理這些目錄和文獻需要的數(shù)據(jù)當我們在linux下輸入ls

/

的時候,見到的目錄構(gòu)造以及這些目錄下的內(nèi)容都大同小異,這是由于所有的linux發(fā)行版在對根文獻系統(tǒng)的布局上都遵照FHS(Filesystem

Hierarchy

Standard)原則的提議規(guī)定。各個目錄名稱及其寄存的內(nèi)容:/bin

必備的顧客命令,例如ls、cp等/sbin

必備的系統(tǒng)管理員命令,例如ifconfig、reboot等/dev

設(shè)備文獻,例如mtdblock0、tty1等/etc

系統(tǒng)配置文獻,包括啟動文獻,例如inittab等/lib

必要的鏈接庫,例如C鏈接庫、內(nèi)核模塊/home

一般顧客主目錄/root

root顧客主目錄/usr/bin

非必備的顧客程序,例如find、du等/usr/sbin

非必備的管理員程序,例如chroot、inetd等/usr/lib

庫文獻/var

守護程序和工具程序所寄存的可變,例如日志文獻/proc

用來提供內(nèi)核與進程信息的虛擬文獻系統(tǒng),由內(nèi)核自動生成目錄下的內(nèi)容/sys

用來提供內(nèi)核與設(shè)備信息的虛擬文獻系統(tǒng),由內(nèi)核自動生成目錄下的內(nèi)容/mnt

文獻系統(tǒng)掛接點,用于臨時安裝文獻系統(tǒng)

/tmp

臨時性的文獻,重啟后將自動清除根文獻系統(tǒng)是Linux啟動時使用的第一種文獻系統(tǒng)。沒有根文獻系統(tǒng),Linux將無法正常啟動。根文獻系統(tǒng)由一系列目錄構(gòu)成,目錄中包括了應(yīng)用程序、C庫、以及有關(guān)的配置文獻。

那怎樣制作一種根文獻系統(tǒng)呢?重要包括如下環(huán)節(jié):1、創(chuàng)立根文獻系統(tǒng)的目錄如:mkdir

bin

sbin

lib

etc

dev

proc

sys

usr

mnt

tmp

var2、創(chuàng)立設(shè)備文獻cd

devmknod

-m

666

console

c

5

1mknod

-m

666

null

c

1

3cd

..3、安裝/etctar

-xzvf

etc.tar.gz

/xxx/rootfs/etc4、配置busybox進入busybox目錄執(zhí)行make

menuconfig進入

Busybox

Settingsbuild

Options->選中

“Build

busybox

as

a

static

binary”,

靜態(tài)鏈接Cross

Compiler

prefix

(arm-linux-)Installation

Options->選中

“Don‘t

use

/usr”,

選中該項可以防止busybox被安裝到宿主系統(tǒng)的/usr目錄下,破壞宿主系統(tǒng)Busybox

Installation

Prefix

(/nfsroot/rootfs)該選項表明編譯后的busybox的安裝位置7、編譯、安裝busyboxmake

ARCH=arm

CROSS_COMPILE=arm-linux-

make

install前提是系統(tǒng)中安裝好了交叉編譯工具arm-linux-gcc至此一種粗略的根文獻系統(tǒng)制作完畢,下面就需要移植到開發(fā)板中。我們懂得ARM嵌入式系統(tǒng)的構(gòu)成為:1)bootloader

引導加載器2)kernel

操作系統(tǒng)內(nèi)核3)rootfs

根文獻系統(tǒng)

(帶GUI,QTopia)

在系統(tǒng)加載完內(nèi)核后就會去啟動根文獻系統(tǒng),而啟動根文獻系統(tǒng)這個過程被bootargs這個參數(shù)控制,因此我們需要修改這個參數(shù)以使系統(tǒng)運行我們的根文獻系統(tǒng),但這之前我們需要在宿主機上將根文獻系統(tǒng)共享出來。我們先在linux系統(tǒng)中配置好nfs服務(wù)器,并且在設(shè)置配置文獻exports將根文獻系統(tǒng)所在途徑共享出來,接下來在ARM開發(fā)板啟動時控制超級終端進入shell界面,在這里輸入命令p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論