移植u-boot-2016.11到JZ2440开发板

    • 1、启动部分相关内容的移植
    • 2、相关配置文件
      • 2.1 arch/arm目录下的Kconfig
      • 2.2 ./configs/目录下添加sopho2440_defconfig
      • 2.3 ./include/configs/目录下添加文件sopho2440.h
      • 2.4 ./scripts/config_whitelist.txt文件中添加该板卡的信息
    • 3、板子相关的配置
      • 3.1 修改sopho2440文件夹下的Kconfig
      • 3.2 修改sopho2440文件夹下的Makefile
      • 3.3 修改sopho2440文件夹下的lowlevel_init.S
      • 3.4 修改sopho2440文件夹下的smdk2410.c为sopho2440.c
    • 4、结束语

1、启动部分相关内容的移植

//file name:    ./arch/arm/cpu/arm920t/start.S
//修改配置配置时钟
        /* FCLK:HCLK:PCLK = 1:2:4 */
        /* default FCLK is 120 MHz ! */
        ldr     r0, =CLKDIVN
        mov     r1, #3
        str     r1, [r0]
//为
    ldr    r0, =0x4c000014
    mov    r1, #0x05;            // FCLK:HCLK:PCLK=1:4:8
    str    r1, [r0]
    /* 如果HDIVN非0,CPU的总线模式应该从“fast bus mode”变为“asynchronous bus mode” */
    mrc    p15, 0, r1, c1, c0, 0       /* 读出控制寄存器 */
    orr    r1, r1, #0xc0000000         /* 设置为“asynchronous bus mode” */
    mcr    p15, 0, r1, c1, c0, 0       /* 写入控制寄存器 */

#define S3C2440_MPLL_400MHZ     ((0x5c<<12)|(0x01<<4)|(0x01))
    /* MPLLCON = S3C2440_MPLL_200MHZ */
    ldr    r0, =0x4c000004
    ldr    r1, =S3C2440_MPLL_400MHZ
    str    r1, [r0]

    /* 启动ICACHE */
    mrc    p15, 0, r0, c1, c0, 0   @ read control reg
    orr    r0, r0, #(1<<12)
    mcr    p15, 0, r0, c1, c0, 0   @ write it back

2、相关配置文件

2.1 arch/arm目录下的Kconfig

# ./arch/arm/Kconfig文件添加内容
# 在该内容后
config TARGET_SMDK2410
        bool "Support smdk2410"
        select CPU_ARM920T
# 添加如下内容
config TARGET_SOPHO2440
        bool "Support sopho2440"
        select CPU_ARM920T
# 在该内容后
source "board/samsung/smdk2410/Kconfig"
# 添加如下内容
source "board/samsung/sopho2440/Kconfig"

2.2 ./configs/目录下添加sopho2440_defconfig

# 复制smdk2410的配置文件
$ cp -rf smdk2410_defconfig sopho2440_defconfig
# 修改
CONFIG_TARGET_SMDK2410=y
# 为
CONFIG_TARGET_SOPHO2440=y

2.3 ./include/configs/目录下添加文件sopho2440.h

# 复制smdk2410的配置文件
$ cp -rf smdk2410.h sopho2440.h
# 修改
#define CONFIG_S3C2410          /* specifically a SAMSUNG S3C2410 SoC */
#define CONFIG_SMDK2410                /* on a SAMSUNG SMDK2410 Board */
# 为
#define CONFIG_S3C2440
#define CONFIG_SOPHO2440

2.4 ./scripts/config_whitelist.txt文件中添加该板卡的信息

CONFIG_ARCH_SOPHO2440

CONFIG_SOPHO2440

3、板子相关的配置

# 使用如下命令复制smdk2410板卡的相关内容
$ cp -rf ./board/samsung/smdk2410 ./board/samsung/sopho2440

3.1 修改sopho2440文件夹下的Kconfig

# file name: ./board/samsung/sopho2440/Kconfig
# 用下边内容替换源文件内容
if TARGET_SOPHO2440

config SYS_BOARD
        default "sopho2440"

config SYS_VENDOR
        default "samsung"

config SYS_SOC
        default "s3c24x0"

config SYS_CONFIG_NAME
        default "sopho2440"

endif

3.2 修改sopho2440文件夹下的Makefile

# 删除
obj-y  := smdk2410.o
# 在原位置添加
obj-y  := sopho2440.o

3.3 修改sopho2440文件夹下的lowlevel_init.S

# 删除源文件中的
    .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
    .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
    .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
    .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
    .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
    .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
    .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
    .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
    .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
    .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
    .word 0x32
    .word 0x30
    .word 0x30

# 添加如下内容
    .long 0x22011110     //BWSCON   
    .long 0x00000700     //BANKCON0 
    .long 0x00000700     //BANKCON1 
    .long 0x00000700     //BANKCON2 
    .long 0x00000700     //BANKCON3 
    .long 0x00000700     //BANKCON4 
    .long 0x00000700     //BANKCON5 
    .long 0x00018005     //BANKCON6 
    .long 0x00018005     //BANKCON7 
    .long 0x008C04F4     // REFRESH 
    .long 0x000000B1     //BANKSIZE 
    .long 0x00000030     //MRSRB6   
    .long 0x00000030     //MRSRB7

3.4 修改sopho2440文件夹下的smdk2410.csopho2440.c

/* 删除如下对时钟配置的内容 */
        /* to reduce PLL lock time, adjust the LOCKTIME register */
        writel(0xFFFFFF, &clk_power->locktime);

        /* configure MPLL */
        writel((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV,
               &clk_power->mpllcon);

        /* some delay between MPLL and UPLL */
        pll_delay(4000);

4、结束语

完成对u-boot源码的如上修改之后,就可以使用make sopho2440_defconfig以及make CROSS_COMPILE=arm-linux-命令编译u-boot了,将生成的u-boot.bin文件烧入Nor Flash就可以实现u-boot的启动。

注意:该博文在完成所有文件的修改之后记录,可能有部分遗漏内容,如果在操作的时候遇到问题无法编译成功,欢迎在评论区留言

你可能感兴趣的:(移植u-boot-2016.11到JZ2440开发板)