畢業設計(論文)嵌入式開發在多媒體中的應用研究_第1頁
畢業設計(論文)嵌入式開發在多媒體中的應用研究_第2頁
畢業設計(論文)嵌入式開發在多媒體中的應用研究_第3頁
畢業設計(論文)嵌入式開發在多媒體中的應用研究_第4頁
畢業設計(論文)嵌入式開發在多媒體中的應用研究_第5頁
已閱讀5頁,還剩45頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、2011屆信息與計算科學專業畢業設計(論文)重慶三峽學院畢業設計(論文)題目:嵌入式開發在多媒體中的應用專 業:信息與計算科學年 級:2007級學 號:作 者:指導老師:完成時間:2011年5月說 明本系統是基于arm2440開發板運行的一個mp3系統,本論文重點對怎么開發一個mp3系統做了詳細的講解。本系統研究了如何移植bootloader、移植內核、移植根文件系統、移植應用程序、驅動的編寫、應用程序的編寫。我們研究這個系統的主要目的就是為了學習嵌入式的開發流程,更加深刻的理解什么是嵌入式。在開發該系統之前,我們必須得安裝了linux操作系統和基本的硬件環境。我們再開發該系統的時候。首先就是

2、移植的bootloader,因為bootloader就是我們開機運行的第一個程序。移植bootloader到arm2440開發板上就得參考2440開發板的數據手冊。根據2440開發板的硬件來配置bootloader的相應參數。接著是移植linux內核,然后是移植根文件系統,根文件系統移植完后就移植應用程序。其中我們移植的應用程序中就包含了我們madplay軟件。這個軟件是播放mp3所必須的軟件。為了實現我們系統的按鍵功能,我們還得編寫按鍵驅動程序,有了按鍵驅動,則我們就可以編寫各種應用程序來控制我們的開發板了。當以上步驟都做完的時候,哈哈。我們的mp3系統就完成了。序號學號姓名專業、班級任務分

3、配1計算機科學與技術組長,系統開發、代碼調試2信息與計算科學主要功能模塊設計、系統開發3信息與計算科學任務的提出、系統設計目 錄摘要iabstractii1引言和選課題的背景12 系統開發的環境43 需求分析53.1 項目的可行性研究53.1.1技術的可行性53.1.2經濟的可行性53.1.3 操作的可行性53.2 需求分析的任務53.2.1功能需求53.2.2性能需求53.3 總體設計63.3.1 設計過程63.3.2 設計原理64 移植bootloader64.1 boot loader的概念64.2 boot loader的stage164.3 boot loader的stage274.

4、4 u-boot-1.1.6的移植84.4.1 u-boot-1.1.6的代碼目錄結構簡介85 linux內核移植105.1 內核簡介105.2 linux內核源碼目錄結構105.3 linux內核構造系統簡介115.3.1、kconfig文件,其作用是125.3.2 config文件125.3.3 makefile文件125.4 linux內核的構成125.4.1 系統調用接口135.4.2 進程管理135.4.3 內存管理145.4.4 虛擬文件系統145.4.5 linux驅動程序145.4.6 網絡協議站145.5 內核移植145.5.1 下載內核并加壓145.6 進一步配置并裁減內核

5、175.7 kconfig文件精解195.8修改konfig和make file,完成向內核中添加新的功能組件網卡,聲卡,lcd,觸摸屏驅動215.8.1 配置聲卡驅動245.8.2 配置lcd驅動255.8.3配置lcd驅動256 根文件系統的制作266.1嵌入式文件系統的概述266.1.1什么是嵌入式文件系統266.1.2嵌入式linux對文件系統的要求266.1.3嵌入式linux常用的文件系統276.2 根文件系統的目錄結構276.3 制作根文件系統步驟287 linux應用程序開發297.1 在應用程序這里,我主要研究的就是如下幾個模塊:297.2介紹mp3聲音控制模塊297.3實現

6、播放上一首、播放下一首、實現暫停播放307.4實現把歌曲加載到播放列表中347.5 顯示屏幕時間418 系統試運行結果與評價429 結束語43致 謝43參考文獻43附件1:44 嵌入式開發在多媒體中的應用研究xxx(重慶三峽學院數學與計算機科學學院信息與計算科學專業2007級)摘要:目前嵌入式系統技術已經成為了最熱門的技術之一,吸引了大批的優秀人才投入其中。為了想成為嵌入開發團隊中的一員,我們也努力開發一個簡單的嵌入式產品。我們開發的是一個mp3系統,本系統主要運用了如下知識:移植bootloader、移植內核、移植根文件系統、移植應用程序、驅動的編寫、應用程序的編寫。我們研究這個系統的主要目

