2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設計(論文)</b></p><p><b>  題 目:</b></p><p><b>  系 別:</b></p><p><b>  專 業(yè):</b></p><p><b>  年

2、 級:</b></p><p><b>  姓 名:</b></p><p><b>  學 號:</b></p><p><b>  指導教師:</b></p><p><b>  摘 要</b></p><

3、;p>  關鍵詞:U-boot 、內(nèi)核配置、 根文件系統(tǒng)(rootfs)</p><p>  隨著 ARM芯片以及LINUX操作系統(tǒng)的出現(xiàn),為嵌入式的發(fā)展注入了強勁的活力。本設計實現(xiàn)LINUX操作系統(tǒng)向ARM9平臺的移植。U-boot是系統(tǒng)的啟動引導程序,要移植LIUNX操作系統(tǒng),U-boot是必不可少的。LINUX操作系移植成功后,系統(tǒng)還是不能正常啟動的,還需要根文件系統(tǒng)(rootfs)支持,這樣系統(tǒng)就可

4、以正常啟動。但是嵌入式系統(tǒng)往往是為某些特定的功能設計的,所以,系統(tǒng)要想完成某些功能,還需要頂層應用程序的支持。</p><p><b>  Abstract</b></p><p>  KEY WORDS :U-boot kernel rootfs</p><p>  With the ARM chip, as well as the em

5、ergence of LINUX operating system for embedded development into a strong vitality. LINUX Operating System Design and Implementation of the ARM9 platform to transplantation. U-boot the system boot process, it is necessar

6、y to transplant LIUNX operating system, U-boot is a must. LINUX operating system after a successful transplant, the system still does not start, but also the need for root file system (rootfs) support, so the system can

7、be a normal start. Howev</p><p><b>  完</b></p><p><b>  目 錄</b></p><p><b>  第一章 緒論3</b></p><p>  第二章 課題任務4</p><p> 

8、 第三章 設計依據(jù)6</p><p>  一.軟件平臺的選擇6</p><p>  二.硬件平臺的選擇8</p><p>  三.應用程序的選擇9</p><p>  第四章 系統(tǒng)規(guī)劃10</p><p>  一.系統(tǒng)分析流程10</p><p>  二.LINUX內(nèi)核的配置12

9、</p><p>  三.根文件系統(tǒng)選擇14</p><p>  第五章 設計主體18</p><p>  一.ARM-LINUX交叉工具的制作及安裝18</p><p>  二.U-boot的編譯及移植18</p><p>  三.LINUX內(nèi)核的配置編譯及移植20</p><p>

10、;  四.rootfs的制作及燒寫工作24</p><p>  五.應用程序的移植25</p><p>  第六章 個人體會26</p><p>  第七章 附錄27</p><p><b>  一.致謝27</b></p><p><b>  二.參考文獻27</

11、b></p><p><b>  第一章 緒論</b></p><p>  隨著嵌入式技術的發(fā)展,嵌入式的應用領域也越來越廣泛。隨著IC設計的發(fā)展,出現(xiàn)了工業(yè)化ARM芯片,可以說ARM是未來嵌入式開發(fā)的主宰。ARM是Advanced RISC Machines的首字母組合,是一類微型處理器的統(tǒng)稱。LINUX操作系統(tǒng)是目前嵌入式操作系統(tǒng)中主流的操作系統(tǒng),它不同于

12、WINDOWS,LINUX操作系統(tǒng)是完全開源的,這就使嵌入式開發(fā)過程大大降低了成本。另外,LINUX操作系統(tǒng)支持多種文件系統(tǒng),如EXT2、EXT3、MINIX、VFS等等。在ARM開發(fā)過程中LINUX操作系統(tǒng)的開發(fā)極為重要, LINUX下ARM的BOOTLOAD、內(nèi)核、文件系統(tǒng)的裁剪、移植、燒錄工作以及針對文件系統(tǒng)進行GUI的編寫任務,最終形成一成功的GUI界面,成為ARM-LINUX的開發(fā)重點。</p><p>

13、;  本設計選用的bootloader 為U-boot ,經(jīng)過編譯后生成二進制文件,將其燒寫到ARM平臺的NAND FLASH中。內(nèi)核選用LINUX操作系統(tǒng)LINUX 2.6.14.1版本的內(nèi)核源碼,將其進行修改之后移植到ARM9(S3C2410)的芯片上。文件系統(tǒng)采用busybox軟件包經(jīng)過修改用cramfs 工具生成.img映像文件,燒寫到NAND FLASH 中。</p><p>  ARM9系列處理器是英

14、國ARM公司設計的主流嵌入式處理器,主要包括</p><p>  ARM9TDMI和ARM9E-S等系列。本設計采用韓國三星公司生產(chǎn)的ARM9TDMI——s3c2410芯片。</p><p>  以手機應用為例,2G手機只需提供語音及簡單的文字短信功能,而目前的2.5G和未來的3G手機除了提供這兩項功能外,還必須提供各種其他的應用功能。主要包括:(1)無線網(wǎng)絡設備:手機上網(wǎng)、電子郵件及其他

15、定位服務等功能;(2)PDA功能:含有用戶操作系統(tǒng)(Windows CE、Symbian OS、LINUX等)及其他功能;(3)高性能功能:音頻播放器、視頻電話、手機游戲等。在2.5G和3G的應用中ARM9已經(jīng)全面替代了ARM7。因為ARM9的新特性能夠滿足各種新需求的同時減少產(chǎn)品研發(fā)時間并降低研發(fā)費用。</p><p>  新一代的ARM9處理器,通過全新的設計,采用了更多的晶體管,能夠達到兩倍以上于ARM7處

