嵌入式實(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è),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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é)科,無論是在電子類的什么領(lǐng)域,你都能夠看到嵌入式ARM的影子。如果你還停留在單片機(jī)級(jí)別的學(xué)習(xí),那么事實(shí)上你已經(jīng)落下時(shí)代腳步了,ARM嵌入式技術(shù)正以幾何的倍數(shù)高速發(fā)展,它幾乎滲入到了幾乎你所想到的領(lǐng)域。由于嵌入式系統(tǒng)含有體積小、性能強(qiáng)、功耗低、可靠性高以及面對(duì)行業(yè)具體應(yīng)用等突出特性,現(xiàn)在已經(jīng)廣泛地應(yīng)用于軍事國(guó)防、消費(fèi)電子、信息家電、網(wǎng)絡(luò)通信、工業(yè)控制等各個(gè)領(lǐng)域。嵌入式的廣泛應(yīng)用能夠說是無所不在。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ì)造成系統(tǒng)的崩潰,而linux系統(tǒng)是運(yùn)用cpu的模式分級(jí)來分別運(yùn)行顧客空間和內(nèi)核空間,這樣就能夠使操作系統(tǒng)得到充足的保護(hù)。而當(dāng)代的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)行模式能夠通過軟件變化,也能夠通過外部中斷或異常解決變化,除顧客模式外,其它模式都是非顧客模式或特權(quán)模式,除顧客模式和系統(tǒng)模式外,其它模式都是異常模式,慣用于解決異常或中斷,以及需要訪問受保護(hù)的系統(tǒng)資源等狀況。同時(shí)顧客空間和內(nèi)核空間是程序執(zhí)行的兩種不同狀態(tài),通過系統(tǒng)調(diào)用和硬件中斷去實(shí)現(xiàn)顧客空間到內(nèi)核空間的轉(zhuǎn)移,系統(tǒng)調(diào)用是主動(dòng)的,硬件中斷是被動(dòng)的,例如鍵盤按下或者串口中斷。接下來說說linux的內(nèi)核架構(gòu),它重要是包含7大構(gòu)成部分1.內(nèi)存管理

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

vfs隱藏了多個(gè)文獻(xiàn)系統(tǒng)的具體細(xì)節(jié),為文獻(xiàn)操作提供統(tǒng)一的接口3.網(wǎng)絡(luò)合同棧

它為linux提供了完善豐富的網(wǎng)絡(luò)合同實(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í)它是與設(shè)備交互的唯一模塊,普通由第三方廠商開發(fā),一種驅(qū)動(dòng)程序不與其它驅(qū)動(dòng)程序交互;內(nèi)核與驅(qū)動(dòng)程序之間也僅通過一種嚴(yán)格定義的接口交互。6.系統(tǒng)調(diào)用接口

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

Linux內(nèi)核源代碼采用樹形構(gòu)造進(jìn)行組織,非常合理地把功效有關(guān)的文獻(xiàn)都放在同一種子目錄下,使得程序更具可讀性。下面介紹下這些目錄的構(gòu)成arch目錄arch是architecture的縮寫。內(nèi)核所支持的每種CPU體系,在該目錄下都有對(duì)應(yīng)的子目錄。每個(gè)CPU的子目錄,又進(jìn)一步分解為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目錄寄存多個(gè)文獻(xiàn)系統(tǒng)的實(shí)當(dāng)代碼。每個(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)無關(guān)的頭文獻(xiàn)在include/linux

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

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

|--802

/*802無線通訊合同核心支持代碼*/|

|--appletalk

/*與蘋果系統(tǒng)連網(wǎng)的合同*/|

|--ax25

/*AX25無線INTERNET合同*/|

|--bridge

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

|--ipv4

/*IP合同族V4版32位尋址模式*/|

|--ipv6

/*IP合同族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)核含有可定制的優(yōu)點(diǎn),配備內(nèi)核的目的是裁剪掉不必要的文獻(xiàn)和目錄,獲得一種最簡(jiǎn)樸的又能滿足顧客開發(fā)的操作系統(tǒng),以解除嵌入式開發(fā)過程中所碰到的存儲(chǔ)空間有限的困擾。內(nèi)核配備與編譯的具體環(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命令的同時(shí)刪除編輯器備份文獻(xiàn)和補(bǔ)丁文獻(xiàn)2.擬定目的系統(tǒng)的軟硬件配備狀況,例如cpu類型,網(wǎng)卡型號(hào),所需支持的網(wǎng)絡(luò)合同等。3.使用以下命令之一配備內(nèi)核:1)

make

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

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

oldconfig:使用已有的配備文獻(xiàn)(.config),但是會(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)核普通也需要幾個(gè)環(huán)節(jié),一是去除以前編譯通過的殘留文獻(xiàn);二是編譯內(nèi)核image文獻(xiàn)和可加載模塊;三是安裝模塊。下面是編譯內(nèi)核的具體環(huán)節(jié)。①make

dep

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

clean

命令用于刪除前面留下來的中間文獻(xiàn),該命令不會(huì)刪除.config等配備文獻(xiàn)。這個(gè)環(huán)節(jié)是可選的,它的目的是去除原先編譯過而殘留的.com和.o(obj文獻(xiàn))。如果是剛下載的源代碼,那么這一步就能夠省略了,但是如果已經(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命令來編譯,bzImage是big

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

loadable

module

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

modules

來編譯這些可加載模塊,并用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

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

)是一種來自GNU項(xiàng)目的多操作系統(tǒng)啟動(dòng)程序。GRUB是多啟動(dòng)規(guī)范的實(shí)現(xiàn),它允許顧客能夠在計(jì)算機(jī)內(nèi)同時(shí)擁有多個(gè)操作系統(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

能夠查看現(xiàn)在內(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

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

用來提供內(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將無法正常啟動(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è)過程被bootargs這個(gè)參數(shù)控制,因此我們需要修改這個(gè)參數(shù)以使系統(tǒng)運(yùn)行我們的根文獻(xiàn)系統(tǒng),但這之前我們需要在宿主機(jī)上將根文獻(xiàn)系統(tǒng)共享出來。我們先在linux系統(tǒng)中配備好nfs服務(wù)器,并且在設(shè)立配備文獻(xiàn)exports將根文獻(xiàn)系統(tǒng)所在途徑共享出來,接下來在ARM開發(fā)板啟動(dòng)時(shí)控制超級(jí)終端進(jìn)入shell界面,在這里輸入命令p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論