7、的就是為了學習嵌入式的開發流程,體驗嵌入的可裁剪性,體驗嵌入式產品的資源有限性,體驗嵌入式開發中的樂趣。在開發該系統之前,我們必須得有個linux操作系統和arm開發板,這就是最基本的硬件環境。有了這些必備條件后,我們就開始動手做我們的mp3系統吧。首先我們就得看得懂開發板的硬件連接圖,然后會看開發板的數據手冊。這就是開發必備的基礎。有了這些基礎后我們就期待做出一個完整的mp3系統吧。最后對整個mp3系統作了一個簡要的總結并附錄上了一些功能模塊的主要源代碼。關鍵詞:嵌入式多媒體系統;c/arm匯編技術;bootloader移植技術;linux內核移植技術;linux文件系統制作技術;linux

8、應用程序移植技術;linux驅動編寫技術;linux應用編程技術;系統實現embedded development in multimedia applied research ting ting yang (grade 2007, information and computing science, college of mathematics and computer science, chongqing three gorges university, wanzhou, chongqing 404000 )abstract:at present the embedded system t

9、echnology had already become one of most popular technical, attracted large quantities of outstanding talents to invest in which.for wants to become in the inserting development team, we also diligently develop a simple embedded product. we develop is a mp3 system, this system has mainly utilized th

10、e following knowledge: transplants bootloader, the transplant kernel, to move takes root the filing system, the transplant application procedure, the actuation compilation, the application procedure compilation. we study this system's main purpose are to study the embedded development flow, expe

11、rience inserting may cutting out, experiences the embedded product resources finiteness, experiences in the embedded development the pleasure. before developing this system, we must result in have the linux operating system and the arm development board, this is the most basic hardware . key words:

12、embedded multimedia system; c/arm assembly technology; bootloader transplant technology; linux essence transplant technology; linux filing system manufacture technology; linux application procedure transplant technology; linux actuation compilation technology; linux using programming technology; the

13、 system realizes i第43頁 共44頁1引言和選課題的背景當我們滿懷憧憬與希望跨入二十一世紀大門的時候,計算機技術也開始進入一個被稱為后pc技術的時代。在現在日益信息化的社會中,計算機和網絡已經全面滲透到日常生活的每一個角落。對于我們每個人,需要的已經不再僅僅是那種放在桌上處理文檔,進行工作管理和生產控制的計算機"機器";各種各樣的新型嵌入式系統設備在應用數量上已經遠遠超過通用計算機,任何一個普通人可能擁有從大到小的各種使用嵌入式技術的電子產品,小到mp3,pda等微型數字化產品,大到網絡家電,智能家電,車載電子設備。而在工業和服務領域中,使用嵌入式技術的數

14、字機床,智能工具,工業機器人,服務機器人也將逐漸改變傳統的工業和服務方式。  嵌入式系統工業是專用計算機工業,其目的就是要把一切變得更簡單、更方便、更普遍、更適用;通用計算機的發展變為功能電腦,普遍進入社會,嵌入式計算機發展的目標是專用電腦,實現“普遍化計算”,因此可以稱嵌入式智能芯片是構成未來世界的“數字基因”。正如我國資深嵌入式系統專家沈緒榜院士的預言, “未來十年將會產生頭大小、具有超過一億次運算能力的嵌入式智能芯片”,將為我們提供無限的創造空間。總之“嵌入式微控制器或者說單片機好象是一個黑洞,會把當今很多技術和成果吸引進來。目前嵌入式系統技術已經成為了最熱門的技術之一,吸引了

15、大批的優秀人才投入其中。但是對于何為嵌入式系統,什么樣的技術又可以稱之為嵌入式技術,仍在討論之中,有關嵌入式系統定義的問題,已經在很多論壇社區引發了多次爭論。就這個問題我們可以分別從廣義上和狹義上講: 廣而化之,可以認為凡是帶有微處理器的專用軟硬件系統都可以稱為嵌入式系統。作為系統核心的微處理器又包括四類:嵌入式微處理器(empu)、嵌入式微控制器(emcu)、嵌入式數字信號處理器(edsp)和嵌入式片上系統(esoc)。嵌入式微處理器(embedded microprocessorunit , empu):嵌入式微處理器的基礎是通用計算機中的cpu。在應用中,將微處理器裝配在專門設計的電路板

16、上,只保留和嵌入式應用有關的母板功能,這樣可以大幅度減小系統體積和功耗。為了滿足嵌入式應用的特殊要求,嵌入式微處理器雖然在功能上和標準微處理器基本是一樣的,但在工作溫度、抗電磁干擾、可靠性等方面一般都做了各種增強。嵌入式微控制器(microcontroller unit , mcu):嵌入式微控制器又稱單片機。嵌入式微控制器一般以某一種微處理器內核為核心,芯片內部集成rompeprom、ram、總線、總線邏輯、定時器、計數器、watchdog、ipo、串行口、脈寬調制輸出、apd、dpa、flash ram、e2prom 等各種必要功能和外設。為適應不同的應用需求,一般一個系列的單片機具有多種