16、理器的處理能力。這種處理能力的提高是通過增加時鐘頻率和減少指令執(zhí)行周期實現(xiàn)的。</p><p><b>  第二章 課題任務</b></p><p>  本設計完成LINUX下ARM的BOOTLOAD、內(nèi)核、文件系統(tǒng)的燒錄工作,同時主要針對文件系統(tǒng)進行GUI的編寫任務,最終形成一成功的GUI界面。</p><p>  首先,是LINUX操作系

17、統(tǒng)的內(nèi)移植。包括內(nèi)核版本的選擇,根文件系統(tǒng)的制作,應用程序的移植等等。在ARM開發(fā)過程中LINUX操作系統(tǒng)的開發(fā)極為重要,本設計完成LINUX下ARM的BOOTLOAD、內(nèi)核、文件系統(tǒng)的燒錄工作,同時主要針對文件系統(tǒng)進行GUI的編寫任務,最終形成一成功的GUI界面。本設計要求學生掌握S3C2410的基本中斷知識,以及與外部液晶通信的相關知識。在設計過程中學生要先了解U-BOOT、內(nèi)核、文件系統(tǒng)的大體結構,利用所學知識熟悉對芯片的燒錄工作

18、。然后先從頂層對文件系統(tǒng)進行編輯,通過編輯文件系統(tǒng)形成對液晶屏幕的大體設計,本設計要求學生在液晶屏幕上制作一常用設備界面,并且通過掛載鍵盤驅(qū)動實現(xiàn)鍵盤對液晶的控制。</p><p><b>  第三章 設計依據(jù)</b></p><p><b>  一.軟件平臺的選擇</b></p><p>  LINUX系統(tǒng)屬于開放源代

19、碼軟件,由于LINUX系統(tǒng)具有穩(wěn)定、安全、網(wǎng)絡負載力強、占用硬件資源少等技術特點,自問世以來得到了迅速推廣和應用,并已 發(fā)展為當今世界的主流的嵌入式操作系統(tǒng)之一。</p><p>  LINUX在嵌入式的廣泛應用不是偶然的,這就取決于LINUX操作系統(tǒng)特點。</p><p><b>  1、完全免費</b></p><p>  LIN

20、UX是一款免費的操作系統(tǒng),用戶可以通過網(wǎng)絡或其他途徑免費獲得,并可以任意修改其源代碼。這是其他的操作系統(tǒng)所做不到的。正是由于這一點,來自全世界的無數(shù)程序員參與了LINUX的修改、編寫工作,程序員可以根據(jù)自己的興趣和靈感對其進行改變。這讓LINUX吸收了無數(shù)程序員的精華,不斷壯大。</p><p>  2、完全兼容POSIX 1.0標準</p><p>  這使得可以在LINUX下通過相應的

21、模擬器運行常見的DOS、Windows的程序。這為用戶從Windows轉到LINUX奠定了基礎。許多用戶在考慮使用LINUX時,就想到以前在Windows下常見的程序是否能正常運行,這一點就消除了他們的疑慮。</p><p><b>  3、多用戶、多任務</b></p><p>  LINUX支持多用戶,各個用戶對于自己的文件設備有自己特殊的權利,保證了各用戶之間互

22、不影響。多任務則是現(xiàn)在電腦最主要的一個特點,LINUX可以使多個程序同時并獨立地運行。</p><p><b>  4、良好的界面</b></p><p>  LINUX同時具有字符界面和圖形界面。在字符界面用戶可以通過鍵盤輸入相應的指令來進行操作。它同時也提供了類似Windows圖形界面的X-Windows系統(tǒng),用戶可以使用鼠標對其進行操作。在X-Windows環(huán)境

23、中就和在Windows中相似,可以說是一個LINUX版的Windows。</p><p><b>  5、豐富的網(wǎng)絡功能</b></p><p>  互聯(lián)網(wǎng)是在Unix的基礎上繁榮起來的,LINUX的網(wǎng)絡功能當然不會遜色。它的網(wǎng)絡功能和其內(nèi)核緊密相連,在這方面LINUX要優(yōu)于其他操作系統(tǒng)。在LINUX中,用戶可以輕松實現(xiàn)網(wǎng)頁瀏覽、文件傳輸、遠程登陸等網(wǎng)絡工作。并且可以

24、作為服務器提供WWW、FTP、E-Mail等服務。</p><p>  6、可靠的安全、穩(wěn)定性能</p><p>  LINUX采取了許多安全技術措施,其中有對讀、寫進行權限控制、審計跟蹤、核心授權等技術,這些都為安全提供了保障。LINUX由于需要應用到網(wǎng)絡服務器,這對穩(wěn)定性也有比較高的要求,實際上LINUX在這方面也十分出色。</p><p><b> 

25、 7、支持多種平臺 </b></p><p>  LINUX可以運行在多種硬件平臺上,如具有x86、680x0、SPARC、Alpha等處理器的平臺。此外LINUX還是一種嵌入式操作系統(tǒng),可以運行在掌上電腦、機頂盒或游戲機上。2001年1月份發(fā)布的LINUX 2.4版內(nèi)核已經(jīng)能夠完全支持Intel 64位芯片架構。同時LINUX也支持多處理器技術。多個處理器同時工作,使系統(tǒng)性能大大提高。</p&

26、gt;<p>  8、操作系統(tǒng)的低占用率</p><p>  LINUX是由內(nèi)核(kernel)以及在其之上的實用程序構成的,內(nèi)核負責管理計算機的各種資源,如處理器和內(nèi)存,而且必須保證合理地分配資源。當 LINUX啟動時,內(nèi)核被調(diào)入內(nèi)存,并一直駐留在內(nèi)存中直到關機斷電。同大多數(shù)的Unix或者類Unix系統(tǒng)類似,LINUX的內(nèi)核在設計的時候被設計的盡量很小,把許多工作交給內(nèi)核以外的實用程序執(zhí)行。通過利

