1. 程式人生 > >嵌入式Linux學習-----u-boot移植

嵌入式Linux學習-----u-boot移植

自從大二我就開始接觸微控制器,開始學習51微控制器程式設計及電路圖繪製,經過一段時間的學習,發現嵌入式很有意思。後來在師兄的推薦下,我到圖書館借了韋東山老師寫的《嵌入式Linux應用開發完全手冊》,開始學習嵌入式linux,在虛擬機器安裝Linux,熟悉Linux環境,各種命令。根據書本的指引,我很快入門了,主要是書寫得很好。結合書本視訊,也就是韋東山嵌入式Linux第一期視訊,我被嵌入式深深吸引住了。最後決定繼續購買韋老師的後期視訊,快速提高技術水平。

       下面我來記錄一下我的學習過程及心得。

       首先了解需要用到的工具及原始碼,如下:

交叉編譯工具:arm-linux-gcc-4.4.3.tar.gz

linux核心:linux-2.6.22.6.tar.bz2,補丁:linux-2.6.22.6_jz2440.patch

u-boot原始碼:u-boot-1.1.6.tar.bz2,補丁:u-boot-1.1.6_jz2440.patch

busybox原始碼:busybox-1.7.0.tar.bz2

yaffs2製作工具:yaffs_source_util_larger_small_page_nand.tar.bz2

jffs2製作工具路徑:F:\韋東山\CD1_主光碟\GUI\xwindow\X\deps

以上原始碼和工具均來自韋東山光碟。

一、u-boot移植

       首先通過觀看u-boot相關的視訊,瞭解大概情況後開始移植。

工具和原始碼在路徑:F:\韋東山\CD1_主光碟\system。

tar xjf u-boot-1.1.6.tar.bz2   //解壓縮

cd u-boot-1.1.6  //進入目錄

patch -p1 < ../u-boot-1.1.6_jz2440.patch //打補丁,-p1是指忽略第一個目錄

[email protected]:/share/u-boot-1.1.6# make 100ask24x0_config  //產生配置檔案

Configuring for 100ask24x0 board...

make all  //編譯

結果會遇到這個問題,發現浮點錯誤,因為gcc造成,所以修改以下檔案

gedit cpu/arm920t/config.mk

undefined reference to ‘raise’  //提示錯誤

將cpu /arm920t/config.mk 改為
PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 /
    -msoft-float

PLATFORM_CPPFLAGS +=
# ===========================================================#
# Supply options according to compiler version
PLATFORM_CPPFLAGS +=$(call cc-option,)
PLATFORM_RELFLAGS +=$(call cc-option,$(call cc-option,))

在uboot的根目錄中把Makefile中的PLATFORM_LIBS 修該為如下值PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc -lc -L/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib然後重新 make distcleanmake 100ask24x0_config,  make   應就能通過了,最後可生產u-boot.bin

通過jlink下載u-boot.bin到nor flash

下載成功後,從nor flash啟動,選擇k命令,

開啟dnw,選擇dnw的USB Port下載uImage,

在u-boot介面輸入b即可啟動核心。

啟動u-boot後,要保證能ping通虛擬機器linux。

下一節講解Linux核心移植。