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