基于s5pv210的u-boot移植

时间:2021-10-12 19:32:15

一、基本的移植

1、找到u-boot的源码包,比如android_uboot_smdkv210.tar.bz2。

2、解压源码包到home目录下,为了方便的查找。

3、进入解压的目录下,编辑Makefile文件,修改交叉编译器的工具,即是147行中的CROSS_COMPILE改成CROSS_COMPILE = arm-linux-(此时确定主机是已经安装了arm-linux-  交叉编译器的,如果没有安装编译失败)

4、修改配置文件:vim include/configs/smdkv210single.h        把里面的CONFIG_SERIAL3改为CONFIG_SERIAL1(即是使用UART1串口)

5、配置和编译     make smdkv210single_config(配置开发板的文件,配置之后在include下生成好几个文件,其中比较重要的有config.mk和config.h)     

配置完成了就可以进行编译了make 或者make -j 2  ( -j表示编译的时候使用两个线程,加快编译的速度)

注:以上步骤只是完成了基本的移植,下载到开发板,不一定能够成功的运行

二、修改内存

1、修改配置文件 vim include/configs/smdkv210single.h

加入以下两行:

32 #define MEMORY_BASE_ADDRESS1    0x40000000

33 #define DMC0_MEMCONTROL         0x00202400

修改:

410 #define DMC0_MEMCONFIG_00x20F00313 在vim cpu/s5pc11x/s5pc110/cpu_init.S 125调用到  ,datasheet里面614可以查看到

411 #define DMC0_MEMCONFIG_10x00F00313

417 #define DMC1_MEMCONTROL     0x00202400

418 #define DMC1_MEMCONFIG_00x40F00313

419 #define DMC1_MEMCONFIG_10x00F00313

471 #define SDRAM_BANK_SIZE     0x10000000    /* 256 MB */

474 #define PHYS_SDRAM_2         (MEMORY_BASE_ADDRESS1) /* SDRAM Bank #2 */

2、修改初始化CPU文件

vim cpu/s5pc11x/s5pc110/cpu_init.S

将122行的    ldr  r1, =0x00212400  修改成为    ldr  r1, =DMC0_MEMCONTROL 然后重新编译

三、去掉SRAM电源管理芯片

修改vim board/samsung/smdkc110/lowlevel_init.S,屏蔽掉如下所示的两段代码

#if 0

        /* SRAM(2MB) init for SMDKC110 */

        /* GPJ1 SROM_ADDR_16to21 */

        ldr     r0, =ELFIN_GPIO_BASE

   ……省略部分代码……

        /* PS_HOLD pin(GPH0_0) set to high */

        ldr     r0, =(ELFIN_CLOCK_POWER_BASE + PS_HOLD_CONTROL_OFFSET)

        ldr     r1, [r0]

        orr     r1, r1, #0x300  

        orr     r1, r1, #0x1    

        str     r1, [r0]

#endif

 

 

#if 0

        /* init PMIC chip */

        bl PMIC_InitIp

#endif                       

重新编译make

四、修改网卡

修改 vim  include/configs/smdkv210single.h

将  #define CONFIG_DM9000_BASE (0xA8000000)   修改为  #define CONFIG_DM9000_BASE (0x88000000)

将  #define DM9000_DATA (CONFIG_DM9000_BASE+2)  修改为  #define DM9000_DATA (CONFIG_DM9000_BASE+8)

修改板级预初始化函数dm9000_pre_init

vim board/samsung/smdkc110/smdkc110.c

如下所示:

static void dm9000_pre_init(void)

{

unsigned int tmp;

        /* DM9000 on SROM BANK1, 16 bit */

SROM_BW_REG &= ~(0xf << 4);

SROM_BW_REG |= (0x1 << 4);

SROM_BC1_REG = ((0<<28)|(0<<24)|(5<<16)|(0<<12)|(0<<8)|(0<<4)|(0<<0));

/* Set MP01_1 as SROM_CSn[1] */

tmp = MP01CON_REG;

tmp &=~(0xf<<4);

tmp |=(2<<4);

MP01CON_REG = tmp;

}

五、制作SD卡启动

1、在u-boot的源码目录下,进入目录sd_fusing

2、在该目录下进行编译

3、插入SD卡都linux的主机中,可以使用ls -al /dev/sdb*来查看主机是否已经能够成功的识别了SD卡

4、制作SD卡,在该目录下,进行./sd_fusing.sh   /dev/sdb

5、将SD卡插到开发板上面去,启动模式打到SD卡启动模式,重新上电即可以进行SD卡启动。

六、固化u-boot

1、在SD卡启动的方式下,先设置开发板的(setenv serverip 主机网址、setenv ipaddr 开发板网址、setenv gatewayip  网关、然后保存saveenv)

2、把编译好的u-boot.bin下载到nand flash中:tftp 0x40000000 u-boot.bin         

3、 擦除部分nand flash:nand erase   0    0x60000

4、把处于0x40000000地址段的u-boot.bin固化到nand flash中:nand write   0x40000000   0    0x60000

5、断电,把开发板的启动方式设置为nand flash启动,重新上电启动即可

 

 

 

步骤总结:

1、修改uboot的Makefile,并配置u-boot  make  smdkv210single_config ,进行编译

2、修改内存的部分参数:vim   include/configs/smdkv210single.h                       vim   cpu/s5pc11x/s5pc110/cpu_init.S, 进行编译

3、去掉SRAM电源管理芯片:vin   board/samsung/smdkc110/lowlevel_init.S       ,进行编译

4、修改网卡:vim   include/configs/smdkv210single.h      vim   board/samsung/smdkc110/smdkc110.c    进行编译

5、制作SD卡启动卡:进入目录然后:./sd_fusing.sh  /dev/sdb

6、把u-boot下载到nand flash中,进行固化。

 

 

另外的注释:

配置
make smdkv210single_config
smdkv210single_config : unconfig
 @$(MKCONFIG) $(@:_config=) arm s5pc11x smdkc110 samsung s5pc110
        @echo "TEXT_BASE = 0xc3e00000" > $(obj)board/samsung/smdkc110/config.mk

1、依赖伪目标 unconfig
 将之前的配置信息删掉

unconfig:

        @rm  -f  $(obj)include/config.h  $(obj)include/config.mk  $(obj)borad/*/config.tm  $(obj)board/*/*/config.tmp  $(obj)include/autoconf.mk  $(obj)include/autoconf.mk.dep  $(obj)board/$(VENDOR)/$(BOARD)/config.mk 

2、执行目标 smdkv210single_config --->
 ./mkconfig mdkv210single arm s5pc11x smdkc110 samsung s5pc110

3、配置一些链接关系

$1 = smdkv210single
$2 = arm
$3 = s5pc11x
$4 = smdkc110
$5 =samsung
$6 = s5pc110