17、衍生產品,每種衍生產品的處理器內核都是一樣的,不同的是存儲器和外設的配置及封裝。這樣可以使單片機最大限度地和應用需求相匹配,功能不多不少,從而減少功耗和成本。和嵌入式微處理器相比,微控制器的最大特點是單片化,體積大大減小,從而使功耗和成本下降、可靠性提高。嵌入式dsp 處理器( embedded digital signalprocessor , edsp):dsp 處理器對系統結構和指令進行了特殊設計,使其適合于執行dsp 算法,編譯效率較高,指令執行速度也較高。在數字濾波、fft、譜分析等方面dsp 算法正在大量進入嵌入式領域,dsp 應用正從在通用單片機中以普通指令實現dsp 功能,過渡

18、到采用嵌入式dsp 處理器。嵌入式片上系統(system on chip) :隨著edi 的推廣和vlsi 設計的普及化,及半導體工藝的迅速發展,在一個硅片上實現一個更為復雜的系統的時代已來臨, 這就是system on chip(soc) 。各種通用處理器內核將作為soc 設計公司的標準庫,和許多其它嵌入式系統外設一樣,成為vlsi 設計中一種標準的器件,用標準的vhdl 等語言描述,存儲在器件庫中。用戶只需定義出其整個應用系統,仿真通過后就可以將設計圖交給半導體工廠制作樣品。這樣除個別無法集成的器件以外,整個嵌入式系統大部分均可集成到一塊或幾塊芯片中去,應用系統電路板將變得很簡潔,對于減小

19、體積和功耗、提高可靠性非常有利。總上所述:簡單的說:"嵌入式系統是指操作系統和功能軟件集成于計算機硬件系統之中。"還有人認為嵌入式系統就是"以應用為中心、以計算機技術為基礎、軟件硬件可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統"。應該說后者從功能應用特征上比較好的給出了嵌入式系統的定義,嵌入式的概念的分析根本上應該從應用上加以切入。     從狹義上講,我們更加強調那些使用嵌入式微處理器構成獨立系統,具有自己的操作系統并且具有某些特定功能的系統,這里的微處理器專指32位以上的微處理器。按照這種

20、定義,典型的嵌入式系統有使用x86的小型嵌入式工控主板,在各種自動化設備,數字機械產品中有非常廣闊的應用空間;另外一大類是使用intel,motorola等專用芯片構成的小系統,它不僅僅在新興的消費電子和通訊儀表等方面獲得了巨大的發展應用空間,而且甚至有趨勢取代傳統的工控機。現在大家更加清楚的看到:嵌入式技術的春天已經來了。所以也就難怪嵌入式系統成為當前最熱門的技術之一。嵌入式系統可以稱為后pc時代和后網絡時代的新秀。與傳統的通用計算機,數字產品相比,利用嵌入式技術的產品有其自己的特點: 由于嵌入式系統采用的是微處理器,實現相對單一的功能,采用獨立的操作系統,所以往往不需要大量的外圍器件。因而

21、在體積上,功耗上有其自身的優勢。相比之下,一個使用windows ce的pda,僅靠機內電源就可以使用幾天,而任何一臺筆記本僅僅能夠支持3小時左右。 嵌入式系統是將計算機技術、半導體技術和電子技術與各個行業的具體應用相結合后的產物,是一門綜合技術學科。由于空間和各種資源相對不足,嵌入式系統的硬件和軟件都必須高效率地設計,量體裁衣、去除冗余,力爭在同樣的硅片面積上實現更高的性能,這樣才能在具體應用中對處理器的選擇更具有競爭力。 嵌入式系統是一個軟硬件高度結合的產物。為了提高執行速度和系統可靠性,嵌入式系統中的軟件一般都固化在存儲器芯片或單片機本身中,而不是存貯于磁盤等載體中。片上系統,板上系統的

22、實現,使得以pda等為代表的這類產品擁有更加熟悉的操作界面和操作方式,比著傳統的商務通等功能更加完善,實用。 為適應嵌入式分布處理結構和應用上網需求,面向21世紀的嵌入式系統要求配備標準的一種或多種網絡通信接口。針對外部聯網要求,嵌入設備必需配有通信接口,相應需要tcp/ip協議簇軟件支持;由于家用電器相互關聯(如防盜報警、燈光能源控制、影視設備和信息終端交換信息)及實驗現場儀器的協調工作等要求,新一代嵌入式設備還需具備ieee1394、usb、can、bluetooth或irda通信接口,同時也需要提供相應的通信組網協議軟件和物理層驅動軟件。為了支持應用軟件的特定編程模式,如web或無線we

