嵌入式開發(fā)畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

2、 級(jí):</b></p><p><b>  姓 名:</b></p><p><b>  學(xué) 號(hào):</b></p><p><b>  指導(dǎo)教師:</b></p><p><b>  摘 要</b></p><

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

4、以正常啟動(dòng)。但是嵌入式系統(tǒng)往往是為某些特定的功能設(shè)計(jì)的,所以,系統(tǒng)要想完成某些功能,還需要頂層應(yī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>  第二章 課題任務(wù)4</p><p> 

8、 第三章 設(shè)計(jì)依據(jù)6</p><p>  一.軟件平臺(tái)的選擇6</p><p>  二.硬件平臺(tái)的選擇8</p><p>  三.應(yīng)用程序的選擇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>  第五章 設(shè)計(jì)主體18</p><p>  一.ARM-LINUX交叉工具的制作及安裝18</p><p>  二.U-boot的編譯及移植18</p><p>  三.LINUX內(nèi)核的配置編譯及移植20</p><p>

10、;  四.rootfs的制作及燒寫工作24</p><p>  五.應(yīng)用程序的移植25</p><p>  第六章 個(gè)人體會(huì)26</p><p>  第七章 附錄27</p><p><b>  一.致謝27</b></p><p><b>  二.參考文獻(xiàn)27</

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

32、8um制造工藝的32位微控制器。該處理器擁有:獨(dú)立的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個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。S3C2410處理器最高可運(yùn)行在203MHz。而且s3c

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

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

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

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

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

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

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

40、其價(jià)位,決定選用三星公司的這款s3c2410芯片作為硬件平臺(tái)。</p><p><b>  三.應(yīng)用程序的選擇</b></p><p>  應(yīng)用程序是簡(jiǎn)單的MP3播放器移植,這里做的工作主要是系統(tǒng)的搭建,應(yīng)用程序只是作為檢測(cè)系統(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)構(gòu)建的第一步。</p><p>  U-Boot,全稱Universal Boot Loader,是遵循GPL條款的開放源碼項(xiàng)目。從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來(lái)。其源碼目錄、編譯形式與

42、LINUX內(nèi) 核很相似,事實(shí)上,不少U-Boot源碼就是相應(yīng)的LINUX內(nèi)核源程序的簡(jiǎn)化,尤其是一些設(shè)備的驅(qū)動(dòng)程序,這從U-Boot源碼的注釋中能體現(xiàn)這一點(diǎn)。 但是U-Boot不僅僅支持嵌入式LINUX系統(tǒng)的引導(dǎo),當(dāng)前,它還支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系統(tǒng)。其目前要支持的目標(biāo)操作系統(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>  以上兩個(gè)特點(diǎn)正是U-Boot項(xiàng)目的

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

45、oot項(xiàng)目正在他的領(lǐng)軍之下,眾多有志于開放源碼BOOT LOADER移植工作的嵌入式開發(fā)人員正如火如荼地將各個(gè)不同系列嵌入式處理器的移植工作不斷展開和深入,以支持更多的嵌入式操作系統(tǒng)的裝載與引導(dǎo)。</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.支持多個(gè)處理器系列,如PowerPC、ARM、x86、MIPS、XScale;④ 較高的可靠性和穩(wěn)定性;</p><p>  4.較高的可靠性和穩(wěn)定性;</p><p>  5.高度靈活的功能設(shè)置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導(dǎo)要求

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

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

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

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

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

52、M、EEPROM;CRC32校驗(yàn),可校驗(yàn)FLASH中內(nèi)核、RAMDISK鏡像文件是否完好;設(shè)備驅(qū)動(dòng) 串口、SDRAM、FLASH、以太網(wǎng)、LCD、NVRAM、EEPROM、鍵盤、USB、PCMCIA、PCI、RTC等驅(qū)動(dòng)支持;上電自檢功能 SDRAM、FLASH大小自動(dòng)檢測(cè);SDRAM故障檢測(cè);CPU型號(hào);特殊功能 XIP內(nèi)核引導(dǎo);</p><p>  因?yàn)槲覀兊哪繕?biāo)板是arm體系的平臺(tái),所以不能只單純的用主機(jī)(

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

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

55、OP 500)有高達(dá)87.8%的比例采用LINUX為它們的作業(yè)系統(tǒng),最快的超級(jí)電腦IBM_Roadrunner正是采用LINUX的。</p><p>  LINUX目前可以在以下結(jié)構(gòu)上運(yùn)行:</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 大型主機(jī)(64-bit) </p><p><b>  ◆x86 系列: </b></p><p><b>  ◆三菱的M32R </b></p><p>  ◆MIPS 架構(gòu): </p>