27、用LINUX這個特點,用戶在安裝LINUX的時候可以定制安裝的應用程序的多少,在某些情況下用戶可以僅安裝一個LINUX的核心。</p><p><b>  9、低移植成本低</b></p><p>  LINUX能夠在幾乎所有的計算機平臺上運行,包括PC、PC服務器、UNIX服務器、中型機、大型計算機上,給用戶的應用軟件在不同的平臺之間的移植創(chuàng)造了極為便利的條件。&l

28、t;/p><p>  例如,企業(yè)級用戶隨著業(yè)務的不斷增長,硬件平臺從小型的PC服務器升級到較高端的UNIX服務器,甚至更高端的中型機或大型機的情況是極為常見的。過去,由于PC服務器使用的是Windows 操作系統(tǒng),而UNIX 服務器使用的操作系統(tǒng),中型機和大型機使用的是廠商提供的專用系統(tǒng),所以在不同的平臺之間的軟件移植,可能會發(fā)生中間件軟件的版本更換,應用軟件的重新編譯,甚至是應用軟件源代碼的修改,很可能需要比較大的

29、人力物力的投入,而如果采用了LINUX 操作系統(tǒng),不同平臺之間的移植就會容易的多。</p><p>  綜合LINUX的以上優(yōu)點,本設計的軟件平臺采用Ubuntu LINUX 8.10作為主機(host)的開發(fā)平臺。</p><p>  LINUX系統(tǒng)內(nèi)核選用2.6版本的內(nèi)核LINUX-2.6.14.1。因為LINUX系統(tǒng)2.6版本的內(nèi)核自2003推出至今,一直在不斷升級,小版本號一直在變

30、化,選用這款2.6.14.1的內(nèi)核是因為其移植較最新版本的內(nèi)核移植過程更為復雜,使我在一直過程中更能深一步了解移植的過程,學到更多的經(jīng)驗,故而選擇這款內(nèi)核。</p><p>  文件系統(tǒng)的選擇是具有通用性質(zhì)的,我在這里選用busybox工具集。熟悉LINUX的人對busybox一定不陌生,它被非常形象地成為嵌入式LINUX系統(tǒng)的“瑞士軍刀”,因為它將許多常用的UNIX(LINUX的前身)命令和工具集合到了一個單獨

31、的可執(zhí)行程序當中,這樣就為文件系統(tǒng)的移植提供了很大的方便。這些常用的命令對于嵌入式系統(tǒng)而言已經(jīng)足夠了,所以選用busybox軟件包制作文系統(tǒng)。</p><p><b>  二.硬件平臺的選擇</b></p><p>  硬件平臺選用韓國三星公司的ARM9處理器——S3C2410,S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,采用0.1

32、8um制造工藝的32位微控制器。該處理器擁有:獨立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個USB主機,1個USB設備,SD主機和MMC接口,2路SPI。S3C2410處理器最高可運行在203MHz。而且s3c

33、2410的價格比較便宜,在實十幾美元左右,可以說是物美價廉。</p><p>  核心板的尺寸僅相當于名片的2/3大小,尺寸如此小巧的嵌入式核心板是國內(nèi)首創(chuàng)。開發(fā)商可以充分發(fā)揮想象力,設計制造出小體積,高性能的嵌入式應用產(chǎn)品。</p><p> ?。?)S3C2410芯片集成了大量的功能單元,包括:</p><p>  ◆ 內(nèi)部1.8V,存儲器3.3V,外部I/O3

34、.3V,16KB數(shù)據(jù)Cache,16KB指令Cache,MMU。</p><p>  ◆ 內(nèi)置外部存儲器控制器(SDRAM控制和芯片選擇邏輯)。</p><p>  ◆ LCD控制器,一個LCD專業(yè)DMA。</p><p>  ◆ 4個帶外部請求線的DMA。</p><p>  ◆ 3個通用異步串行端口(IrDA1.0,16-Byte Tx

35、FIFO and 16-Byte Rx FIFO),2通道SPI</p><p>  ◆ 一個多主I2C總線,一個I2S總線控制器。</p><p>  ◆ SD主接口版本1.0和多媒體卡協(xié)議版本2.11兼容。</p><p>  ◆ 兩個USB HOST,一個USB DEVICE(VER1.1)。</p><p>  ◆ 4個PWM定時器和

36、一個內(nèi)部定時器。</p><p><b>  ◆ 看門狗定時器。</b></p><p>  ◆ 117個通用I/O。</p><p><b>  ◆ 56個中斷源。</b></p><p>  ◆ 24個外部中斷。</p><p>  ◆ 電源控制模式:標準、慢速、休眠、掉

37、電。</p><p>  ◆ 8通道10位ADC和觸摸屏接口。</p><p>  ◆ 帶日歷功能的實時時鐘。</p><p>  ◆ 芯片內(nèi)置PLL。</p><p>  ◆ 設計用于手持設備和通用嵌入式系統(tǒng)。</p><p>  ◆ 16/32位RISC體系結構,使用ARM920T CPU核的強大指令集。</

38、p><p>  ◆ 帶MMU的先進的體系結構支持WinCE、EPOC32、LINUX。</p><p>  ◆ 指令緩存(Cache)、數(shù)據(jù)緩存、寫緩存和物理地址TAG RAM,減小了對主存儲器帶寬和性能的影響。</p><p>  ◆ ARM920T CPU核支持ARM調(diào)試的體系結構。</p><p>  ◆ 內(nèi)部先進的位控制器總線(AMBA)

39、(AMBA2.0,AHB/APB)。</p><p><b> ?。?)系統(tǒng)管理</b></p><p><b>  ◆ 小端/大端支持</b></p><p>  ◆ 地址空間:每個BANK128MB(全部為1GB)。</p><p>  由于ARM9芯片的功能強大,管腳豐富,開發(fā)資源豐富,在綜合