23、b編程模式,還需要相應的瀏覽器,如html、wml等。 因為嵌入式系統往往和具體應用有機地結合在一起,它的升級換代也是和具體產品同步進行,因此嵌入式系統產品一旦進入市場,具有較長的生命周期。 目前,嵌入式系統廣泛應用于生產過程控制、數據采集、傳輸通信等場合,主要用來對宿主對象進行控制,所以都對嵌入式系統有或多或少的實時性。例如,對嵌入在武器裝各中的嵌入式系統、在火箭中的嵌入式系統、一些工業控制裝置中的控制系統等應用中的實時性要求就極高。也正因為這種要求,在硬件上嵌人式系統極少使用存取速度慢的磁盤等存儲器,在軟件上更是加以精心設計,從而可使嵌入式系統快速地響應外部事件。當然,隨著嵌入式系統應用的

24、擴展,有些系統對實時性要求也并不是很高,例如近年來發展速度比較快的手持式計算機、掌上電腦等。但總體來說,實時性是對嵌入式系統的普遍要求,是設計者和用戶重點考慮的一個重要指標,所以具有實時性好。由于有些嵌入式系統所承擔的計算任務涉及產品質量、人身設各安全、國家機密等重大事務,加之有些嵌入式系統的宿主對象要工作在無人值守的場合,例如危險性高的工業環境中、內嵌有嵌入式系統的儀器儀表中、在人際罕至的氣象檢測系統中以及為偵察敵方行動的小型智能裝置中等。所以與普通系統相比較,對嵌入式系 統可靠性的要求極高,所以具有可靠性高。嵌入式系統軟件的特征嵌入式處理器的應用軟件是實現嵌入式系統功能的關鍵,對嵌入式處理

25、器系統軟件和應用軟件的要求也和通用計算機有所不同。 1)軟件要求固態化存儲為了提高執行速度和系統可靠性,嵌入式系統中的軟件一般都固化在存儲器芯片或單片機本身中,而不是存貯于磁盤等載體中。 2)軟件代碼高質量、高可靠性盡管半導體技術的發展使處理器速度不斷提高、片上存儲器容量不斷增加,但在大多數應用中,存儲空間仍然是寶貴的,還存在實時性的要求。為此要求程序編寫和編譯工具的質量要高,以減少程序二進制代碼長度、提高執行速度。 3)系統軟件(os) 的高實時性是基本要求多任務嵌入式系統中,對重要性各不相同的任務進行統籌兼顧的合理調度是保證每個任務及時執行的關鍵,單純通過提高處理器速度是無法完成和沒有效率

26、的,這種任務調度只能由優化編寫的系統軟件來完成,因此系統軟件的實時性是基本要求。4)多任務操作系統是知識集成的平臺和走向工業標準化道路的基礎我們開發的系統是一個mp3系統,該系統能夠實現選歌、播放、暫停、加減聲音、單曲循環、隨機播放、列表循環、刪除添加歌曲。該系統的實現是在arm9開發板上實現的。實現該系統就充分的把嵌入式的基本知識全部綜合在一起了。要實現該系統就得做如下幾步:1) 實現u-boot的移植。u-boot就是開機時的一段系統引導程序。該段程序被燒寫在rom中。該段程序就相當于我們pc即的bios程序一樣。2) 實現linux內核的移植。內核是操作系統的核心。3) 實現根文件系統的

27、制作。文件系統是操作系統用于明確磁盤或分區上的文件的方法和數據結構; 即在磁盤上組織文件的方法。也指用于存儲文件的磁盤或分區,或文件系統種類。 因此,可以說"我有2個文件系統"意思是他有2個分區,一個存文件,或他用 "擴展文件系統",意思是文件系統的種類。4) 移植應用程序。比如我們mp3要用到的madplayer應用程序。這個應用程序是實現放歌功能的。即實現mp3的解碼功能。5) 編寫驅動程序。即實現對開發板按鍵的操作。6) 編寫應用程序,即實現mp3的基本功能。7) 運行和測試系統。2 系統開發的環境 ubuntu是一種用戶友好、易于使用的linux

28、操作系統,已經成為開源領域中炙手可熱的明星,深受廣大linux用戶的喜愛。深入解析ubuntu操作系統全面介紹了ubuntu的安裝、使用與管理內容,包括如何配置linux桌面、如何使用日常工作所需要的軟件、如何搭建服務器,以及如何進行linux編程和網絡管理等,是目前市場上介紹ubuntu操作系統最全面、最翔實的一本著作,可幫助讀者切實掌握ubuntu,成為ubuntu應用高手。 mini2440是一款真正低價實用的arm9開發板,是目前國內性價比最高的一款學習板;它采用samsung s3c2440為微處理器,并采用專業穩定的cpu內核電源芯片和復位芯片來保證系統運行時的穩定性。mini24

