在飛凌S5PV210開發(fā)板上移植U-Boot 的過程主要包括以下四個步驟: 1.下載U-Boot源碼 2.修改相應(yīng)的文件代碼 3.編譯U-Boot 4.燒寫到開發(fā)板上,運行 U-Boot是universal bootloader,也就是通用的bootloader。它存在于nandflash或者SD卡中,它是在開機上點之后,操作系統(tǒng)起來之前用來引導(dǎo)的一個程序。U-boot 的主要作用是進行內(nèi)存的初始化、CPU的初始化、串口初始化等一系列的初始化工作,完成這些之后,再將操作系統(tǒng)加載到內(nèi)存中,從而運行起來。 U-Boot 源碼文件下包括一些目錄文件和文本文件,這些文件可分為”與平臺相關(guān)的文件”和”與平臺無關(guān)的文件”,其中common文件夾下的文件就是與平臺無關(guān)的文件;與平臺相關(guān)的文件又分為CPU級相關(guān)的文件和與板級相關(guān)的文件:arch目錄下的文件就是與CPU級相關(guān)的文件,而board、drivers、include等文件夾下的文件都是與板級相關(guān)的文件。我們在移植的過程中,需要修改的文件也就是這些與平臺相關(guān)的文件。 下面是移植2011.06版本到210處理器上時修改(或添加)的文件: 以下文件均為與CPU級相關(guān)的文件 uboot2011.06/arch/arm/cpu/armv7/start.s uboot2011.06/arch/arm/cpu/armv7/Makefile uboot2011.06/arch/arm/include/asm/arch-s5pc1xx/hardware.h uboot2011.06/arch/arm/lib/board.c uboot2011.06/arch/arm/lib/Makefile uboot2011.06/arch/arm/config.mk 以下文件均為與板級相關(guān)的文件 uboot2011.06/board/samsung/OK210/tools/mkv210_image.c uboot2011.06/board/samsung/OK210/lowlevel_init.S uboot2011.06/board/samsung/OK210/mem_setup.S uboot2011.06/board/samsung/OK210/OK210.c uboot2011.06/board/samsung/OK210/OK210_val.h uboot2011.06/board/samsung/OK210/mmc_boot.c uboot2011.06/board/samsung/OK210/Makefile uboot2011.06/drivers/mtd/nand/s5pc1xx_nand.c uboot2011.06/drivers/mtd/nand/Makefile uboot2011.06/include/configs/OK210.h uboot2011.06/include/s5pc110.h uboot2011.06/include/s5pc11x.h uboot2011.06/spl/Makefile uboot2011.06/boards.cfg uboot2011.06/config.mk uboot2011.06/Makefile 移植過程就是在新的U-Boot代碼中增加與S5PV210開發(fā)板CPU級和Board級代碼,使之能夠在210開發(fā)板上面運行。 1.看一下源代碼里面是否有 CPU級相關(guān)代碼,比如S5PV210是ARMV7架構(gòu),看一下CPU目錄下面是否有ARMV7的目錄,因為U-Boot 已經(jīng)是開發(fā)板里面應(yīng)用很廣泛的 Bootloader了,所以基本上都已經(jīng)有了CPU級相關(guān)代碼。2.下一步就是查看板級相關(guān)代碼了。一款主流CPU發(fā)布的時候,廠商一般都會提供官方開發(fā)板,比如S5PV210發(fā)布的時候三星公司提供了官方開發(fā)板,使用的U-Boot是1.3.4版本,三星在U-Boot官方提供的1.3.4基礎(chǔ)上面進行了改進,比如增加SD卡啟動和NandFlash啟動相關(guān)代碼 等等。在移植新版本的U-Boot到開發(fā)板的時候,我們需要看一下U-Boot代碼里面是否已經(jīng)含有了板級代碼,如果已經(jīng)有了,就不需要自己改動了,編譯以后就可以使用,而有的時候在較新的U-Boot代碼里面,是不含有這些板級支持包的,這個時候就需要增加自己的板級包了。 3.板級包的增加需要參考CPU官方提供的U-Boot代碼,因為我們移植的是最小功能的U-Boot,讓U-Boot能夠運行起來即可,所以只需要抓最關(guān)鍵的代碼,比如系統(tǒng)時鐘的配置,DDR2內(nèi)存的初始化代碼,調(diào)試串口的初始化等,這些代碼是需要參考U-Boot1.3.4的,不需要我們自己去寫每一行,但是需要我們知道U-Boot 能夠在S5PV210上面運行起來,必須做的工作。
|