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