29、40的pcb采用沉金工藝的四層板設計,專業等長布線,保證關鍵信號線的信號完整性,生產采用機器貼片,批量生產;出廠時都經過嚴格的質量控制,配合這本十分詳細的手冊,可以迅速幫你掌握嵌入式 linux和wince開發的流程,只要有c語言基礎的人一般2周即可入門。我們認為,嵌入式開發板不僅僅是一片可以看到“點亮led燈或者lcd”的電路板,只要你賦予它豐富的靈魂-嵌入式軟件,一切可以變得更加精彩,甚至可以重生,因此我們一直在不斷的更新和加強嵌入式軟件的開發,我們由衷地熱愛嵌入式系統這個事業,并為此保持激情和追求完美,目前我們提供的linux和windowsce 5.0/6.0系統,在技術和功能上已經達

30、到國內2440開發板中最高水平,它們各自的bootloader以及bsp均是100%開放的。arm匯編語言(assembly language)是面向機器的程序設計語言。arm匯編語言是一種功能很強的程序設計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。arm匯編語言”作為一門語言,對應于高級語言的編譯器,需要一個“匯編器”來把匯編語言原文件匯編成機器可執行的代碼。arm是advanced risc machines 的縮寫,它是一家微處理行業的知名企業。arm公司定義了7種主要的arm指令集體系結構版本,以版本號v1v7表示,arm匯編語言和x86匯編語言有很多相似之處。c語言是在

31、b語言的基礎上發展起來的,它的根源可以追溯到algol 60。 1960年出現的algol 60是一種面向問題的高級語言,它離硬件比較遠,不宜用來編寫系統程序。1963年英國的劍橋大學推出了cpl(combinedprogram- ming language)語言。cpl語言在algol 60的基礎上接近了硬件一些,但規模比較大,難以實現。1967年英國劍橋大學的matin richards對 cpl語言作了簡化,推出了bcpl(basic combined programming language)語言。1970年美國貝爾實驗室的 ken thompson以 bcpl語言為基礎,又作了進一步

32、簡化,設計出了很簡單的而且很接近硬件的 b語言( 取 bcpl的第一個字母),并用 b語言寫第一個unix操作系統,在pdp-7上實現。 1971年在pdp-11/20上實現了b語言,并寫了unix操作系統。但b語言過于簡單,功能有限。1972年至 1973年間,貝爾實驗室的 d.m.ritchie在b語言的基礎上設計出了c語言(取 bcpl的第二個字母)。c語言既保持了bcpl和b語言的優點(精練、接近硬件),又克服了它們的缺點(過于簡單、數據無類型等)。3 需求分析我們對這個多媒體系統從項目的可行性、需求分析的任務、總體設計、詳細設計等幾方面進行系統的分析。3.1 項目的可行性研究3.1.

33、1技術的可行性從該系統的整體上研究,該系統主要涉及到的知識就是c語言編程。一些硬件原理圖的基本知識。所以從技術上是可以完全實現該系統的。3.1.2經濟的可行性從經濟上說我們需要花費幾百塊的硬件成本就可以了,然而做出的mp3就能夠投入市場,并可以系統的學習嵌入式開發。3.1.3 操作的可行性有效的組合團隊進行開發,每個人負責一個功能模塊,則完全沒有問題。3.2 需求分析的任務3.2.1功能需求該系統實現的功能是:實現播放、暫停、上一首、下一首歌曲。實現增加、刪除歌曲。實現單曲循環、循環播放。實現選歌播放3.2.2性能需求該系統實現了看門狗功能,即使在很不幸的情況下,使內核崩潰,那么該系統也沒有問

34、題。這時候看門狗就會自動重啟系統,是系統恢復正常。所以有效的實現了系統的穩定性。3.3 總體設計3.3.1 設計過程首先我們將該系統分解為如下幾個部分實現。a、移植bootloader。b、移植內核。c、移植根文件系統d、移植應用程序e、編寫驅動程序。f、編寫應用程序。3.3.2 設計原理首先就是有一個能夠引導內核的程序,這個程序就是bootloader。然后內核引導啟動后就會啟動系統。但是啟動系統前必須有根文件系統。這個幫助管理系統。這樣我們一個真正的系統就在我們的開發板上跑起來了。所以我們在該操作系統中加上我們的應用程序就可以實現我們系統的功能了。當然我們的按鍵驅動模塊在操作系統啟動完畢后

