在飛凌S5PV210開發板上移植U-Boot 的過程主要包括以下四個步驟: 1.下載U-Boot源碼 2.修改相應的文件代碼 3.編譯U-Boot 4.燒寫到開發板上,運行 U-Boot是universal bootloader,也就是通用的bootloader。它存在于nandflash或者SD卡中,它是在開機上點之后,操作系統起來之前用來引導的一個程序。U-boot 的主要作用是進行內存的初始化、CPU的初始化、串口初始化等一系列的初始化工作,完成這些之后,再將操作系統加載到內存中,從而運行起來。 U-Boot 源碼文件下包括一些目錄文件和文本文件,這些文件可分為”與平臺相關的文件”和”與平臺無關的文件”,其中common文件夾下的文件就是與平臺無關的文件;與平臺相關的文件又分為CPU級相關的文件和與板級相關的文件:arch目錄下的文件就是與CPU級相關的文件,而board、drivers、include等文件夾下的文件都是與板級相關的文件。我們在移植的過程中,需要修改的文件也就是這些與平臺相關的文件。 下面是移植2011.06版本到210處理器上時修改(或添加)的文件: 以下文件均為與CPU級相關的文件 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 以下文件均為與板級相關的文件 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開發板CPU級和Board級代碼,使之能夠在210開發板上面運行。 1.看一下源代碼里面是否有 CPU級相關代碼,比如S5PV210是ARMV7架構,看一下CPU目錄下面是否有ARMV7的目錄,因為U-Boot 已經是開發板里面應用很廣泛的 Bootloader了,所以基本上都已經有了CPU級相關代碼。2.下一步就是查看板級相關代碼了。一款主流CPU發布的時候,廠商一般都會提供官方開發板,比如S5PV210發布的時候三星公司提供了官方開發板,使用的U-Boot是1.3.4版本,三星在U-Boot官方提供的1.3.4基礎上面進行了改進,比如增加SD卡啟動和NandFlash啟動相關代碼 等等。在移植新版本的U-Boot到開發板的時候,我們需要看一下U-Boot代碼里面是否已經含有了板級代碼,如果已經有了,就不需要自己改動了,編譯以后就可以使用,而有的時候在較新的U-Boot代碼里面,是不含有這些板級支持包的,這個時候就需要增加自己的板級包了。 3.板級包的增加需要參考CPU官方提供的U-Boot代碼,因為我們移植的是最小功能的U-Boot,讓U-Boot能夠運行起來即可,所以只需要抓最關鍵的代碼,比如系統時鐘的配置,DDR2內存的初始化代碼,調試串口的初始化等,這些代碼是需要參考U-Boot1.3.4的,不需要我們自己去寫每一行,但是需要我們知道U-Boot 能夠在S5PV210上面運行起來,必須做的工作。
|