Chinaunix首页 | 论坛 | 博客
  • 博客访问: 218643
  • 博文数量: 48
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 258
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-22 23:45
文章分类

全部博文(48)

文章存档

2015年(4)

2014年(34)

2013年(10)

分类: LINUX

2015-06-03 23:09:34

       最近闲着无聊,没事就把开发板拿出来玩玩。打算自己移植u-boot到开发板上跑跑。当然在此过程中,免不了度娘这种良师益友温馨而体贴的帮忙。在此,谢过那些在网络上无私奉献的大牛,因为你们社会才会进步的更快。
      闲话少扯,进入正题。想要移植u-boot。首先要有这个东西。就像我们看片一样,要想看,首先要有种子。哈哈,打开u-boot官网下载区:ftp://ftp.denx.de/pub/u-boot/这里包含所有的u-boot版本。由于之前开发板上带的是u-boot1.1.6。通过度娘的介绍,u-boot2010.3版本和u-boot1.1.6版本比较接近,移植起来比较方便。因此,决定取经的第一步,先找到唐王,拿到通关文牒。
     下载好源码之后,我们干什么?什么,对了。当然是先存到PC的系统(linux)上。开始做准备工作,
      首先创建目录mkdir u-boot;(目录名随便起,只要自己认识就行,哪怕就起个laopo都行哈哈)
      接着拷贝u-boot2010.3版本的源码到该目录,例如:[root@beyond u-boot]# cp  /media/disk/u-boot-2010.03.tar.bz2  ./  
      解压该源码包:[root@beyond u-boot]# tar xvjf     u-boot-2010.03.tar.bz2
       解压出来之后;打开解压后的目录:[root@beyond u-boot]#cd  u-boot-2010.3先编译一下保证源码包没有问题:make smdk6400_config; make;确认没有问题之后,开始做下一步,就是减肥,去掉身上的赘肉和脂肪;当然,你喜欢胖子的话,可以不减。
      打开解压后的目录:[root@beyond u-boot]#cd  u-boot-2010.3
      1.进入board目录删除除去Samsung之外的所有目录;
      2.进入cpu目录删除除去arm1176之外的所有目录;
      3.进入include目录删除除去以asm-*开头的目录(保留asm-arm和asm-generic);
      4.进入include/configs/目录中,删除除去smdk6400之外所有的文件;
      5.删除lib*开头的所有目录(保留lib_arm和lib_generic);
      OK,结束了。这下就剩下鬼魅的身材,性感的肌肤了。哈哈,想哪去了。下面继续正事。先编译一下,看看减肥是否影响正常生活。
在目录u-boot-2010.3下编译:make smdk6400_config ; make;看看是否能编译过去。正常是没有问题的,如果编译不过只能说明,你减肥过火偏瘦,影响正常生活。怎么办,重新开始解压按照步骤再来一遍。
       这些都是前戏。当然如果不喜欢做前戏的,那就直接开始正题:
       1.进入board/samsung目录,创建smdk6410目录,拷贝smdk6400目录下的所有文件到smdk6410中,并将smdk6400.c改为smdk6410.c;
         

点击(此处)折叠或打开

  1. cd board/samsung/
  2. mkdir smdk6410
  3. cp smdk6400/* smdk6410/
  4. cd smdk6410
  5. mv smdk6400.c smdk6410.c
       2.打开smdk6410目录,将该目录下所有包含smdk6400的文件中的smdk6400转变成smdk6410;转换方式为该文件在vim下的命令行模式使用命令::%s/smdk6400/smdk6410/g;
       3.返回到u-boot-2010.3目录下,打开cpu目录,进入arm1176/s3c64xx/下,将该目录下所有文件中的smdk6400转变成smdk6410;转变方式同上;
 4.返回到u-boot-2010.3目录下,打开nand_spl目录,进入board/samsung/下,在该目录下创建smdk6410,smdk6400中的所有文件拷贝到smdk6410目录中;并将该目录下所有文件中的smdk6400转变成smdk6410;方式同上;
       5.返回到u-boot-2010.3目录下,打开include/configs/目录,将该目录下smdk6400.h拷贝一份改为smdk6410.h;并将该文件中的smdk6400转变成smdk6410;方式同上;
       6.返回到u-boot-2010.3目录下,打开include/asm-arm/arch-s3c64xx/目录,将该目录下smdk6400.h拷贝一份改为smdk6410.h;
并将该文件中的smdk6400转变成smdk6410;方式同上;且需要修改头文件;

点击(此处)折叠或打开

  1. #include "s3c64x0.h"
为:

点击(此处)折叠或打开

  1. #include "./asm/arch/s3c64x0.h"
       7.返回到u-boot-2010.3目录下,修改mkconfig文件中:
           

点击(此处)折叠或打开

  1. if [ "$2" = "arm" ] ; then
  2.      rm -f asm-$2/proc
  3.      ln -s ${LNPREFIX}proc-armv asm-$2/proc
  4. fi
下面插入如下代码:

点击(此处)折叠或打开

  1. if [ '$1' = 'smdk6410' ]; then
  2.      rm -f regs.h
  3.      ln -s asm-$2/arch/s3c6410.h regs.h
  4. fi
        8.修改Makefile文件:复制smdk6400配置放到smkd6400配置下面,并更改为6410;

点击(此处)折叠或打开

  1. smdk6400_noUSB_config \
  2. smdk6400_config : unconfig
  3.     @mkdir -p $(obj)include $(obj)board/samsung/smdk6400
  4.     @mkdir -p $(obj)nand_spl/board/samsung/smdk6400
  5.     @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
  6.     @if [ -z "$(findstring smdk6400_noUSB_config,$@)" ]; then \
  7.         echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
  8.         $(MKCONFIG) $(@:_config=) arm arm1176 smdk6400 samsung s3c64xx; \
  9.     else \
  10.         echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
  11.         $(MKCONFIG) $(@:_noUSB_config=) arm arm1176 smdk6400 samsung s3c64xx; \
  12.     fi
  13.     @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
下面增加代码如下:

点击(此处)折叠或打开

  1. smdk6410_noUSB_config \
  2. smdk6410_config : unconfig
  3.     @mkdir -p $(obj)include $(obj)board/samsung/smdk6410
  4.     @mkdir -p $(obj)nand_spl/board/samsung/smdk6410
  5.     @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
  6.     @if [ -z "$(findstring smdk6410_noUSB_config,$@)" ]; then \
  7.         echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6410/config.tmp;\
  8.         $(MKCONFIG) $(@:_config=) arm arm1176 smdk6410 samsung s3c64xx; \
  9.     else \
  10.         echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6410/config.tmp;\
  11.         $(MKCONFIG) $(@:_noUSB_config=) arm arm1176 smdk6410 samsung s3c64xx; \
  12.     fi
  13.     @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
      9.九九归一,还剩一难;就是更改要使用的编译器;还在Makefile中更改:

点击(此处)折叠或打开

  1. CROSS_COMPILE ?=
为:

点击(此处)折叠或打开

  1. CROSS_COMPILE ?= arm-linux-
       10.漫长的取经过程终于修成正果,在目录u-boot-2010.3下编译:make smdk6410_config ; make;正常情况下编译可以通过;
       










      


     


   


阅读(2321) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~