40、其價位,決定選用三星公司的這款s3c2410芯片作為硬件平臺。</p><p><b>  三.應用程序的選擇</b></p><p>  應用程序是簡單的MP3播放器移植,這里做的工作主要是系統(tǒng)的搭建,應用程序只是作為檢測系統(tǒng)而作的輔助工作。以此證明系統(tǒng)的可靠、安全、穩(wěn)定的性質(zhì)。</p><p><b>  第四章 系統(tǒng)規(guī)劃<

41、/b></p><p><b>  一.系統(tǒng)分析流程</b></p><p>  從系統(tǒng)的流程圖可以看出,U-Boot是系統(tǒng)構建的第一步。</p><p>  U-Boot,全稱Universal Boot Loader,是遵循GPL條款的開放源碼項目。從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來。其源碼目錄、編譯形式與

42、LINUX內(nèi) 核很相似,事實上,不少U-Boot源碼就是相應的LINUX內(nèi)核源程序的簡化,尤其是一些設備的驅(qū)動程序,這從U-Boot源碼的注釋中能體現(xiàn)這一點。 但是U-Boot不僅僅支持嵌入式LINUX系統(tǒng)的引導,當前,它還支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系統(tǒng)。其目前要支持的目標操作系統(tǒng)是OpenBSD, NetBSD, FreeBSD,4.4BSD, LINUX, SV

43、R4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。這是U-Boot中Universal的一層含義。另外一層含義則是U-Boot除了支持PowerPC系列的處理器外,還能支持MIPS、 x86、ARM、NIOS、XScale等諸多常用系列的處理器。</p><p>  以上兩個特點正是U-Boot項目的

44、開發(fā)目標,即支持盡可能多的嵌入式處理器和嵌入式操作 系統(tǒng)。就目前來看,U-Boot對PowerPC系列處理器支持最為豐富,對LINUX的支持最完善。其它系列的處理器和操作系統(tǒng)基本是在2002年11 月PPCBOOT改名為U-Boot后逐步擴充的。從PPCBOOT向U-Boot的順利過渡,很大程度上歸功于U-Boot的維護人德國DENX軟件工 程中心Wolfgang Denk[以下簡稱W.D]本人精湛專業(yè)水平和持著不懈的努力。當前,U-B

45、oot項目正在他的領軍之下,眾多有志于開放源碼BOOT LOADER移植工作的嵌入式開發(fā)人員正如火如荼地將各個不同系列嵌入式處理器的移植工作不斷展開和深入,以支持更多的嵌入式操作系統(tǒng)的裝載與引導。</p><p>  選擇U-Boot的理由:</p><p><b>  1.開放源碼;</b></p><p>  2.支持多種嵌入式操作系統(tǒng)內(nèi)核

46、,如LINUX、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS;</p><p>  3.支持多個處理器系列,如PowerPC、ARM、x86、MIPS、XScale;④ 較高的可靠性和穩(wěn)定性;</p><p>  4.較高的可靠性和穩(wěn)定性;</p><p>  5.高度靈活的功能設置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導要求

47、、產(chǎn)品發(fā)布等;</p><p>  6.豐富的設備驅(qū)動源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等;</p><p>  7.較為豐富的開發(fā)調(diào)試文檔與強大的網(wǎng)絡技術支持;</p><p>  U-Boot主要目錄結構</p><p>  - board 目標板相關文件,主要包含SDRAM、FL

48、ASH驅(qū)動;</p><p>  - common 獨立于處理器體系結構的通用代碼,如內(nèi)存大小探測與故障檢測;- cpu 與處理器相關的文件。如mpc8xx子目錄下含串口、網(wǎng)口、LCD驅(qū)動及中斷初始化等文件;</p><p>  - driver 通用設備驅(qū)動,如CFI FLASH驅(qū)動(目前對INTEL FLASH支持較好)- doc U-Boot的說明文檔;</p><

49、;p>  - examples可在U-Boot下運行的示例程序;如hello_world.c,timer.c;- include U-Boot頭文件;尤其configs子目錄下與目標板相關的配置頭文件是移植過程中經(jīng)常要修改的文件;</p><p>  - lib_xxx 處理器體系相關的文件,如lib_ppc, lib_arm目錄分別包含與PowerPC、ARM體系結構相關的文件;</p>&

50、lt;p>  - net 與網(wǎng)絡功能相關的文件目錄,如bootp,nfs,tftp;</p><p>  - post 上電自檢文件目錄。尚有待于進一步完善;</p><p>  - rtc RTC驅(qū)動程序;</p><p>  - tools 用于創(chuàng)建U-Boot S-RECORD和BIN鏡像文件的工具;</p><p>

51、  U-Boot支持的主要功能</p><p>  U-Boot可支持的主要功能列表系統(tǒng)引導 支持NFS掛載、RAMDISK(壓縮或非壓縮)形式的根文件系統(tǒng)支持NFS掛載、從FLASH中引導壓縮或非壓縮系統(tǒng)內(nèi)核;基本輔助功能 強大的操作系統(tǒng)接口功能;可靈活設置、傳遞多個關鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤對LINUX支持最為強勁;支持目標板環(huán)境參數(shù)多種存儲方式,如FLASH、NVRA

