S3C2410是三星公司針對(duì)嵌入式系統(tǒng)推出的高性價(jià)比微處理器,它是基于ARM9TDMI內(nèi)核的16/32位RISC處理器,工作主頻為200MHz。由于現(xiàn)有的Linux系統(tǒng)引入了設(shè)備文件的概念,讀寫串口可以像讀寫普通文件一樣進(jìn)行操作,非常方便。
一、Linux系統(tǒng)的安裝
安裝過程首先出現(xiàn)歡迎對(duì)話框,如上圖所示。Red Hat先后會(huì)詢問用戶使用何種語言、用戶使用的鍵盤類型(默認(rèn)選項(xiàng)為美式鍵盤)以及安裝軟件的位置(選擇本地CD -ROM)等許多需用戶選擇的問題。
使用Disk Druid建立Linux文件系統(tǒng)然后通過PC機(jī)對(duì)開發(fā)板進(jìn)行設(shè)置,并執(zhí)行以下命令,從而對(duì)開發(fā)板進(jìn)行內(nèi)核及文件系統(tǒng)的燒寫工作:
此時(shí),關(guān)閉開發(fā)板電源,接上LCD。重新啟動(dòng)開發(fā)板,LCD上將出現(xiàn)QT的定標(biāo)程序,定標(biāo)后就進(jìn)入QT的接口。
二、U-Boot啟動(dòng)程序及流程
U-Boot是在PC- Boot的基礎(chǔ)上進(jìn)化而來的一個(gè)開源的嵌i入式Boot Loader。它主要完成了系統(tǒng)環(huán)境的初始化,將后期執(zhí)行j代碼復(fù)制到SDRAM空間,為Linux內(nèi)核的運(yùn)行提供條件。根據(jù){其功能實(shí)現(xiàn)方式的不同可以分為兩個(gè)階段??梢酝ㄟ^修改配置應(yīng)用到其他的開發(fā)板上。所以,選擇U-Boot不僅能應(yīng)用于S3C2410,而且能為以后在其他開發(fā)板上的研究提供基礎(chǔ)。
本文選擇最常見的版本U-Boot -1.1.6為例介紹U- Boot的啟動(dòng)和相關(guān)移植程序。
1.U-Boot運(yùn)行前期階段 ARM系列處理器在上電或復(fù)位時(shí)從物理地址Ox00000000處開始執(zhí)行,此處也是第一片F(xiàn)lash所使用的存儲(chǔ)空間的起始位置,而U-Boot就存放在Flash的最前端。U - Boot第一階段由匯編語言實(shí)現(xiàn),以達(dá)到短小精悍的目的,主要完成系統(tǒng)硬件環(huán)境的初始化,其工作流程如下圖所示。
U - Boot在這一步的啟動(dòng)過程中,需要初始化啟動(dòng)環(huán)境,然后完成對(duì)后續(xù)工作的準(zhǔn)備,諸如串口、網(wǎng)口、Flash等硬件設(shè)備的初始化工作,將kernel映像和根文件系統(tǒng)映像從Flash上讀到RAM空間中,同時(shí)調(diào)用已經(jīng)下載好的內(nèi)核。
2.U-Boot運(yùn)行后期階段在完成了啟動(dòng)環(huán)境初始化時(shí),進(jìn)入到后期啟動(dòng)階段。此部分的代碼用C語言來實(shí)現(xiàn),以便于實(shí)現(xiàn)更復(fù)雜的功能和取得更好的代碼可讀性和可移植性。函數(shù)_start_armboot0是執(zhí)行映像的入口點(diǎn)。
(1 )U-Boot必要的初始化工作:系統(tǒng)初始化至少一個(gè)串口,以便和終端用戶進(jìn)行I/O輸出信息,包括系統(tǒng)信息和操作菜單等;初始化計(jì)時(shí)器,方便讀秒計(jì)時(shí);初始化Flash,注冊(cè)Flash操作函數(shù),為實(shí)現(xiàn)Flash讀寫做準(zhǔn)備。在加載程序U- Boot中可以通過kermit協(xié)議從宿主機(jī)接收可燒寫的二進(jìn)制文件,將該文件先放置于SDRAM中,然后通過NORFlash操作程序來完成對(duì)NORFlash AM29LV160DB的擦除,并將文件燒寫到NORFlash中。后期的工作流程如圖所示。
(2)使用TFTP網(wǎng)絡(luò)協(xié)議下載Linux操作系統(tǒng):在加載程序U-Boot中包含TFTP網(wǎng)絡(luò)下載文件方式,其下載速度比Kermit協(xié)議方式速度快幾十倍,可大大節(jié)省文件下載時(shí)間,極大的簡(jiǎn)便了嵌入式程序的調(diào)試方法。
因?yàn)門FTP使用UDP,而UDP使用lP,lP還可以使用其它本地通信方法。因此一個(gè)TFTP包中會(huì)有以下幾段:本地媒介頭,lP頭,數(shù)據(jù)報(bào)頭,TFTP頭,剩下的就是TFTP數(shù)據(jù)了。TFTP在lP頭中不指定任何數(shù)據(jù),但是它使用UDP中的源和目標(biāo)端口以及包長度域。由TFTP使用的包標(biāo)記(TID)在這里被用做端口,因此TID必須介于0—65,535之間。TFTP頭中包括兩上字節(jié)的操作碼,這個(gè)碼指出了包的類型,可以根據(jù)TFTP包格式進(jìn)行必要的移植工作。
三、U-Boot的移植流程
不同的板極硬件配置要求進(jìn)行U-Boot的移植工作,移植U-Boot的工作包括添加開發(fā)板硬件相關(guān)的文件、配置U- Boot,然后編譯。U-Boot -1.1.4版本支持SMDK2410開發(fā)板,并且SMDK2410同樣采用S3C2410芯片,因此選取SMDK2410作為移植參考,定義目標(biāo)板需要添加的U-Boot:
1.在boarcl/目錄下建立目標(biāo)板目錄 由于U- Boot中本身支持很多開發(fā)板和處理器,所以可以找到和處理器型號(hào)相同或相近的開發(fā)板,在此基礎(chǔ)之上再進(jìn)行相應(yīng)的修改。此處選擇smdk2410作為模板。
2.創(chuàng)建S3C2410目錄及文件,要對(duì)Makefile進(jìn)行修改Mkdir board/S3C2410
3.通過修改文件smdk2410.h來修改U-Boot軟硬件配置增加PING命令功能
4.修改2M的Flash通過查詢相關(guān)數(shù)據(jù)手冊(cè)中有關(guān)Flash的地址,并在對(duì)應(yīng)的S3C2410.h文件中找到有關(guān)信息。在此要用到一些硬件的知識(shí),最關(guān)鍵的是扇區(qū)的計(jì)算,由于在ARM中Flash是按扇區(qū)劃分的,每個(gè)扇區(qū)的大小是64K,所以2M就需要32個(gè)扇區(qū),但是由數(shù)據(jù)手冊(cè)可知S0,S1,S2,S3扇區(qū)的大小分別為:16K,8K,8K,32K,所以要加上3個(gè)扇區(qū)才能得到正確的結(jié)果。
四、結(jié)論
通過對(duì)U-Boot的啟動(dòng)流程的詳細(xì)分析和制作,不僅對(duì)其有一個(gè)整體的了解,而且也可以依據(jù)本文進(jìn)行制作。通過對(duì)U-Boot的重要參數(shù)的設(shè)置也使得其功能進(jìn)一步增強(qiáng)。讀者也可以仿效文中的步驟對(duì)其他型號(hào)的開發(fā)板進(jìn)行制作,為以后的開發(fā)帶來了方便。在制作過程中要注意的是接口參數(shù)的設(shè)置問題和越界問題。
評(píng)論