




已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1,linux操作系統(tǒng)的移植及應(yīng)用,培訓(xùn)中心2010,2,主要內(nèi)容,嵌入式操作系統(tǒng)linux概述建立開發(fā)環(huán)境linux內(nèi)核配置與編譯linux移植系統(tǒng)引導(dǎo)程序BootLoaderlinux的文件系統(tǒng)linux內(nèi)核程序linux應(yīng)用程序開發(fā),3,操作系統(tǒng)概述,為什么需要操作系統(tǒng)早期的8位/16位系統(tǒng)中大多沒有操作系統(tǒng)進(jìn)入32位時(shí)代-系統(tǒng)中的軟件越來越復(fù)雜,完全駕奴的能力不夠-維護(hù)成本太高、系統(tǒng)升級困難使用嵌入式操作系統(tǒng)-穩(wěn)定性好、性能高、功能完善-遵循標(biāo)準(zhǔn),便于移植、升級,4,嵌入式操作系統(tǒng)的特點(diǎn),提供內(nèi)核管理多任務(wù)管理外圍資源管理要更穩(wěn)定可裁剪、可配置實(shí)時(shí)性需求針對應(yīng)用的優(yōu)化與功能增強(qiáng),5,典型的嵌入式操作系統(tǒng),uC/OS-II操作系統(tǒng)簡單高效、免費(fèi)、支持64個(gè)任務(wù)、支持多種CPU、無設(shè)備驅(qū)動(dòng)程序、缺乏足夠的應(yīng)用模塊。eCOS操作系統(tǒng)免費(fèi)使用、支持多種CPU、使用GNU工具鏈開發(fā)、有完備的設(shè)備驅(qū)動(dòng)程序和應(yīng)用模塊、支持POSIX標(biāo)準(zhǔn)、需要較多的系統(tǒng)資源。VxWorks嵌入式實(shí)時(shí)操作系統(tǒng)銷售額最大,價(jià)格昂貴;通常只提供二進(jìn)制碼內(nèi)核;支持多種CPU;完整的開發(fā)工具和測試工具;完備的設(shè)備驅(qū)動(dòng)和應(yīng)用模塊;支持POSIX標(biāo)準(zhǔn);性能好,功能齊全。WinCE操作系統(tǒng)Microsoft出品、需購買許可、支持多線程、有優(yōu)先級、虛擬內(nèi)存、提供類似PC機(jī)的操作系統(tǒng)界面等。Linux操作系統(tǒng)類似UNIX;免費(fèi);源代碼開放;符合POSIX標(biāo)準(zhǔn);支持TCP/IP;支持絕大多數(shù)32位和64位CPU;搶先式多任務(wù)處理;內(nèi)存保護(hù);虛擬內(nèi)存等。,6,主要內(nèi)容,嵌入式操作系統(tǒng)linux概述建立開發(fā)環(huán)境linux內(nèi)核配置與編譯linux移植系統(tǒng)引導(dǎo)程序BootLoaderlinux的文件系統(tǒng)linux內(nèi)核程序linux應(yīng)用程序開發(fā),7,Linux操作系統(tǒng),最初設(shè)計(jì)為桌面系統(tǒng),現(xiàn)廣泛應(yīng)用于服務(wù)器。Linux的特點(diǎn):支持多種體系結(jié)構(gòu),支持大量外設(shè),網(wǎng)絡(luò)功能完善開放源代碼,軟件資源豐富,內(nèi)核穩(wěn)定而高效,大小及功能均可定制。滿足嵌入式操作系統(tǒng)的要求,目前在嵌入式領(lǐng)域高速發(fā)展,催生了一些嵌入式Linux,如uClinux、RTLinux,1969年,Bell實(shí)驗(yàn)室,發(fā)明UNIX1991年,芬蘭LinusTorvalds,設(shè)計(jì)了Linux,8,Linux內(nèi)核版本號(hào)約定,x.y.zz-x:主版本號(hào)-y:次版本號(hào),奇數(shù)=開發(fā)版,偶數(shù)=穩(wěn)定版-zz:子版本號(hào),當(dāng)前版本的修訂次數(shù)例如:2.4.18表示對核心2.4版本的第18次修訂,該版本為可以使用的穩(wěn)定版本。,9,linux應(yīng)用特征,廣泛的處理器結(jié)構(gòu)和硬件平臺(tái)支持程序代碼的質(zhì)量與可靠度高提供廣泛的通信協(xié)議和軟件標(biāo)準(zhǔn)支持豐富的應(yīng)用軟件和廣泛的社群支持低廉的成本開源軟件可靠的系統(tǒng)安全,10,linux設(shè)計(jì)特征,linux的內(nèi)存管理linux的多進(jìn)程處理linux針對實(shí)時(shí)性的解決方案執(zhí)行程序的格式文件系統(tǒng)標(biāo)準(zhǔn)C函數(shù)庫,11,linux系統(tǒng)組成,一個(gè)基于linux的完整的嵌入式系統(tǒng)由三個(gè)部分組成:系統(tǒng)引導(dǎo)程序、linux操作系統(tǒng)內(nèi)核和文件系統(tǒng)。系統(tǒng)引導(dǎo)程序通常稱作BootLoader,平臺(tái)上執(zhí)行的第一段代碼,類似BIOS、BSP。內(nèi)核比較精簡,壓縮后一般小于1M。文件系統(tǒng)主要存儲(chǔ)用戶應(yīng)用程序,同時(shí)包括系統(tǒng)配置文件、系統(tǒng)程序和必需的驅(qū)動(dòng)程序,根據(jù)用戶所加入應(yīng)用程序的大小,文件系統(tǒng)所占空間也存在比較大的差異。采用分區(qū)存放,12,linux內(nèi)核結(jié)構(gòu),Linux內(nèi)核與大部分UNIX內(nèi)核一樣是單內(nèi)核體系結(jié)構(gòu)的,即它是由幾個(gè)邏輯功能上不同的部分組合而成的大程序。單內(nèi)核結(jié)構(gòu)可以動(dòng)態(tài)加載和卸載模塊(module),能夠根據(jù)需要定制內(nèi)核映像的尺寸;具有很大靈活性,不需要重新編譯內(nèi)核且引導(dǎo)就能檢驗(yàn)新的內(nèi)核組件,方便用戶構(gòu)筑自己的個(gè)人內(nèi)核。Linux內(nèi)核由5個(gè)主要的子系統(tǒng)組成,分別為:進(jìn)程調(diào)度(SCHED)、內(nèi)存管理(MM)、虛擬文件系統(tǒng)(VirtulFileSystem,VFS)、網(wǎng)絡(luò)接口(NET)和進(jìn)程間通信(IPC)。,13,內(nèi)核結(jié)構(gòu)示意圖,14,linux文件目錄結(jié)構(gòu),linux發(fā)布版文件目錄結(jié)構(gòu)和功能如下圖所示:,15,主要內(nèi)容,嵌入式操作系統(tǒng)linux概述建立開發(fā)環(huán)境編譯運(yùn)行l(wèi)inuxlinux移植系統(tǒng)引導(dǎo)程序BootLoaderlinux的文件系統(tǒng)linux內(nèi)核程序linux應(yīng)用程序開發(fā),16,建立交叉編譯環(huán)境,宿主機(jī),目標(biāo)機(jī),Linux,Windows-Cygwin,安裝環(huán)境,Linux環(huán)境下GNU工具(編譯、鏈接),安裝工具,17,Cygwin介紹,Cygwin軟件是一個(gè)運(yùn)行于windows下的Linux模擬環(huán)境。它包括:動(dòng)態(tài)鏈接庫Cygwin.dll一組Linux工具集Cygwin提供的一組功能強(qiáng)大的工具,包括大多數(shù)GNU軟件(如gcc,gdb,xfree86,bash,tetex,opengl,perl,python等),可以幫助開發(fā)人員將應(yīng)用程序從Linux移植到Windows平臺(tái)。Cygwin對于學(xué)習(xí)掌握Linux操作環(huán)境,或者進(jìn)行某些特殊的開發(fā)工作,尤其是使用GNU工具集在Windows上進(jìn)行嵌入式系統(tǒng)開發(fā),非常有用。,18,Cygwin的安裝和設(shè)置(一),下載網(wǎng)址:,19,Cygwin的安裝和設(shè)置(二),選擇Cygwin的安裝目錄。選擇DOS文本文件類型(DOS與UNIX文本類型的區(qū)別在于前者的換行為ASCLL的0 x0D和0 x0A組合,后者是0 x0D)。選擇“下一步”,如圖所示。,NTFS,20,Cygwin的安裝和設(shè)置(三),選擇安裝項(xiàng)目。點(diǎn)擊在安裝項(xiàng)目左邊的“default”,可以調(diào)整該項(xiàng)目的安裝設(shè)置。開發(fā)Linux必須選擇全部安裝以下項(xiàng)目:Admin-包括啟動(dòng)服務(wù)cygrunsrv等工具,NFS啟動(dòng)必備Archive-壓縮解壓工具集Base-基本的Linux工具集Devel-開發(fā)工具集,包括gcc、make等開發(fā)工具Libs-函數(shù)庫Net-網(wǎng)絡(luò)工具集Shells-常用Shell工具集Utils-包括bzip2等實(shí)用工具集,21,交叉編譯鏈接工具介紹(一),編譯、匯編、鏈接工具:arm-linux-g+、arm-linux-c+C+編譯器。arm-linux-c+filtC+語言支持函數(shù)重載,可以使用相同的函數(shù)名稱和不同的函數(shù)參數(shù),連接器使用本工具來過濾C+和Java符號(hào),防止重載函數(shù)沖突。arm-linux-gcc編譯器。arm-linux-as匯編器。arm-linux-ld連接器。arm-linux-protoize、arm-linux-unprotoizegcc的可選部分,protoize在程序中增加函數(shù)原型,轉(zhuǎn)換程序符合標(biāo)準(zhǔn)C規(guī)范。Unprotoize則清除所找到的的函數(shù)原型的參數(shù)。,22,交叉編譯鏈接工具介紹(二),實(shí)用工具集:arm-linux-addr2linearm-linux-ararm-linux-nmarm-linux-objcopyarm-linux-objdumparm-linux-ranlibarm-linux-readelf,23,交叉編譯鏈接工具介紹(三),文件系統(tǒng)工具:cramfsckCRAMFS文件系統(tǒng)的釋放工具。mkcramfsCRAMFS文件系統(tǒng)的生成工具。,24,將Linux系統(tǒng)下的工具鏈安裝解壓包:cross-armtools-linux-edukit2410.tar.bz2在控制臺(tái)使用以下命令安裝:將cross-armtools-linux-edukit2410.tar.bz2拷貝到/tmp/目錄下。cd/tmptar-P-xvjfcross-armtools-linux-edukit2410.tar.bz2sourcearmtools-linux/cross-install.sh軟件自動(dòng)將工具鏈安裝到/usr/arm-linux目錄。,開發(fā)工具鏈安裝,25,主要內(nèi)容,嵌入式操作系統(tǒng)linux概述建立開發(fā)環(huán)境linux內(nèi)核配置與編譯linux移植系統(tǒng)引導(dǎo)程序BootLoaderlinux的文件系統(tǒng)linux內(nèi)核程序調(diào)試linux應(yīng)用程序開發(fā),26,安裝linux源代碼,linux官方網(wǎng)站linux源代碼最新版本的下載地址為:.uk/developer/源代碼包名稱為linux-2.4.18-rmk7-pxa1-mz5.tar.bz2。解壓linux源代碼包,執(zhí)行命令:cd/usr/local/src/tar-xvjflinux-2.4.18-rmk7-pxa1-mz5.tar.bz2,27,配置linux內(nèi)核,linux提供三個(gè)不同的命令進(jìn)行l(wèi)inux的配置,效果完全一樣。makemenuconfigmakeconfigmakexconfig一般我們選擇makexconfig,它提供一個(gè)圖形界面,比較直觀。,28,內(nèi)核配置選項(xiàng),內(nèi)核編譯以前首先應(yīng)該對內(nèi)核進(jìn)行配置,裁剪不必要的內(nèi)容,在完全實(shí)現(xiàn)硬件功能的前提下盡量節(jié)約空間。,29,編譯linux內(nèi)核,cd/usr/local/src/kernelmakedep-搜索linux編譯輸出與源代碼之間的依賴關(guān)系,并以此生成依賴文件makeclean-清除以前構(gòu)造內(nèi)核時(shí)生成的所有目標(biāo)文件、模塊文件和臨時(shí)文件。makezImage-編譯Linux內(nèi)核,生成壓縮的內(nèi)核映像文件,30,運(yùn)行l(wèi)inux,通過編譯最終在arch/arm/boot目錄下生成1個(gè)文件:zImagelinux內(nèi)核2.4.x的壓縮方式可執(zhí)行映像文件。燒寫映像文件:通過Flash燒寫工具,分別將Bootloader(啟動(dòng))、zImage以及root.cramfs三個(gè)映像文件固化到Flash中。配置超級終端:啟動(dòng)PC上超級終端軟件并設(shè)置超級終端為115200波特率,無校驗(yàn),1位停止位,無數(shù)據(jù)流控制。運(yùn)行l(wèi)inux:復(fù)位EduKit42410開發(fā)板,通過超級終端觀察linux的啟動(dòng)運(yùn)行。,31,主要內(nèi)容,嵌入式操作系統(tǒng)linux概述建立開發(fā)環(huán)境編譯運(yùn)行l(wèi)inuxlinux移植系統(tǒng)引導(dǎo)程序BootLoaderlinux的文件系統(tǒng)linux內(nèi)核程序linux應(yīng)用程序開發(fā),32,linux的移植,處理器結(jié)構(gòu)層次移植,33,處理器結(jié)構(gòu)層次移植(1),處理器結(jié)構(gòu)的源文件在kernel/arch目錄下;包含所有已支持的處理器,以子目錄形式提供,如arm、armnommu、m68k、mips64等;linux使用的是arm;處理器結(jié)構(gòu)文件目錄主要由以下這些子目錄組成:kernel-內(nèi)核源代碼mm-內(nèi)存管理源代碼lib-處理器特定的內(nèi)部庫函數(shù)boot-包含壓縮內(nèi)核的代碼,也是內(nèi)核文件最后編譯生成的地方tools-包含自動(dòng)產(chǎn)生文件的腳本,34,處理器結(jié)構(gòu)層次移植(2),linux內(nèi)核代碼大部分獨(dú)立于處理器與其體系結(jié)構(gòu),但其最底層的代碼是由各處理器結(jié)構(gòu)特定的。中斷處理上下文、內(nèi)存映射的維護(hù)、任務(wù)上下文和初始化過程等,這部分代碼都在kernel/arch/目錄下;處理器結(jié)構(gòu)的頭文件在kernel/include目錄下;設(shè)備驅(qū)動(dòng)文件通常是在kernel/drivers目錄下;分區(qū)類型和網(wǎng)絡(luò)相關(guān)的部分則分別在kernel/fs和kernel/net目錄下;對一個(gè)新型的處理器結(jié)構(gòu),在移植中可參照其他的處理器結(jié)構(gòu),模仿與其相似的處理器體系結(jié)構(gòu)程序編寫,在某個(gè)處理器結(jié)構(gòu)目錄下修改文件使其達(dá)到待移植的處理器結(jié)構(gòu)的要求。,35,芯片層次移植,芯片層次移植源程序主要集中在kernel/arch/arm/mach-xxxx目錄,頭文件在kernel/include/asm-arm/arch-xxxx目錄,移植內(nèi)容主要包括以下部分:,芯片層次移植,其他,時(shí)鐘脈沖頻率,定時(shí)中斷,中斷處理,內(nèi)核啟動(dòng)代碼,芯片定義,設(shè)備號(hào),36,板級移植,當(dāng)使用處理器已經(jīng)被linux支持時(shí),主要的工作就是針對硬件電路板的區(qū)別進(jìn)行的板級移植。,存儲(chǔ)器參數(shù),內(nèi)核運(yùn)行起始地址,內(nèi)核解壓引導(dǎo)程序相關(guān)地址,內(nèi)核解壓引導(dǎo)程序存儲(chǔ)區(qū)初始化,驅(qū)動(dòng)程序,37,主要內(nèi)容,嵌入式操作系統(tǒng)linux概述建立開發(fā)環(huán)境編譯運(yùn)行l(wèi)inuxlinux移植系統(tǒng)引導(dǎo)程序BootLoaderlinux的文件系統(tǒng)linux內(nèi)核程序linux應(yīng)用程序開發(fā),38,系統(tǒng)引導(dǎo)程序bootloader,BIOS,BSP,Bootloader,商業(yè)OS,39,PC引導(dǎo)方式,BIOS在完成硬件檢測和資源分配后,將硬盤中的BootLoader讀到系統(tǒng)的RAM中,然后將控制權(quán)交給OSBootLoader。BootLoader的主要運(yùn)行任務(wù)就是將內(nèi)核映象從硬盤上讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點(diǎn)去運(yùn)行,也即開始啟動(dòng)操作系統(tǒng)。,40,嵌入式Bootloader,在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序,因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由BootLoader來完成。系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0 x00000000處開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的BootLoader程序。,41,Bootboader的作用與特點(diǎn),Bootloader的作用是初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。Bootloader獨(dú)立于操作系統(tǒng),高度依賴于硬件,包括處理器的體系結(jié)構(gòu)、具體型號(hào)、硬件電路板的設(shè)計(jì)。不可能實(shí)現(xiàn)一個(gè)通用的Bootloader。linux的發(fā)行包中不包含Booloader,但用戶可以直接使用或參考一些開源的Bootloader軟件工程。,42,文件存放及引導(dǎo)方式,1.BootLoader、內(nèi)核映像和文件系統(tǒng)映像在系統(tǒng)中的存儲(chǔ)的典型空間分配結(jié)構(gòu)圖如下:2.如果RAM空間緊張,并且對系統(tǒng)執(zhí)行速度要求不高,也常使用未經(jīng)壓縮的在Flash本地執(zhí)行XIP(ExecuteInPlace)方式的內(nèi)核映像文件。3.調(diào)試過程中:經(jīng)常使用未經(jīng)壓縮的在Ram本地執(zhí)行XIP方式的內(nèi)核映像文件。與在Flash本地執(zhí)行的映像文件的區(qū)別是它不需要將數(shù)據(jù)段從Flash拷貝到Ram中的過程。這種方式下,需要BootLoader具有通過網(wǎng)口或串口下載內(nèi)核映像文件并啟動(dòng)內(nèi)核的功能。,43,系統(tǒng)引導(dǎo)程序最簡功能設(shè)計(jì),禁止所有的中斷,設(shè)置處理器時(shí)鐘、運(yùn)行速度,存儲(chǔ)區(qū)初始化,設(shè)置堆棧指針將bss段清零,跳轉(zhuǎn)到內(nèi)核映像的入口,44,系統(tǒng)引導(dǎo)程序完備功能設(shè)計(jì),設(shè)計(jì)一個(gè)完備的BootLoader,可在最簡功能基礎(chǔ)上考慮是否增加以下功能:(1)上電自檢;(2)支持串口通訊方式,提供串口方式的命令控制臺(tái);(3)支持以太網(wǎng)通訊方式,提供以太網(wǎng)通訊方式的命令控制臺(tái);(4)可以通過串口或以太網(wǎng)下載并引導(dǎo)內(nèi)核和文件系統(tǒng)映像文件;(5)支持通過串口或以太網(wǎng)通訊燒寫映像文件到Flash;(6)能夠讀寫I/O端口、存儲(chǔ)區(qū)、寄存器;(7)配置功能,包括設(shè)置IP地址、MAC地址、系統(tǒng)時(shí)間等。,45,開源BootLoader,常用的BootLoader有以下幾種:vivi、Blob、U-Boot等實(shí)際應(yīng)用中常常在VIVI源代碼的基礎(chǔ)上修改來制作系統(tǒng)的BootLoader,46,主要內(nèi)容,嵌入式操作系統(tǒng)linux概述建立開發(fā)環(huán)境編譯運(yùn)行l(wèi)inuxlinux移植系統(tǒng)引導(dǎo)程序BootLoaderlinux的文件系統(tǒng)linux內(nèi)核程序調(diào)試linux應(yīng)用程序開發(fā)及調(diào)試,47,Linux的文件系統(tǒng),文件系統(tǒng)是反映負(fù)責(zé)存取和管理文件信息的機(jī)構(gòu)。文件系統(tǒng)通常是單獨(dú)建立的。包含系統(tǒng)使用的軟件和庫,以及所有用來為用戶提供支持架構(gòu)和用戶使用的應(yīng)用軟件,并作為存儲(chǔ)數(shù)據(jù)讀寫結(jié)果的區(qū)域。文件系統(tǒng)的概念使得用戶能夠查看存儲(chǔ)設(shè)備上的文件和路徑而無需考慮實(shí)際物理設(shè)備的文件系統(tǒng)類型。,48,文件系統(tǒng)的層次結(jié)構(gòu),文件系統(tǒng)有多種類型,如:RAMFS、CRAMFS、JFFS2文件系統(tǒng)的層次結(jié)構(gòu)圖:,49,文件系統(tǒng)的掛載,文件系統(tǒng)的掛載:mountopt-tfsExamles:/bin/mount-f-tcramfs-oremount,ro/dev/mtdblock/3/bin/mount-n-tramfsramfs/etc/bin/mount-tjffs2/dev/mtdblock/4/usr,50,cramfs文件系統(tǒng),cramfs不會(huì)影響系統(tǒng)讀取文件的速度,而且是一個(gè)高度壓縮的文件系統(tǒng),因此非常廣泛應(yīng)用于嵌入式系統(tǒng)中。生成映象文件:mkcramfs-h-eedition-ifile-nnamedirnameoutfile,51,主要內(nèi)容,嵌入式操作系統(tǒng)linux概述建立開發(fā)環(huán)境編譯運(yùn)行l(wèi)inuxlinux移植系統(tǒng)引導(dǎo)程序BootLoaderlinux的文件系統(tǒng)linux內(nèi)核程序linux應(yīng)用程序開發(fā),52,linux內(nèi)核啟動(dòng)過程,Bootloader完成系統(tǒng)初始化工作后,將運(yùn)行控制權(quán)交給linux內(nèi)核。根據(jù)內(nèi)核是否壓縮以及內(nèi)核是否在本地執(zhí)行,linux通常有以下兩種可選的啟動(dòng)方式:Flash本地運(yùn)行方式:內(nèi)核的未經(jīng)壓縮的可執(zhí)行映像固化在Flash,系統(tǒng)啟動(dòng)時(shí)內(nèi)核在Flash中開始逐句執(zhí)行。壓縮內(nèi)核加載方式:內(nèi)核的壓縮映像固化在Flash上,系統(tǒng)啟動(dòng)時(shí)由附加在壓縮映像前的解壓復(fù)制程序讀取壓縮映像,在內(nèi)存中解壓后執(zhí)行,這種方式相對復(fù)雜,但是運(yùn)行速度更快(RAM的存取速率要比Flash高)。,53,Flash本地內(nèi)核的啟動(dòng)過程,本地運(yùn)行時(shí)內(nèi)核的啟動(dòng)包括:特定體系結(jié)構(gòu)設(shè)置:由匯編文件head-armv.s完成,基本運(yùn)行過程:1)配置系統(tǒng)寄存器;2)初始化ROM、RAM以及總線控制寄存器等;3)設(shè)置堆棧指針,將bss段清零;4)修改pc指針,跳轉(zhuǎn)到kernel/init/main.c中的start_kernel函數(shù),開始linux系統(tǒng)的初始化。linux系統(tǒng)初始化程序跳轉(zhuǎn)到start_kernel函數(shù)執(zhí)行,在這里完成處理器結(jié)構(gòu)的初始化、中斷的初始化、進(jìn)程相關(guān)的初始化以及內(nèi)存初始化等重要工作。,54,壓縮內(nèi)核的啟動(dòng)過程,壓縮內(nèi)核啟動(dòng)過程包括:解壓復(fù)制本過程由head.s完成,基本運(yùn)行過程:1)配置系統(tǒng)寄存器;2)初始化ROM、RAM以及總線控制寄存器等;3)對Flash和SDRAM進(jìn)行地址映射,將內(nèi)核的映像文件從Flash拷貝到SDRAM;4)設(shè)置堆棧指針,將bss段清零,將來執(zhí)行c語言程序時(shí)要用到;5)調(diào)用Misc.c中的解壓縮內(nèi)核函數(shù)decompress_kernel(),對拷貝到SDRAM的內(nèi)核映像文件進(jìn)行解壓縮;6)執(zhí)行調(diào)用內(nèi)核函數(shù)call_kernel,跳轉(zhuǎn)到解壓后linux內(nèi)核入口。特定體系結(jié)構(gòu)設(shè)置linux系統(tǒng)初始化,55,內(nèi)核的調(diào)試方法,EmbestIDE+JTAG仿真器Printk()KGDBKDB,56,JTAG仿真器調(diào)試模型,PC機(jī),JTAG仿真器,目標(biāo)板,并口/USB/網(wǎng)口,運(yùn)行EmbestIDE,57,Printk()調(diào)試內(nèi)核,Printk是調(diào)試內(nèi)核代碼時(shí)最常用的一種技術(shù)。在內(nèi)核代碼中的關(guān)鍵位置加上Printk調(diào)用,可直接把所關(guān)心的信息打印到屏幕上或輸出到文件中;linux內(nèi)核執(zhí)行完console_init()函數(shù)后,可以通過串行口終端輸出信息。在PC和目標(biāo)板之間連接串口線;運(yùn)行PC上的超級終端并進(jìn)行配置。,PC機(jī),目標(biāo)板,串口,58,主要內(nèi)容,嵌入式操作系統(tǒng)linux概述建立開發(fā)環(huán)境編譯運(yùn)行l(wèi)inuxlinux移植系統(tǒng)引導(dǎo)程序BootLoaderlinux的文件系統(tǒng)linux內(nèi)核程序調(diào)試linux應(yīng)用程序開發(fā),59,應(yīng)用程序的編寫,開發(fā)平臺(tái):Linux平臺(tái)或Cygwin在/usr/local/src目錄下面新建任意目錄作為應(yīng)用程序開發(fā),如建立app目錄。$:mkdir-p/usr/local/src/app,60,添加應(yīng)用程序到文件系統(tǒng)中,在包含文件系統(tǒng)的Linux中,將編寫好的應(yīng)用程序添加到文件系統(tǒng)中需要進(jìn)行以下幾個(gè)方面的工作:,編寫Makefile,修改配置相關(guān)文件,修改用戶程序工程管理文件,在./user/Makefile中,增加行dir_$(CONFIG_USER_HELLO)+=app,在./config/config.in菜單定義中:boolHelloCONFIG_USER_HELLO,61,編寫程序工程管理文件Makefile,編寫Makefile的主要內(nèi)容:編譯操作、環(huán)境變量、測試文件、編譯選項(xiàng)、鏈接選項(xiàng)、編譯鏈接命令、編譯清除和安裝執(zhí)行文件等,62,快速添加應(yīng)用程序,上節(jié)所述增加應(yīng)用程序以及編譯執(zhí)行的過程比較正式但也比較繁瑣,用戶可以采用下述方法在開發(fā)調(diào)試過程中快速添加應(yīng)用程序。,編譯生成可執(zhí)行文件,復(fù)制可執(zhí)行文件到文件系統(tǒng),生成文件系統(tǒng)映像,63,linux應(yīng)用程序調(diào)試,主機(jī)調(diào)試方法主機(jī):Linux或Win
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 簽約醫(yī)生工作總結(jié)
- 2023年XX縣流動(dòng)兒童預(yù)防接種管理工作實(shí)施方案
- 分娩技術(shù)員安全操作培訓(xùn)
- 河南省洛陽市伊川縣2024-2025學(xué)年部編版七年級下學(xué)期期末歷史試題(含答案)
- 《高級商務(wù)英語口語第二版》課件unit9BusinessNegotiation
- 2025年高分子化學(xué)專業(yè)考試卷及答案總結(jié)
- 人事培訓(xùn)課件
- 2025年中學(xué)數(shù)學(xué)知識(shí)競賽試題及答案
- 護(hù)理團(tuán)標(biāo)踐行案例
- 2025年湖南省益陽赫山區(qū)六校聯(lián)考八下英語期中學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含答案
- 飛機(jī)艙門及撤離滑梯-空客320型飛機(jī)艙門結(jié)構(gòu)及操作方法
- 中建型鋼懸挑卸料平臺(tái)專項(xiàng)施工方案
- 心搏呼吸驟停課件
- 12D10 防雷與接地工程
- 北京長峰醫(yī)院4.18火災(zāi)事故案例分析
- 國開《學(xué)前兒童心理學(xué)基礎(chǔ)》形考形成性考核1-4答案
- 乙酸安全周知卡、職業(yè)危害告知卡、理化特性表
- 工業(yè)廢水處理工初級測試題
- 投稿版權(quán)轉(zhuǎn)讓協(xié)議書
- 【部編版】三年級下冊道德與法治《期末測試卷》(含答案)
- 翎云教育試卷二年級下冊數(shù)學(xué)
評論
0/150
提交評論