52、M、EEPROM;CRC32校驗,可校驗FLASH中內(nèi)核、RAMDISK鏡像文件是否完好;設備驅(qū)動 串口、SDRAM、FLASH、以太網(wǎng)、LCD、NVRAM、EEPROM、鍵盤、USB、PCMCIA、PCI、RTC等驅(qū)動支持;上電自檢功能 SDRAM、FLASH大小自動檢測;SDRAM故障檢測;CPU型號;特殊功能 XIP內(nèi)核引導;</p><p>  因為我們的目標板是arm體系的平臺,所以不能只單純的用主機(

53、host)上的編譯工具直接編譯,那樣就會造成程序無法運行,最終導致移植工程失敗。所以我們將要GCC編譯工具進行改裝,生成交叉工具。</p><p>  下面就是交叉編譯工具(arm-LINUX-gcc)的制作流程</p><p>  二.LINUX內(nèi)核的配置</p><p>  有了U-boot和交叉編譯工具,接下來就要對內(nèi)核進行配置。</p><

54、;p>  今天的LINUX是全球被最廣泛移植的操作系統(tǒng)內(nèi)核。從掌上電腦iPAQ到IBM S/390(一種可以同時跑成千上百個LINUX的大型電腦),甚至于有人成功的將LINUX內(nèi)核在新力出品的游戲機PS2及PS3和微軟出品的游戲機Xbox上使用。</p><p>  LINUX也是IBM "Blue Gene" Blue Gene的操作系統(tǒng)。直至2008年11月,全球前五百大超級電腦(T

55、OP 500)有高達87.8%的比例采用LINUX為它們的作業(yè)系統(tǒng),最快的超級電腦IBM_Roadrunner正是采用LINUX的。</p><p>  LINUX目前可以在以下結構上運行:</p><p>  ◆Acorn:Archimedes,A5000和RiscPC系列 </p><p>  ◆ARC International的 Argonaut RISC

56、Core (ARC) </p><p><b>  ◆ARM 系列: </b></p><p>  ◆Atmel AVR32 </p><p>  ◆Axis Communications的 ETRAX CRIS </p><p>  ◆Fujitsu FR-V </p><p>  ◆Alpha

57、 系列: </p><p>  ◆Hewlett-Packard的 Integrity家族 使用Intel Itanium CPU </p><p>  ◆Renesas Technology(日立的前身)H8 系列 </p><p>  ◆Intel IA-64 Itanium, Itanium II </p><p>  ◆IBM的 S/

58、390(31-bit) </p><p>  ◆IBM的 zSeries 與 System z9 大型主機(64-bit) </p><p><b>  ◆x86 系列: </b></p><p><b>  ◆三菱的M32R </b></p><p>  ◆MIPS 架構: </p>

59、<p>  ◆Freescale(Motorola的前身)68K 架構(68020, 68030, 68040, 68060): </p><p>  ◆NEC v850e </p><p>  ◆Power Architecture: </p><p>  ◆PowerPC 系列: </p><p><b>  ◆SP

60、ARC: </b></p><p>  ◆日立 SuperH:SEGA Dreamcast </p><p>  ◆IBM的AS/400 </p><p>  ◆新力的 Playstation 2 </p><p>  從以上的數(shù)據(jù)不難看出,LINUX能夠在幾乎所有的計算機平臺上運行,包括ARM、X86、PC、PC服務器、Atme

61、l、UNIX服務器、MIPS 架構、中型機、大型計算機上,給應用軟件在不同的平臺之間的移植創(chuàng)造了極為便利的條件。而且LINUX是一款免費的操作系統(tǒng),用戶可以通過網(wǎng)絡或其他途徑免費獲得,并可以任意修改其源代碼。這是其他的操作系統(tǒng)所做不到的。正是由于這一點,來自全世界的無數(shù)程序員參與了LINUX的修改、編寫工作,程序員可以根據(jù)自己的興趣和靈感對其進行改變。這讓LINUX吸收了無數(shù)程序員的精華,不斷壯大。正是因為LINUX系統(tǒng)支持多種平臺,移

62、植性強,而且內(nèi)核可裁剪等特點,故而選用LINUX內(nèi)核。具體到本設計,則選用LINUX-2.6.14.1版本的內(nèi)核。</p><p>  以下是LINUX-2.6.14.1版本的內(nèi)核的配置流程。</p><p><b>  三.根文件系統(tǒng)選擇</b></p><p>  文件系統(tǒng)是LINUX操作系統(tǒng)的重要組成部分,LINUX文件具有強大的功能。文

63、件系統(tǒng)中的文件是數(shù)據(jù)的集合,文件系統(tǒng)不僅包含著文件中的數(shù)據(jù)而且還有文件系統(tǒng)的結構,所有LINUX 用戶和程序看到的文件、目錄、軟連接及文件保護信息等都存儲在其中。</p><p>  LINUX 最早的文件系統(tǒng)是Minix,但是專門為LINUX 設計的文件系統(tǒng)——擴展文件系統(tǒng)第二版或EXT2被設計出來并添加到LINUX中,這對LINUX產(chǎn)生了重大影響。EXT2文件系統(tǒng)功能強大、易擴充、性能上進行了全面優(yōu)化優(yōu)化,也

64、是現(xiàn)在所以LINUX發(fā)布和安裝的標準文件系統(tǒng)類型。</p><p>  每個實際文件系統(tǒng)從操作系統(tǒng)和系統(tǒng)服務中分離出來,它們之間通過一個接口層:虛擬文件系統(tǒng)或VFS來通訊。VFS使得LINUX可以支持多個不同的文件系統(tǒng),每個表示一個VFS 的通用接口。由于軟件將LINUX 文件系統(tǒng)的所有細節(jié)進行了轉換,所以LINUX核心的其它部分及系統(tǒng)中運行的程序?qū)⒖吹浇y(tǒng)一的文件系統(tǒng)。LINUX 的虛擬文件系統(tǒng)允許用戶同時能透明

