嵌入式實(shí)習(xí)報(bào)告_第1頁(yè)
嵌入式實(shí)習(xí)報(bào)告_第2頁(yè)
嵌入式實(shí)習(xí)報(bào)告_第3頁(yè)
嵌入式實(shí)習(xí)報(bào)告_第4頁(yè)
嵌入式實(shí)習(xí)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

--x86

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

|--boot

/*引導(dǎo)程序*/|

|

|--compressed

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

|--tools

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

|--kernel

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

|--lib

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

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

|--devpts

/*

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

|--ext2

/*第二擴(kuò)展文獻(xiàn)系統(tǒng)*/|

|--fat

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

|--isofs

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

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

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

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

|--802

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

|--appletalk

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

|--ax25

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

|--bridge

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

|--ipv4

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

|--ipv6

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

clean

Remove

most

generated

files

but

keep

the

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

mrproper

Remove

all

generated

files

+

config

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

distclean

Mrproper

+

remove

editor

backup

and

patch

files即實(shí)現(xiàn)make

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

make

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

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

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

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

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

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

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

dep

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

clean

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

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

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

bzImage命令來(lái)編譯,bzImage是big

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

loadable

module

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

modules

來(lái)編譯這些可加載模塊,并用make

modules_install將make

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

ramdiskmkinitrd

initrd-$version

$version例:mkinitrd

initrd-2.6.29

2.6.29$version

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

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

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

或者/etc/lilo.conf(GNU

GRUB(簡(jiǎn)稱

GRUB

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

-r

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

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

/

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

Hierarchy

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

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

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

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

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

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

一般顧客主目錄/root

root顧客主目錄/usr/bin

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

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

庫(kù)文獻(xiàn)/var

守護(hù)程序和工具程序所寄存的可變,例如日志文獻(xiàn)/proc

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

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

文獻(xiàn)系統(tǒng)掛接點(diǎn),用于臨時(shí)安裝文獻(xiàn)系統(tǒng)

/tmp

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

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

bin

sbin

lib

etc

dev

proc

sys

usr

mnt

tmp

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

devmknod

-m

666

console

c

5

1mknod

-m

666

null

c

1

3cd

..3、安裝/etctar

-xzvf

etc.tar.gz

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

menuconfig進(jìn)入

Busybox

Settingsbuild

Options->選中

“Build

busybox

as

a

static

binary”,

靜態(tài)鏈接Cross

Compiler

prefix

(arm-linux-)Installation

Options->選中

“Don‘t

use

/usr”,

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

Installation

Prefix

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

ARCH=arm

CROSS_COMPILE=arm-linux-

make

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

引導(dǎo)加載器2)kernel

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

根文獻(xiàn)系統(tǒng)

(帶GUI,QTopia)

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論