35、就可以加入進內核。4 移植bootloader 4.1 boot loader的概念簡單地說,boot loader就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備,建立內存空間的映射圖,從而將系統的軟件環境帶到一個合適的狀態,以便為最終調用操作系統內核準備好正確的環境。4.2 boot loader的stage1stage1完成的主要任務:(1) 基本的硬件初始化這是boot loader一開始就執行的操作,其目的是為stage2的執行以及隨后的kernel的執行準備好一些基本的硬件環境。它通常包括以下步驟(以執行的先后順序):(2) 屏蔽所有的中斷為中斷提

36、供服務通常是os設備驅動程序的責任,因此在boot loader的執行全過程中可以不必響應任何中斷,中斷屏蔽可以通過寫cpu的中斷屏蔽寄存器或狀態寄存器(比如arm的cpsr寄存器)來完成。(3) 設置cpu的速度和時鐘頻率。(4) ram初始化包括正確地設置系統的內存控制器的功能寄存器等。(5) 關閉cpu內部指令/數據cache(6) 拷貝stage2到ram中拷貝時要確定兩點:stage2的可執行映象在固態存儲設備的存放起始地址和終止地址;ram空間的起始地址。(7) 設置堆棧指針sp堆棧指針的設置是為了只想c語言代碼作好準備。(8) 跳轉到stage2的c入口點在上述一切都就緒后,就可

37、以跳轉到boot loader的stage2去執行了。比如,在ram系統中,這可以通過修改pc寄存器為合適的地址來實現。4.3 boot loader的stage2stage2的代碼通常用 c語言來實現,以便于實現更復雜的功能和取得更好的代碼可讀性和可移植性。但是與普通c語言應用程序不同的是,在編譯和鏈接boot loader這樣的程序時,我們不能適應glibc庫中的任何支持函數。其原因是顯而易見的。(1) 初始化本階段要使用到的硬件設備這通常包括:初始化至少一個串口,以便和終端用戶進行i/o輸出信息。設備初始化完成后,可以輸出一些打印信息,程序名字字符串、版本號等。(2) 加載內核映像從no

38、r flash或nand flash(需要編寫nand flash裸驅動)上將內核映像拷貝到ram中(3) 設置內核的啟動參數應該說,在將內核映像拷貝到ram空間中后,就可以準備啟動linux內核了,但是在調用內核之前,應該做一步準備工作,即:設置linux內核的啟動參數。linux2.4.x以后的內部都期望以標記列表(tagged list)的形式來傳遞啟動參數。啟動參數標記列表以標記atag_core開始,以標記atag_none結束。每個標記由標識被傳遞參數的tag_header結構以及隨后的參數值數據結構來組成。數據結構tag和tag_header定義在linux內核源碼的includ

39、e/asm/setup.h頭文件中。在嵌入式linux系統中,通常需要有boot loader的設置的常見啟動參數有:atag_core、atag_mem、atag_cmdline(4) 調用內核boot loader調用linux內核的方法是直接跳轉到內核的第一條指令處,也即直接跳轉到mem_start+0x000地址處。在跳轉時,下列條件要滿足:a、cpu寄存器的設置:r0=0;r1=機 器 類 型 id; 關 于 machine type number,可 以 參 見linux/arch/arm/tools/mach-types。r2=啟動參數標記列表在ram中起始基地址;b、cpu模式

40、:必須禁止中斷(irqs和fiqs);cpu必須 處于svc模式;c、cache和mmu的設置:mmu必須關閉;指令cache可以打開也可以關閉;數據cache必須關閉; 常見的嵌入式bootloader下表顯示的是幾種不同的bootloader以及特性 各種bootloaderbootloadermonitor描述x86rampowerpclilo否linux磁盤引導程序是否否grub否gun的lilo替代程序是否否loadlin否從dos引導linux是否否rolo否從rom引導linux而不需要bios是否否etherboot否通過以太網卡啟動linux系統的固件是否否linuxbios

41、否完全替代buis的linux引導程序是否否blob否lart等硬件平臺的引導程序否是是u-boot是通用引導程序是是是redboot是基于ecos的引導程序是是是4.4 u-boot-1.1.6的移植首先去官網下載u-boot-1.1.6,然后用tar命令解壓u-boot-1.1.6。panbinpanbin-desktop:/panbin-work/ tar xzvf u-boot-1.1.6.tar.bz24.4.1 u-boot-1.1.6的代碼目錄結構簡介u-boot-1.1.6的代碼,其目錄結構主要分為與體系結構有關的代碼目錄以及與體系結構無關(通用)的代碼目錄。前者主要包含boa

42、rd目錄和cpu目錄,移植u-boot的工作主要就集中在對這些目錄里面特點文件的修改。board目錄下每一個子目錄都包含一個u-boot支持的硬件開發的支持代碼。u-boot-1.1.6源碼的目錄結構如下表:board平臺依賴存放電路板相關的目錄文件,例如:smdk2410(arm920t)等cpu平臺依賴存放cpu相關目錄文件,例如:arm720t、arm920t等lib_arm平臺依賴存放arm體系結構通用文件,主要用于實現arm平臺通用的函數include通用頭文件和開發板配置文件,所有開發板的配置文件都在config目錄下common通用通用多功能函數實現,即u-boot的命令lib_