65、地安裝許多不同的文件系統(tǒng)。</p><p>  在LINUX文件系統(tǒng)中,作為一種特殊類型/proc文件系統(tǒng)只存在內(nèi)存當中,而不占用外存空間。它以文件系統(tǒng)的方式為訪問系統(tǒng)內(nèi)核數(shù)據(jù)的操作提供接口。/proc文件系統(tǒng)是一個偽文件系統(tǒng),用戶和應用程序可以通過/proc得到系統(tǒng)的信息,并可以改變內(nèi)核的某些參數(shù)。</p><p>  在LINUX文件系統(tǒng)中,EXT2文件系統(tǒng)、虛擬文件系統(tǒng)、/proc文

66、件系統(tǒng)是三個具有代表性的文件系統(tǒng),本論文試圖通過對他們的分析來研究LINUX文件系統(tǒng)機制。并且在分析這三種文件系統(tǒng)的基礎上對LINUX文件系統(tǒng)操作進行了解、研究(本論文選取了open和close兩種操作進行研究)。在第二部分中將介紹EXT2文件系統(tǒng);第三部分論述虛擬文件系統(tǒng)的特點;第四部分簡要介紹/proc文件系統(tǒng);最后,介紹兩種具體文件系統(tǒng)操作的實現(xiàn)。就本設計而言,選用LINUX支持的只讀文件系統(tǒng)——Cramfs文件系統(tǒng)。</p

67、><p>  Cramfs是 Compressed Rom File System的英文縮寫,它是LINUX Torvalds在Transmeta任職時,所參與開發(fā)的文件系統(tǒng)。它是針對LINUX內(nèi)核2.4之后的版本所設計的一種新型只讀文件系統(tǒng),采用了zlib 壓縮,壓縮比一般可以達到1:2,但仍可以作到高效的隨機讀取,LINUX系統(tǒng)中,通常把不需要經(jīng)常修改的目錄壓縮存放,并在系統(tǒng)引導的時候再將壓縮文件解開。因為Cra

68、mfs不會影響系統(tǒng)的讀取文件的速度,而且是一個高度壓縮的文件系統(tǒng)。因此非常廣泛應用于嵌入式系統(tǒng)中。</p><p>  在嵌入式的環(huán)境之下,內(nèi)存和外存資源都需要節(jié)約使用。如果使用RAMDISK方式來使用文件系統(tǒng),那么在系統(tǒng)運行之后,首先要把Flash上的映像文件解壓縮到內(nèi)存中,構造起RAMDISK環(huán)境,才可以開始運行程序。但是它也有很致命的弱點。在正常情況下,同樣的代碼不僅在Flash中占據(jù)了空間(以壓縮后的形式

69、存在),而且還在內(nèi)存中占用了更大的空間(以解壓縮之后的形式存在),這違背了嵌入式環(huán)境下盡量節(jié)省資源的要求。 </p><p>  使用CramFS文件系統(tǒng)就是一種解決這個問題的方式。CramFS是一個壓縮格式的文件系統(tǒng),它并不需要一次性地將文件系統(tǒng)中的所有內(nèi)容都解壓縮到內(nèi)存之中,而只是在系統(tǒng)需要訪問某個位置的數(shù)據(jù)的時候,馬上計算出該數(shù)據(jù)在CramFS中的位置,將它實時地解壓縮到內(nèi)存之中,然后通過對內(nèi)存的訪問來獲取

70、文件系統(tǒng)中需要讀取的數(shù)據(jù)。CramFS中的解壓縮以及解壓縮之后的內(nèi)存中數(shù)據(jù)存放位置都是由CramFS文件系統(tǒng)本身進行維護的,用戶并不需要了解具體的實現(xiàn)過程,因此這種方式增強了透明度,對開發(fā)人員來說,既方便,又節(jié)省了存儲空間。 </p><p>  一個完整的cramfs文件系統(tǒng)通常包含以下幾個目錄: </p><p>  /LINUXrc 啟動腳本文件,由Boot Loader核心命令行確

71、定init=/LINUXrc,加載/etc目錄為ramfs,(cramfs為只讀文件系統(tǒng)),拷貝/mnt/etc到/etc,配置文件目錄重新加載根文件系統(tǒng)和/etc文件系統(tǒng),執(zhí)行init進程。 </p><p>  /bin 引導啟動所需的命令或用戶可能用的命令。 </p><p>  /sbin 系統(tǒng)管理員服務程序,其中最重要的是供內(nèi)核初始化之后執(zhí)行/sbin/init進程,系統(tǒng)啟動時

72、由init解釋并運行/etc/inittab, inittab將指導int去調(diào)用一個系統(tǒng)初始化程序/etc/init.d/rcS。 </p><p>  /etc 特定機器的配置文件以及用戶數(shù)據(jù)存放目錄,其中的所有內(nèi)容是在內(nèi)核運行后,由LINUXrc 從/mnt/etc拷貝得到的。 </p><p>  /lib 文件系統(tǒng)上的程序所需的動態(tài)庫。 </p><p&g

73、t;  /dev 驅(qū)動程序存放目錄,可以在這里存放自己編寫的驅(qū)動程序。 </p><p>  /usr 用于存放用戶程序和配置文件的目錄,可以根據(jù)需要進行設置。目錄下的/usr/etc/rc.local執(zhí)行本地所需要的初始化,如安裝核心模塊,進行網(wǎng)絡,運行應用程序,啟動圖形界面等。/etc/modules.conf在系統(tǒng)運行期間自動加載模塊。 </p><p>  /mnt 用于設備安裝的

74、目錄。/mnt/etc/init.d/rcS完成各個文件系統(tǒng)的Mount,執(zhí)行/usr/etc/rc.local;通過rcS可以調(diào)動dhcp程序配置網(wǎng)絡。rcS執(zhí)行完以后,就會打開Shell。 </p><p>  /proc 系統(tǒng)狀態(tài)文件目錄, 目錄中的文件可以用于訪問有關內(nèi)核的狀態(tài)、計算機的屬性、正在運行的進程的狀態(tài)等信息。盡管 /proc 中的文件是虛擬的,但它們?nèi)钥梢允褂萌魏挝募庉嬈骰蛳?#39;mor

