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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

C

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

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

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

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

它為linux提供了完善豐富的網絡協議實現4.進程管理

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

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

SCI層為顧客空間提供了一套原則的系統調用函數來訪問Linux內核,搭起了顧客空間到內核空間的橋梁。7.體系有關部分

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

--x86

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

|--boot

/*引導程序*/|

|

|--compressed

/*內核解壓縮*/|

|--tools

/*生成壓縮內核映像的程序*/|

|--kernel

/*有關內核特性實現方式,如信號處理、時鐘處理*/|

|--lib

/*硬件有關工具函數*/block目錄

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

|--devpts

/*

/dev/pts虛擬文獻系統*/|

|--ext2

/*第二擴展文獻系統*/|

|--fat

/*MS的fat32文獻系統*/|

|--isofs

/*ISO9660光盤cd-rom上的文獻系統*/include目錄

內核所需要的頭文獻。與平臺無關的頭文獻在include/linux

子目錄下,與平臺有關的頭文獻則放在對應的子目錄中。

init目錄內核初始化代碼ipc目錄進程間通信的實現代碼kernel目錄Linux大多數關鍵的關鍵功能都是在這個目錄實現。(調度程序,進程控制,模塊化)lib目錄庫文獻代碼mm目錄mm目錄中的文獻用于實現內存管理中與體系構造無關的部分(與體系構造有關的部分在哪里實現?arch)net目錄網絡協議的實現代碼|

|--802

/*802無線通訊協議關鍵支持代碼*/|

|--appletalk

/*與蘋果系統連網的協議*/|

|--ax25

/*AX25無線INTERNET協議*/|

|--bridge

/*橋接設備*/|

|--ipv4

/*IP協議族V4版32位尋址模式*/|

|--ipv6

/*IP協議族V6版*/samples某些內核編程的范例scripts配置內核的腳本securitySElinux的模塊sound音頻設備的驅動程序usrcpio命令實現virt內核虛擬機Linux內核的配置與編譯Linux內核具有可定制的長處,配置內核的目的是裁剪掉不必要的文獻和目錄,獲得一種最簡樸的又能滿足顧客開發(fā)的操作系統,以解除嵌入式開發(fā)過程中所碰到的存儲空間有限的困擾。內核配置與編譯的詳細環(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即實現make

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

make

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

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

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

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

menuconfig是最為常用的內核配置方式

假如一種.config文獻已經存在,它將使用該文獻設置那些默認的值4.編譯內核

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

dep

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

clean

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

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

zImage編譯,系統會提醒使用make

bzImage命令來編譯,bzImage是big

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

loadable

module

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

modules

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

modules_install將make

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

ramdiskmkinitrd

initrd-$version

$version例:mkinitrd

initrd-2.6.29

2.6.29$version

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

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

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

或者/etc/lilo.conf(GNU

GRUB(簡稱

GRUB

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

-r

可以查看目前內核版本。嵌入式linux文獻系統的制作與移植

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

/

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

Hierarchy

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

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

必備的系統管理員命令,例如ifconfig、reboot等/dev

設備文獻,例如mtdblock0、tty1等/etc

系統配置文獻,包括啟動文獻,例如inittab等/lib

必要的鏈接庫,例如C鏈接庫、內核模塊/home

一般顧客主目錄/root

root顧客主目錄/usr/bin

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

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

庫文獻/var

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

用來提供內核與進程信息的虛擬文獻系統,由內核自動生成目錄下的內容/sys

用來提供內核與設備信息的虛擬文獻系統,由內核自動生成目錄下的內容/mnt

文獻系統掛接點,用于臨時安裝文獻系統

/tmp

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

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

bin

sbin

lib

etc

dev

proc

sys

usr

mnt

tmp

var2、創(chuàng)立設備文獻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被安裝到宿主系統的/usr目錄下,破壞宿主系統Busybox

Installation

Prefix

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

ARCH=arm

CROSS_COMPILE=arm-linux-

make

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

引導加載器2)kernel

操作系統內核3)rootfs

根文獻系統

(帶GUI,QTopia)

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

溫馨提示

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

評論

0/150

提交評論