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