75、e', 'less'或 'cat'這樣的程序來查看。</p><p>  以下是cramfs文件系統(tǒng)的制作流程:</p><p><b>  第五章 設計主體</b></p><p>  一.ARM-LINUX交叉工具的制作及安裝</p><p>  下載得到crosstools

76、.tar.gz.</p><p>  把源碼包拷貝到一指定目錄下,解壓:</p><p>  $ sudo mkdir /usr/local/arm</p><p>  $ sudo tar jxvf crosstools.tar.gz –C /usr/local/arm</p><p>  切換到超級用戶,進入解壓目錄,修改demo-ar

77、m9tdmi.sh腳本文件:</p><p>  (1) 修改軟件包下載路徑到用戶根目錄的downloads:</p><p>  TARBALLS_DIR = $HOME/downloads</p><p>  (2) 修改生成的交叉工具存放目錄:</p><p>  RESULT_DIR = $HOME/crosstools </p

78、><p>  (3) 修改編譯依賴工具為:</p><p>  將 #eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls,dat`的“#”去掉。</p><p>  修改 arm9tdmi.dat 文件</p><p>  將生成的目標文件名改為 arm-LINUX-,即:</p>&l

79、t;p>  TARGET = arm-LINUX-</p><p>  執(zhí)行demo-arm9tdmi.sh腳本,即:</p><p>  ./ demo-arm9tdmi.sh 這樣就生成了交叉工具cross-3.3.2.tar.bz2</p><p>  6. 將生成的cross-3.3.2.tar.bz2拷貝到/home/fang/local目錄下并解壓

80、縮:</p><p>  cp –a /fang/crosstools/cross-3.3.2.tar.bz2 /home/fang/local</p><p>  cd /home/fang/local</p><p>  tar jxvf cross-3.3.2.tar.bz2</p><p><b>  7. 添加環(huán)境變量&l

81、t;/b></p><p>  sudo vim /etc/profile 在文件的末尾添加如下代碼:</p><p>  export PATH=/home/fang/local/bin/:$PATH 并保存退出。</p><p><b>  在終端中輸入</b></p><p>  source /etc/pr

82、ofile 這樣交叉編譯工具就可以正常使用了。</p><p>  二.U-boot的編譯及移植</p><p>  U-boot是通過GCC和Makefile組織編譯的,頂層的Makefile首先可以定置開發(fā)平臺的定義,然后遞歸調(diào)用各級子目錄下的Makefile,最終把編譯過的程序鏈接成U-boot.img映像。</p><p>  1.U-boot的編譯<

83、;/p><p>  在U-boot頂層目錄中執(zhí)行 </p><p>  ./make smdk2410_config ,</p><p><b>  make </b></p><p>  這兩條命令執(zhí)行后就會生成System.map ,u-boot ,u-boot.bin ,u-boot.srec四個映像文件,Syste

84、m.map:是u-boot 映像的符號表,u-boot是u-boot映像的ELF格式,u-boot.bin是u-boot映像的原始二進制格式,u-boot.srec是u-boot映像的S-Record格式,因為目標板中沒有任何系統(tǒng),所以這里選用u-boot映像的原始二進制格式文件u-boot.bin。</p><p>  2.U-boot的加載</p><p>  使用燒寫工具將u-boo

85、t.bin燒寫到nandflash中。</p><p>  將SJF2410_BIOS.BAT文件中的內(nèi)容替換成u-boot.bin,如 </p><p>  sjf2410 /f:u-boot.bin,運行SJF2410_BIOS.BAT,在窗口中輸入</p><p><b>  回車;</b></p><p><

86、;b>  0,回車;</b></p><p><b>  回車;如下圖:</b></p><p>  這樣就將生成的u-boot.bin燒寫到了nandflash中了。</p><p>  三.LINUX內(nèi)核的配置編譯及移植</p><p>  1. 下載LINUX 內(nèi)核:LINUX-2.6.14.1.

87、tar.bz2并解壓</p><p>  2. 修改Makefile </p><p>  找到ARCH 和CROSS_COMPILE,修改</p><p>  ARCH ?= ARM</p><p>  CROSS_COMPILE ?= arm-LINUX-</p><p>  3.設置nandflash分區(qū)

88、</p><p>  (1) 修改arch/arm/mach-s3c2410/devc.s</p><p><b>  在其中添加</b></p><p>  #include<LINUX/mtd/partitions.h></p><p>  #include<LINUX/mtd/nand.h>

89、</p><p>  #include<asm/arch/nand.h></p><p><b>  在文件尾添加</b></p><p>  /* 為nandflash 劃分分區(qū)( nand Controller) */</p><p>  Static struct mtd_partition pa

90、rtition_info[] ={</p><p><b>  {</b></p><p>  name : “boot’’,</p><p>  size: 0x00100000,</p><p>  offset :0x0,</p><p><b>  },{</b>&l

91、t;/p><p>  name : “kernel’’,</p><p>  size: 0x00300000,</p><p>  offset :0x00100000,</p><p><b>  },{</b></p><p>  name : “root’’,</p><p

92、>  size: 0x02800000,</p><p>  offset :0x00400000,</p><p><b>  },{</b></p><p>  name : “user’’,</p><p>  size: 0x01400000,</p><p>  offset :0

93、x02c00000,</p><p><b>  }</b></p><p><b>  };</b></p><p>  /*加入nandflash分區(qū)*/</p><p>  struct s3c2410_platform_nand superlpplatform={</p>&l

94、t;p><b>  tacls:0,</b></p><p>  twrph0:30,</p><p><b>  twrph1:0</b></p><p>  sets: &nandset,</p><p>  nr_sets:1,</p><p><b

95、>  };</b></p><p>  注:sets :支持的分區(qū)集</p><p>  nr_set:分區(qū)個數(shù)</p><p>  /*加入nandflash芯片支持到nandflash驅(qū)動*/</p><p>  struct_platform_device s3c_device_nand = {</p>

96、<p>  .name = “s3c2410-nand”,</p><p><b>  .id = 1,</b></p><p>  .num_resources = ARRAY_SIZE(s3c_nand_resource),</p><p>  .resource = s3c_nand_resource,</p>&

97、lt;p>  /*添加 nand flash 設備*/</p><p><b>  .dev = {</b></p><p>  .platform_data = &superlpplatform</p><p><b>  }</b></p><p><b>  };<

