本文參考網(wǎng)友muge0913的http://blog.csdn.net/muge0913/article/details/7167599#一文。
1. 網(wǎng)上下載u-boot-2010.09版本并解壓
- tar -jxvf u-boot-2010.09.tar.bz2
2. 6410和6400的資源差不多,主頻和外設有點差別,所以我們就在board/samsung/下建立自己開發(fā)板的項目,取名叫mini6410
- #cd u-boot-2010.09/board/samsung/ //進入目錄
- #mkdir mini6410 //創(chuàng)建mini6410文件夾
3. 參照6400的代碼作為模板,建立自己的mini6410模板,然后再做修改
- #cp -rf smdk6400/* mini6410/ //將6400下所有的代碼復制到mini6410下
- #cd mini6410 //進入th6410目錄
- #mv smdk6400.c mini6410.c //將th6410下的smdk6400.c改名為mini6410.c
- #vim Makefile //修改mini6410目錄下Makefile的編譯項,如下:
- COBJS := mini6410.o
4.修改u-boot根目錄下的Makefile文件。還要指定交叉編譯器為arm-linux-,查找到smdk6400_config的地方,在其下面按照smdk6400_config的格式建立mini6410_config的編譯選項。
- vi Makefile
- CROSS_COMPILE ?=arm-linux-
- mini6410_noUSB_config \
- mini6410_config : unconfig
- @mkdir -p $(obj)include $(obj)board/samsung/mini6410
- @mkdir -p $(obj)nand_spl/board/samsung/mini6410
- @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
- @if [ -z "$(findstring mini6410_noUSB_config,$@)" ]; then \
- echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/mini6410/config.tmp;\
- $(MKCONFIG) $(@:_config=) arm arm1176 mini6410 samsung s3c64xx; \
- else \
- echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/mini6410/config.tmp;\
- $(MKCONFIG) $(@:_noUSB_config=) arm arm1176 mini6410 samsung s3c64xx; \
- fi
- @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
注:arm :CPU的架構(ARCH)
arm1176:CPU的類型
mini6410 :對應在board目錄下建立新的開發(fā)板項目的目錄
samsung:新開發(fā)板項目目錄的上級目錄,如直接在board下建立新的開發(fā)板項目的目錄,則這里就為NULL
s3c64xx:CPU型號
注意:編譯選項格式的第二行要用Tab鍵開始,否則編譯會出錯
5.從U-boot根目錄,進入nand_spl/board/samsung/,新建目錄mini6410并將smdk6400下的所有文件復制到mini6410中
- cd nand_spl/board/samsung/
- mkdir mini6410
- cp -ar smdk6400/* mini6410/
6.測試編譯新建的mini6410開發(fā)板項目
- #make mini6410_config ARCH=arm//如果出現(xiàn)Configuring for mini6410 board...則表示設置正確
- #make ARCH=arm //編譯后在根目錄下會出現(xiàn)u-boot.bin文件,則u-boot移植的第一步就算完成了
到此為止,u-boot對自己的mini6410開發(fā)板還沒有任何用處,以上的移植只是搭建了一個mini6410開發(fā)板u-boot的框架,要使其功能實現(xiàn),還要根據(jù)mini6410開發(fā)板的具體資源情況來對u-boot源碼進行修改。