59、<p>  ◆Freescale(Motorola的前身)68K 架構(gòu)(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能夠在幾乎所有的計(jì)算機(jī)平臺(tái)上運(yùn)行,包括ARM、X86、PC、PC服務(wù)器、Atme

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

62、植性強(qiáng),而且內(nèi)核可裁剪等特點(diǎn),故而選用LINUX內(nèi)核。具體到本設(shè)計(jì),則選用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文件具有強(qiáng)大的功能。文

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

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

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

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

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

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

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

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

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

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

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

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

75、e', 'less'或 'cat'這樣的程序來(lái)查看。</p><p>  以下是cramfs文件系統(tǒng)的制作流程:</p><p><b>  第五章 設(shè)計(jì)主體</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>  切換到超級(jí)用戶,進(jìn)入解壓目錄,修改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>  將生成的目標(biāo)文件名改為 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是通過(guò)GCC和Makefile組織編譯的,頂層的Makefile首先可以定置開發(fā)平臺(tái)的定義,然后遞歸調(diào)用各級(jí)子目錄下的Makefile,最終把編譯過(guò)的程序鏈接成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í)行后就會(huì)生成System.map ,u-boot ,u-boot.bin ,u-boot.srec四個(gè)映像文件,Syste

84、m.map:是u-boot 映像的符號(hào)表,u-boot是u-boot映像的ELF格式,u-boot.bin是u-boot映像的原始二進(jìn)制格式,u-boot.srec是u-boot映像的S-Record格式,因?yàn)槟繕?biāo)板中沒(méi)有任何系統(tǒng),所以這里選用u-boot映像的原始二進(jìn)制格式文件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,運(yùn)行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.設(shè)置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ū)個(gè)數(shù)</p><p>  /*加入nandflash芯片支持到nandflash驅(qū)動(dòng)*/</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 設(shè)備*/</p><p><b>  .dev = {</b></p><p>  .platform_data = &superlpplatform</p><p><b>  }</b></p><p><b>  };<

98、;/b></p><p>  將文件中與“加入nandflash芯片支持到nandflash驅(qū)動(dòng)”相同的部分注釋掉,并保存退出。</p><p>  4.指定啟動(dòng)時(shí)初始化</p><p>  系統(tǒng)啟動(dòng)時(shí)會(huì)根據(jù)對(duì)分區(qū)的設(shè)置進(jìn)行初始化配置,所以要對(duì)初始化配置進(jìn)行設(shè)置。</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校驗(yàn)</p><p>  修改drivers/mtd/nand/s3c2410.c</p><p>  找到s3c2410_nand_init_chip()函數(shù),在該函數(shù)的最后

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

102、啟動(dòng)時(shí)掛載devfs</p><p>  為了我們的內(nèi)核支持devfs以及在啟動(dòng)時(shí)并在/bin/init運(yùn)行之前能自動(dòng)掛載/dev為devfs文件系統(tǒng),需要修改fs/Kconfig文件</p><p>  vim fs/Kconfig,找到”menu Pseudo filesystems” 添加如下語(yǔ)句:</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,等待彈出界面進(jìn)行配置。</p><p><b>  進(jìn)入配置界面</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>  支持浮點(diǎn)運(yùn)算,這是

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

110、<p>  Command line partition table parsing</p><p>  /*支持命令行設(shè)置 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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論