98、;/b></p><p>  將文件中與“加入nandflash芯片支持到nandflash驅(qū)動”相同的部分注釋掉,并保存退出。</p><p>  4.指定啟動時初始化</p><p>  系統(tǒng)啟動時會根據(jù)對分區(qū)的設置進行初始化配置,所以要對初始化配置進行設置。</p><p>  vim arch/arm/mach-s3c2410/

99、mach-smdk2410.c </p><p>  在 static struct platform_device *smdk2410_device[] _initdata 中添加:</p><p>  &s3c_device-nand, </p><p><b>  保存退出。</b></p><p> 

100、 5.注釋掉 arch/arm/kernel/setup.c 中的prase_tag_cmdline() 中的strcpy()函數(shù)。保存退出。</p><p>  6.禁止flash ECC校驗</p><p>  修改drivers/mtd/nand/s3c2410.c</p><p>  找到s3c2410_nand_init_chip()函數(shù),在該函數(shù)的最后

101、一行添加</p><p>  chip->二次沉默的= NAND_ECC_NONE;</p><p>  注:因為內(nèi)核是要通過U-boot寫到nandflash中,U-boot通過軟件的ECC 算法產(chǎn)生ECC 的校驗碼與內(nèi)核校驗的ECC碼不同,內(nèi)核的ECC碼是由s3c2410中的nandflash控制器產(chǎn)生的,所以禁止ECC校驗。</p><p>  7.支持

102、啟動時掛載devfs</p><p>  為了我們的內(nèi)核支持devfs以及在啟動時并在/bin/init運行之前能自動掛載/dev為devfs文件系統(tǒng),需要修改fs/Kconfig文件</p><p>  vim fs/Kconfig,找到”menu Pseudo filesystems” 添加如下語句:</p><p>  config DEVFS_FS<

103、/p><p>  bool "/dev file system support (OBSOLETE)"</p><p><b>  default y</b></p><p>  config DEVFS_MOUNT</p><p>  bool "Automatically mount at

104、boot"</p><p><b>  default y</b></p><p>  depends on DEVFS_FS</p><p><b>  保存并退出。</b></p><p>  8.將arm/arch/configs/smsk2410_defconfig配置文件 拷貝到

105、根目錄,重命名為 .config</p><p>  執(zhí)行 cp arm/arch/configs/smsk2410_defconfig .config</p><p>  9.執(zhí)行 make menuconfig,等待彈出界面進行配置。</p><p><b>  進入配置界面</b></p><p>  Lo

106、adable module support--</p><p>  Enable loadable module support </p><p>  Automatic kernel module loading</p><p>  System Type--</p><p>  S3C2410 DMA support</p>

107、<p>  Boot options--</p><p>  將“Ddefault kernel command string”配置為:</p><p>  noinitrd root=/dev/mtdblock2 init=/LINUXrc console=ttySAC0,115200 rootfstype=jffs2</p><p>  Root是

108、根文件系統(tǒng)的分區(qū),console=tt SAC0,115200是將輸出終端配置為串口。</p><p>  rootfstype=jffs2:是所使用的根文件系統(tǒng)類型。</p><p>  Floating point emulation--</p><p>  NWFPE math emulation</p><p>  支持浮點運算,這是

109、運行二進制文件所必需的。</p><p>  Device Drivers--</p><p>  Memory Technology Devices(MTD)--</p><p>  MTD partitioning support</p><p>  /*支持 mtd 分區(qū),使前面devs.c里設置的分區(qū)有效。*/</p>

110、<p>  Command line partition table parsing</p><p>  /*支持命令行設置 flash 分信息*/</p><p>  RAM/ROM/FLASH chip--</p><p>  <*>Detect flash chips by Common Flash Interface(CFI)probe

111、</p><p>  <*>Detect nonCIF</p><p>  <*>Support for Intel/Sharp flash chips</p><p>  <*>Support for AMD/Fujitsu flash chips</p><p>  <*>Support R

112、OM chips in bus mapping</p><p>  NAND Flash Device Drivers--</p><p>  <*>NAND Device Support</p><p>  <*>NAND Flash support for S3C2410/s3c2440 SoC</p><p> 

113、 Character devices--</p><p>  <*>Nandstandard serial port support</p><p>  <*>S3C2410 RTC Driver</p><p>  File systems--</p><p>  <>Second extended fs

114、 support/*去掉ext2的支持*/</p><p>  Pseudo file systems--</p><p>  <*>/proc file system support</p><p>  <*>Virtual memory file system support(form shm fs)</p><p&g

115、t;  <*>/dev file system support(OBSOLETE)</p><p>  <*>Automatically mount at boot (NEW)</p><p>  Miscellaneous filesystems--</p><p>  <*>JournallingFlash File Syst

116、em v2 (JFFS2) support     [*]JFFS2write-bufferingsupport</p><p>  <*>Compressed ROM file syetem support(cramfs)</p><p>  Network Flie System support-</p><p>

溫馨提示

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

評論

0/150

提交評論