43、generic通用通用庫函數的實現,如printfnet通用存放網絡的程序fs通用存放文件系統的程序post通用存放上電自檢程序drivers通用通用的設備驅動程序,主要是以太網接口的驅動和nand flsah驅動disk通用硬盤接口程序rtc通用rtc的驅動程序dtt通用數字溫度測量器或者傳感器examples應用例程一些獨立運行的應用程序的例子tools工具存放制作s-record或者u-boot格式的映像等工具doc文檔開發使用文檔以下內容由本人獨立完成5 linux內核移植5.1 內核簡介內核源碼可以從下載,arm體系結構的內核源碼補丁可以從www.arm.

44、.uk/developer下載。linux內核的版本號可以從源碼頂層目錄的makefile中看到。linux的版本號分為兩部分,即內核版本與發行版本。內核版本號由3 個數字組成:r.x.y。r:目前發布的內核主版本。x:偶數表示穩定版本;奇數表示開發中版本。y:錯誤修補的次數。例如:下面幾行構成了linux版本號version = 2patchlevel = 6sublevel = 22extraversion = 6內核版本的patchlevel,穩定內核為偶數,實驗版本內核為奇數。linux內核最初在1991年發布,是lanus tornados為386開

45、發的一個類minix的操作系統 linux1.0官方版本發行于1994年3月,僅支持386,僅支持單cpu系統 linux1.2發行于1995年3月,是第一個支持多平臺(alphasparcmips等)的版本 linux2.0發行于1996年6月,包含很多新平臺的支持,但最重要的是支持smp linux2.2在1999年1月發行,極大提升了smp系統性能,同時支持更多的硬件 linux2.4在2001年1月發行,進一步提升了smp系統的擴展性,同時集成了很多用于支持桌面系統的特性:usb pc卡(pcmcia),內置的即插即用等 linux2.6發布于2003年12月 · 支持更多的

46、平臺,從小規模的嵌入式到服務器級的64位系統 · 使用新的調度器,進程的切換效率更高 · 內核服務可被搶占,使得用戶操作可得到更快的響應 · i/o子系統進行了大修改,使得在各種工作負荷下都更具響應性 · 模塊子系統,文件系統都作了大量的改進 · 合并了uclinux的功能,以支持沒有mmu的cpu5.2 linux內核源碼目錄結構arch目錄arch是architecture的縮寫,內核所支持的每種cpu的體系,在該目錄下都有對應的子目錄,每個cpu的子目錄,又進一步分解為boot、mm、kernel等子目錄,控制系統引導,內存管理,系統調用

47、等。主要是c和匯編代碼。注意:arch/arm/boot 是內核引導代碼,(compressed/head.s)arch/arm/kernel、lib、mmarch/arm/match-s3c2440,機器平臺相關代碼arch/arm/tools,存放mach-types(該文件保存了linux支持的所有開發板機器編號)block目錄部分塊設備驅動程序。crypto目錄加密、壓縮、crc校驗算法documentation目錄內核文檔drivers目錄各種設備驅動程序,如nandflash、串口、cs8900等。站整個內核一半以上的代碼。fs目錄存放各種文件系統的實現代碼,每個子目錄對應一種文件

48、系統的實現,公用的源程序用于實現虛擬文件系統vfsinclude目錄內核所需要的頭文件,與體系結構相關的頭文件不在include中,在arch目錄中include/linux,平臺無關頭文件include/asm-arm,arm平臺相關頭文件include/asm-arm/arch-s3c2440,機器平臺相關頭文件init目錄內核的初始化代碼,非引導代碼,包括c語言的入口函數main.c和version.c,是研究內核的起點ipc(inter process communication)目錄進程通信的實現代碼,kernel目錄linux大多數關鍵的核心功能都是在這個目錄中實現的,比如:進程調

49、度、進程控制、模塊化、中斷。即他是內核的核心代碼lib目錄庫文件代碼,如strlen、memcpy等mm目錄內存管理代碼。他用于實現內存管理中與體系結構無關的代碼,與體系結構有關的代碼在arch目錄中的mm中net目錄網絡協議實現代碼samples目錄一些內核編程實例scripts目錄配置內核的腳本,配置內核時用到的,如make menuconfig命令security目錄se linux 的模塊,即安全模塊sound目錄音頻設備的驅動程序usr目錄cpio命令的實現,用戶命令的實現virt目錄內核虛擬機5.3 linux內核構造系統簡介5.3.1、kconfig文件,其作用是(1) 控制 m

