U-Boot在S3C2410上的移植分析
其中“arm”是CPU的種類,arm920t是ARM CPU對應的代碼目錄,S3C2410是自己開發(fā)板對應的目錄。
交叉編譯器安裝在:/ path/ armv4l-unknown -linux-目錄下,所以把CROSS-COMPILE 設置成相應的路徑: CROSS-COMPILE = / path/ arm4l-unknown-linux -
生成目標文件并進行測試
依次運行以下命令:
# make clean
# make S3C2410-config
# make
之后會生成三個文件:
U-Boot ——ELF 格式的文件, 可以被大多數Debug 程序識別;
U-Boot.bin ——二進制文件,純粹的U-Boot
二進制執(zhí)行代碼,不保存ELF 格式和調試信息。 這個文件一般用于燒錄到用戶開發(fā)板中;U-Boot .srec ——Motorola S-Record格式,可以通過串行口下載到開發(fā)板中。
測試與應用本文引用地址:http://www.2s4d.com/article/218884.htm
1) 測試
利用編制好的Flash燒寫程序,通過JTAG口將生成的二進制文件U-Boot。bin燒入Flash的零地址。 燒錄成功后,拔掉JTAG調試線并復位開發(fā)板,從Minicom終端輸出如下信息:
U-Boot 1.1.2 (Jul 20 2005-09 :34 :21)
U-Boot code : 33F00000-> 33F1952C BSS:-> 33F1D870
RAM Configuration :
Bank # 0 : 30000000 64 MB
Flash Memory Start 0x0000000
Device ID of the Flash is 18
Flash : 16 MB
Write 18 to Watchdog and it is 18 now
In : serial
Out : serial
Err : serial
SMDK2410 #
串口輸出的以上信息表明,CPU和串口已正常工作。通過U-Boot提供的命令flinfo和mtest可以測試Flash和RAM。經過測試,可以正確地讀出Flash信息及讀寫RAM,表明Flash 和DRAM 已正確初始化。用tftp命令傳輸宿主機tftpboot目錄下任一小文件到RAM成功,說明網卡芯片也成功驅動。
2) 簡單應用
U- Boot的主要作用是用來引導內核。因此,通過U-Boot引導一個特定的內核,可以進一步測試其移植的穩(wěn)定性。而使用U-Boot引導內核有兩種不同的方法。第一種方法是直接將內核映象文件和根文件系統燒寫入Flash,使用此方法,U-Boot在啟動時將 Flash中的內核映象及根文件系統讀入RAM指定位置并從同一位置啟動內核。第二種方法是將內核映象文件和根文件系統下載至RAM中直接啟動(而不是從Flash中讀入RAM) ,此種方法不需要燒寫Flash。筆者為了減少燒寫Flash的次數,在本文中采用第二種方法,其步驟如下:
SMDK2410 # tftp 30008000 zImage
SMDK2410 # tftp 30800000 ramdisk.Image.gz
SMDK2410 # go 30008000
上述指令執(zhí)行的過程中,未出現異常,內核成功啟動,并最終進入Shell提示符“ # ”。在Shell提示符下輸入內核編譯時定制的各個命令,均可以正常運行。另外編寫簡單C程序,并用交叉編譯器編譯之,最終生成的可執(zhí)行文件能夠在開發(fā)板上正常運行。上述事實說明內核經過U-Boot引導已穩(wěn)定運行在開發(fā)板上。此次應用,進一步驗證了U-Boot移植的穩(wěn)定性。至此,移植工作告一段落。
結 語
目前,筆者移植的U-Boot已經能穩(wěn)定地運行在開發(fā)板上,這使得Linux內核的調試脫離了BDM調試器,節(jié)約了大量的開發(fā)時間,大大提高了效率,是對后續(xù)嵌入式開發(fā)的有力支持。當然,U-Boot只是一款好用的BootLoader,嵌入式Linux的開發(fā)存在很多技術細節(jié),只有根據實際情況不斷修改、調試、總結,才能獲得更大的成功。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論