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