50、ake menuconfig時,出現的配置選項;(2) 根據用戶的選擇,生產.config配置文件注意:主(初始)kconfig文件時arch/$(arch)/kconfig、arch/arm/kconfig。具體請參見documentationkbuildkconfig-language.txt(詳細的語法和語義在里面都有)5.3.2 config文件該配置文件定義了一系列變量(每個變量對應了一個內核組件),makefile將結合它來決定哪些文件被編譯進內核、哪些文件被編譯為模塊、進入哪些目錄進行遞歸編譯。注意:該文件是隱藏的,在配置內核完成后就會生成該文件。然后makefile根據它來決定

51、哪些該編譯進入內核。5.3.3 makefile文件(1) 頂層的makefile和arch/(arch)/makefile,作用:a、決定根目錄下哪些子目錄、arch/$(arch)目錄下哪些文件和目錄被將被編譯進內核。b、設置可影響所有文件的編譯、鏈接選項:cflags、aflags、ldflags、arglgsc、根據鏈接腳本arch/$(arch)/kernel/vmlinux.lds,按照一定順序組織文件生成映像文件vmlinux。(2) 各級子目錄下的makefile(kbuild)a、覺定所在目錄下哪些文件被編譯進內核,哪些文件被編譯為模塊,進入哪些子目錄繼續調用makefile

52、b、設置能夠影響當前目錄下所有文件的編譯,鏈接選項:extra_cflags、extra_aflags、extra_ldgags、extra_arflagsc、設置可以影響某個文件編譯選項:cflags_$、aflags_s#具體請參加:documentationkbuildmakefile.txt5.4 linux內核的構成5.4.1 系統調用接口sci 層提供了某些機制執行從用戶空間到內核的函數調用。正如前面討論的一樣,這個接口依賴于體系結構,甚至在相同的處理器家族內也是如此。sci 實際上是一個非常有用的函數調用多路復用和多路分解服務。在 ./linux/kernel 中您可以找到 sc

53、i 的實現,并在 ./linux/arch 中找到依賴于體系結構的部分。 5.4.2 進程管理進程管理的重點是進程的執行。在內核中,這些進程稱為線程,代表了單獨的處理器虛擬化(線程代碼、數據、堆棧和 cpu 寄存器)。在用戶空間,通常使用進程 這個術語,不過 linux 實現并沒有區分這兩個概念(進程和線程)。內核通過 sci 提供了一個應用程序編程接口(api)來創建一個新進程(fork、exec 或 portable operating system interface posix 函數),停止進程(kill、exit),并在它們之間進行通信和同步(signal 或者 posix 機制)。

54、進程管理還包括處理活動進程之間共享 cpu 的需求。內核實現了一種新型的調度算法,不管有多少個線程在競爭 cpu,這種算法都可以在固定時間內進行操作。這種算法就稱為 o/1(互斥量,信號量) 調度程序,這個名字就表示它調度多個線程所使用的時間和調度一個線程所使用的時間是相同的。 o(1) 調度程序也可以支持多處理器(稱為對稱多處理器或 smp)。您可以在 ./linux/kernel 中找到進程管理的源代碼,在 ./linux/arch 中可以找到依賴于體系結構的源代碼。 5.4.3 內存管理內核所管理的另外一個重要資源是內存。為了提高效率,如果由硬件、vfs 在用戶和文件系統之間提供了一個交

55、換層管理虛擬內存,內存是按照所謂的內存頁 方式進行管理的(對于大部分體系結構來說都是 4kb)。linux 包括了管理可用內存的方式,以及物理和虛擬映射所使用的硬件機制。不過內存管理要管理的可不止 4kb 緩沖區。linux 提供了對 4kb 緩沖區的抽象,例如 slab 分配器。這種內存管理模式使用 4kb 緩沖區為基數,然后從中分配結構,并跟蹤內存頁使用情況,比如哪些內存頁是滿的,哪些頁面沒有完全使用,哪些頁面為空。這樣就允許該模式根據系統需要來動態調整內存使用。為了支持多個用戶使用內存,有時會出現可用內存被消耗光的情況。由于這個原因,頁面可以移出內存并放入磁盤中。這個過程稱為交換,因為頁面會被從內存交換到硬盤上。內存管理的源代碼可以在 ./linux/mm 中找到。 5.4.4 虛擬文件系統虛擬文件系統(vfs)是 linux 內核中非常有用的一個方面,因為它為文件系統提供了一個通用的接口抽象。vfs 在 sci 和內核所支持的文件系統之間提供了一個交換層。 vfs 在用戶和文件系統之間提供了一個交換層在 vfs 上面,是對諸如 open、close、re

溫馨提示

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

評論

0/150

提交評論