Uboot_for_Tiny6410_移植步驟詳解

一、           設計要求

1.        目的

1)        掌握U-boot剪裁編寫

2)        掌握交叉編譯環境的配置

3)        掌握U-boot的移植

2.        實現的功能

1)        U-boot編譯成功

2)        移植U-boot,使系統支持從NAND  FLASH啓動

二、           設計方案

1.        硬件資源

1)        ARM處理器:ARM11芯片(Samsung S3C6410A),基於 ARM1176JZF-S核設計,運行頻率 533Mhz,  最高可達 667Mhz

2)        存儲器: 128M DDR RAM,可升級至 256MMLC NAND Flash(2GB)

3)        其他資源:具有三LCD接口、 4線電阻觸摸屏接口、100M 標準網絡接口、標準DB9 五線串口、Mini USB 2.0 接口、USB Host 1.13.5mm音頻輸入輸出口、標準TV-OUT 接口、SD卡座、紅外接收等常用接口;另外還引出4TTL串口,另 1 TV-OUTSDIO2 接口(可接SD WiFi)接口等;在板的還有蜂鳴器、I2C-EEPROM、備份電池、AD可調電阻、8 箇中斷式按鍵等。

2.        軟件資源

1)        arm-linux-gcc-4.5.1(交叉編譯)

2)        u-boot-2010.09.tar.gz  arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz

三、           移植過程

1.      環境搭建

1)        建立交叉編譯環境

2)        下載得到最新或者你想要的u-boot

下面是具體的對u-boot…的修改

 

一: 下載並解壓u-boot-gxb.tar.gz

       #tar xzvf u-boot-gxb.tar.gz

二:在頂層的目錄下找到Makefile文件,並用gedit打開

在Makefile中找到下面代碼進行修改

########################################################################

## ARM1176 Systems

#########################################################################

smdk6400_noUSB_config    \

smdk6400_config   :   unconfig

    @mkdir -p $(obj)include $(obj)board/samsung/smdk6400

    @mkdir -p $(obj)nand_spl/board/samsung/smdk6400

    @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h

    @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

    @if [ -z "$(findstring smdk6400_noUSB_config,$@)" ]; then          \

       echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\

    else                                   \

       echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\

    fi

    @$(MKCONFIG) smdk6400 arm arm1176 smdk6400 samsung s3c64xx

    @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

 

下面紅色的爲新增加的

#=====================更改部分=======================================

tiny6410_noUSB_config   \

tiny6410_config :       unconfig

   @mkdir -p $(obj)include $(obj)board/samsung/tiny6410

   @mkdir -p $(obj)nand_spl/board/samsung/tiny6410

   @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h

   @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

   @if [ -z "$(findstring tiny6410_noUSB_config,$@)" ]; then                       \

                echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/tiny6410/config.tmp;\

        else                                                                            \

                echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/tiny6410/config.tmp;\

        fi

   @$(MKCONFIG) tiny6410 arm arm1176 tiny6410 samsung s3c64xx

   @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

#==================================================================

: arch/arm/cpu/arm1176/s3c64xx/cpu_init.S

#gedit arch/arm/cpu/arm1176/s3c64xx/cpu_init.S

    #include <config.h>

#include <asm/arch/s3c6400.h>

 

    .globl mem_ctrl_asm_init

mem_ctrl_asm_init:

   

    ldr r0, =ELFIN_DMC1_BASE

 

    ldr r1, =0x4

    str r1, [r0, #INDEX_DMC_MEMC_CMD]

 

    ldr r1, =DMC_DDR_REFRESH_PRD

    str r1, [r0, #INDEX_DMC_REFRESH_PRD]

 

    ldr r1, =DMC_DDR_CAS_LATENCY

    str r1, [r0, #INDEX_DMC_CAS_LATENCY]

 

    ldr r1, =DMC_DDR_t_DQSS

    str r1, [r0, #INDEX_DMC_T_DQSS]

 

    ldr r1, =DMC_DDR_t_MRD

    str r1, [r0, #INDEX_DMC_T_MRD]

 

    ldr r1, =DMC_DDR_t_RAS

    str r1, [r0, #INDEX_DMC_T_RAS]

 

    ldr r1, =DMC_DDR_t_RC

    str r1, [r0, #INDEX_DMC_T_RC]

 

    ldr r1, =DMC_DDR_t_RCD

    ldr r2, =DMC_DDR_schedule_RCD

    orr r1, r1, r2

    str r1, [r0, #INDEX_DMC_T_RCD]

 

    ldr r1, =DMC_DDR_t_RFC

    ldr r2, =DMC_DDR_schedule_RFC

    orr r1, r1, r2

    str r1, [r0, #INDEX_DMC_T_RFC]

 

    ldr r1, =DMC_DDR_t_RP

    ldr r2, =DMC_DDR_schedule_RP

    orr r1, r1, r2

    str r1, [r0, #INDEX_DMC_T_RP]

 

    ldr r1, =DMC_DDR_t_RRD

    str r1, [r0, #INDEX_DMC_T_RRD]

 

    ldr r1, =DMC_DDR_t_WR

    str r1, [r0, #INDEX_DMC_T_WR]

 

    ldr r1, =DMC_DDR_t_WTR

    str r1, [r0, #INDEX_DMC_T_WTR]

 

    ldr r1, =DMC_DDR_t_XP

    str r1, [r0, #INDEX_DMC_T_XP]

 

    ldr r1, =DMC_DDR_t_XSR

    str r1, [r0, #INDEX_DMC_T_XSR]

 

    ldr r1, =DMC_DDR_t_ESR

    str r1, [r0, #INDEX_DMC_T_ESR]

 

    ldr r1, =DMC1_MEM_CFG

    str r1, [r0, #INDEX_DMC_MEMORY_CFG]

 

    ldr r1, =DMC1_MEM_CFG2

    str r1, [r0, #INDEX_DMC_MEMORY_CFG2]

 

    ldr r1, =DMC1_CHIP0_CFG

    str r1, [r0, #INDEX_DMC_CHIP_0_CFG]

 

    ldr r1, =DMC_DDR_32_CFG

    str r1, [r0, #INDEX_DMC_USER_CONFIG]

 

   

    ldr r1, =DMC_NOP0

    str r1, [r0, #INDEX_DMC_DIRECT_CMD]

 

   

    ldr r1, =DMC_PA0

    str r1, [r0, #INDEX_DMC_DIRECT_CMD]

 

   

    ldr r1, =DMC_AR0

    str r1, [r0, #INDEX_DMC_DIRECT_CMD]

    str r1, [r0, #INDEX_DMC_DIRECT_CMD]

 

   

    ldr r1, =DMC_mDDR_EMR0

    str r1, [r0, #INDEX_DMC_DIRECT_CMD]

 

   

    ldr r1, =DMC_mDDR_MR0

    str r1, [r0, #INDEX_DMC_DIRECT_CMD]

 

   

    mov r1, #0x0

    str r1, [r0, #INDEX_DMC_MEMC_CMD]

 

check_dmc1_ready:

    ldr r1, [r0, #INDEX_DMC_MEMC_STATUS]

    mov r2, #0x3

    and r1, r1, r2

    cmp r1, #0x1

    bne check_dmc1_ready

 

    nop

添加下面紅色的代碼

#if defined(CONFIG_TINY6410)

 

#define SROM_BC1_REG_Tacs      (0x0)    // 0clk          address set-up

#define SROM_BC1_REG_Tcos      (0x4)    // 4clk          chip selection set-up

#define SROM_BC1_REG_Tacc      (0xE)    // 14clk        access cycle

#define SROM_BC1_REG_Tcoh      (0x1)    // 1clk          chip selection hold

#define SROM_BC1_REG_Tah      (0x4)    // 4clk          address holding time

#define SROM_BC1_REG_Tacp      (0x6)    // 6clk          page mode access cycle

#define SROM_BC1_REG_PMC      (0x0)    // normal(1data)page mode configuration

 

#define SROM_BW_REG_DATA    ((1<<7) | (1<<6) | (1<<4))

#define SROM_BW_REG_BC1        (0xf << 4)

#define  SROM_BC1_REG_DATA    ((SROM_BC1_REG_Tacs  <<  28)  | \

                              (SROM_BC1_REG_Tcos << 24) | \

                (SROM_BC1_REG_Tacc << 16) | (SROM_BC1_REG_Tcoh << 12) | \

                (SROM_BC1_REG_Tah << 8) | (SROM_BC1_REG_Tacp << 4) | \

                (SROM_BC1_REG_PMC))

 

    ldr    r0, =ELFIN_SROM_BASE

 

    ldr    r1, [r0, #SROM_BW_REG_DATA]

    mov    r2, #(~SROM_BW_REG_BC1)

    and    r1, r1, r2

    mov    r2, #SROM_BW_REG_DATA

    orr    r1, r1, r2    

    str    r1, [r0, #INDEX_SROM_BW_REG]

    ldr    r1, =SROM_BC1_REG_DATA

    str    r1, [r0, #INDEX_SROM_BC1_REG]

#endif

    mov pc, lr

 

    .ltorg

四:修改arch/arm/cpu/arm1176/s3c64xx/Makefile

# gedit arch/arm/cpu/arm1176/s3c64xx/Makefile

include $(TOPDIR)/config.mk

 

LIB  = $(obj)lib$(SOC).a

 

SOBJS    = reset.o

 

#COBJS-$(CONFIG_S3C6400)  += cpu_init.o speed.o

添加下面紅色代碼

#==================================更改部分================================

COBJS-$(CONFIG_S3C6410) += cpu_init.o speed.o

#=========================================================================

COBJS-y += timer.o

 

OBJS      := $(addprefix $(obj),$(SOBJS) $(COBJS-y))

 

all:  $(obj).depend $(START) $(LIB)

 

$(LIB):    $(OBJS)

       $(AR) $(ARFLAGS) $@ $(OBJS)

五:修改arch\arm\include\asm\arch-s3c64xx\s3c64x0.h

#ifndef __S3C64XX_H__

#define __S3C64XX_H__

添加紅色代碼

#if defined(CONFIG_SYNC_MODE) && defined(CONFIG_S3C6400) || defined(CONFIG_S3C6410)

#endif

 

#include <asm/types.h>

六:修改arch/arm/include/asm/arch-s3c64xx/s3c6400.h

#define ELFIN_SROM_BASE           0x70000000

 

#define SROM_BW_REG  __REG(ELFIN_SROM_BASE + 0x0)

#define SROM_BC0_REG __REG(ELFIN_SROM_BASE + 0x4)

#define SROM_BC1_REG __REG(ELFIN_SROM_BASE + 0x8)

#define SROM_BC2_REG __REG(ELFIN_SROM_BASE + 0xC)

#define SROM_BC3_REG __REG(ELFIN_SROM_BASE + 0x10)

#define SROM_BC4_REG __REG(ELFIN_SROM_BASE + 0x14)

#define SROM_BC5_REG __REG(ELFIN_SROM_BASE + 0x18)

添加下面紅色代碼

#define INDEX_SROM_BW_REG     0x0

#define INDEX_SROM_BC0_REG    0x4

#define INDEX_SROM_BC1_REG    0x8

#define INDEX_SROM_BC2_REG    0xC

#define INDEX_SROM_BC3_REG    0x10

#define INDEX_SROM_BC4_REG    0x14

#define INDEX_SROM_BC5_REG    0x18

        #if 0

   ldr   r0, =ELFIN_GPIO_BASE

   ldr   r1, =0x55540000

   str   r1, [r0, #GPNCON_OFFSET]

 

   ldr   r1, =0x55555555

   str   r1, [r0, #GPNPUD_OFFSET]

 

   ldr   r1, =0xf000

   str   r1, [r0, #GPNDAT_OFFSET]

        #endif

將上面的紅色的部分屏蔽掉

wakeup_reset:

 

      

       ldr   r0, =(ELFIN_CLOCK_POWER_BASE + WAKEUP_STAT_OFFSET)

       ldr   r1, [r0]

       str   r1, [r0]

 

      

        #if 0

   ldr   r0, =ELFIN_GPIO_BASE

   ldr   r1, =0x3000

   str   r1, [r0, #GPNDAT_OFFSET]

        #endif

      

       ldr   r0, =(ELFIN_CLOCK_POWER_BASE + INF_REG0_OFFSET)

      

       ldr   r1, [r0]

      

       mov       pc, r1

       nop

       nop

將上面紅色的部分屏蔽掉

 

#if !defined(CONFIG_S3C6400) && !defined(CONFIG_S3C6410)

       ldr   r1, [r0, #OTHERS_OFFSET]

bic  r1, r1, #0xC0

       orr  r1, r1, #0x40

       str   r1, [r0, #OTHERS_OFFSET]

八:修改board/Samsung/tiny6410/Makefile

include $(TOPDIR)/config.mk

 

LIB  = $(obj)lib$(BOARD).a

#=============================更改部分=====================

COBJS-y  := tiny6410.o

SOBJS := lowlevel_init.o

#===========================================================

SRCS    := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)

OBJS      := $(addprefix $(obj),$(COBJS-y))

SOBJS    := $(addprefix $(obj),$(SOBJS))

九修改board/samsung/tiny6410/tiny6410.c

屏蔽掉下面頭文件;

      

#if 0

#include <netdev.h>

#endif

 

#include <asm/arch/s3c6400.h>

#if 0

#define CS8900_Tacs   0x0  

#define CS8900_Tcos   0x4  

#define CS8900_Tacc   0xE  

#define CS8900_Tcoh   0x1  

#define CS8900_Tah 0x4  

#define CS8900_Tacp   0x6  

#define CS8900_PMC 0x0  

#endif

static inline void delay(unsigned long loops)

{

       __asm__ volatile ("1:\n" "subs %0, %1, #1\n"

                       "bne 1b"

                       : "=r" (loops) : "0" (loops));

}

 

#if 0

static void cs8900_pre_init(void)

{

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

   SROM_BW_REG |= (1 << 7) | (1 << 6) | (1 << 4);

   SROM_BC1_REG = ((CS8900_Tacs << 28) + (CS8900_Tcos << 24) +

         (CS8900_Tacc << 16) + (CS8900_Tcoh << 12) +

         (CS8900_Tah << 8) + (CS8900_Tacp << 4) + CS8900_PMC);

}

#endif

 

int board_init(void)

{

       DECLARE_GLOBAL_DATA_PTR;

   #if 0

   cs8900_pre_init();

   #endif

      

 

      

       SROM_BW_REG |= 4 | 8 | 1;

 

       gd->bd->bi_arch_number = MACH_TYPE;

       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;

 

       return 0;

}

int dram_init(void)

{

       DECLARE_GLOBAL_DATA_PTR;

 

       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;

       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;

 

       return 0;

}

#ifdef CONFIG_DISPLAY_BOARDINFO

int checkboard(void)

{

   printf("Board:   TINY6410\n");

       return 0;

}

#endif

 

#ifdef CONFIG_ENABLE_MMU

ulong virt_to_phy_tiny6410(ulong addr)

{

       if ((0xc0000000 <= addr) && (addr < 0xc8000000))

              return addr - 0xc0000000 + 0x50000000;

       else

              printf("do not support this address : lx\n", addr);

 

       return addr;

}

#endif

#if 0

ulong board_flash_get_legacy (ulong base, int banknum, flash_info_t *info)

{

   if (banknum == 0) {  

      info->portwidth = FLASH_CFI_16BIT;

      info->chipwidth = FLASH_CFI_BY16;

      info->interface = FLASH_CFI_X16;

      return 1;

   } else

      return 0;

}

#endif

#ifdef CONFIG_CMD_NET

int board_eth_init(bd_t *bi)

{

   int rc = 0;

#if defined(CONFIG_DRIVER_DM9000)

   rc = dm9000_initialize(bi);

#endif

   return rc;

}

#endif

:修改drivers/net/dm9000x.c

DM9000_ior(DM9000_MRCMDX);      

 

             

              rxbyte = DM9000_inb(DM9000_DATA) & 0x03;

 

                 #if 1

                 u8 temp;

          temp=DM9000_ior(DM9000_MRRH);

          temp=DM9000_ior(DM9000_MRRL);

              #endif

色的爲增加的

    

             

              if (rxbyte > DM9000_PKT_RDY) {

                     DM9000_iow(DM9000_RCR, 0x00);    

                     DM9000_iow(DM9000_ISR, 0x80);      

                     printf("DM9000 error: status check fail: 0x%x\n",

                            rxbyte);

                     return 0;

              }

十一:修改drivers/usb/host/ohci-hcd.c

#ifdef CONFIG_AT91RM9200

#include <asm/arch/hardware.h> 

#endif

//=====================更改部分================

#if defined(CONFIG_ARM920T) || \

    defined(CONFIG_S3C24X0) || \

    defined(CONFIG_S3C6400) || \

    defined(CONFIG_S3C6410) || \

    defined(CONFIG_440EP)   || \

    defined(CONFIG_PCI_OHCI)|| \

    defined(CONFIG_MPC5200) || \

    defined(CONFIG_SYS_OHCI_USE_NPS)

//=============================================

# define OHCI_USE_NPS         

#endif

#undef OHCI_VERBOSE_DEBUG   

十二:include/configs/tiny6410.h

//======================更改部分==================================

//#define CONFIG_S3C6400    1    

  #define CONFIG_S3C6410          1       

//===============================================================

#define CONFIG_S3C64XX              1    

#define CONFIG_SMDK6400          1    

//=========================更改部分====================================

  #define CONFIG_TINY6410   1

//===================================================================

#define CONFIG_SKIP_RELOCATE_UBOOT

 

#define CONFIG_PERIPORT_REMAP

#define CONFIG_PERIPORT_BASE  0x70000000

#define CONFIG_PERIPORT_SIZE   0x13

 

#define CONFIG_SYS_SDRAM_BASE     0x50000000

 

#define CONFIG_SYS_CLK_FREQ    12000000

 

#if !defined(CONFIG_NAND_SPL) && (TEXT_BASE >= 0xc0000000)

#define CONFIG_ENABLE_MMU

#endif

 

#define CONFIG_SETUP_MEMORY_TAGS

#define CONFIG_CMDLINE_TAG

#define CONFIG_INITRD_TAG

//===================更改部分=====================

 #define MACH_TYPE               2520

//==============================================

 

#define CONFIG_DISPLAY_CPUINFO

#define CONFIG_DISPLAY_BOARDINFO

 

#define CONFIG_SYS_MALLOC_LEN            (CONFIG_ENV_SIZE + 1024 * 1024)

#define CONFIG_SYS_GBL_DATA_SIZE  128

//==========================更改部分============================

將sc8900的網卡幹掉

#if 0

#define CONFIG_NET_MULTI

#define CONFIG_CS8900      

#define CONFIG_CS8900_BASE    0x18800300

#define CONFIG_CS8900_BUS16   

#endif

換成下面的

#define CONFIG_NET_MULTI       1

#define CONFIG_DRIVER_DM9000      1

#define CONFIG_DM9000_NO_SROM     1

#define CONFIG_DM9000_USE_16BIT   1

#define CONFIG_DM9000_BASE     0x18000300

#define DM9000_IO        CONFIG_DM9000_BASE

#define DM9000_DATA         (CONFIG_DM9000_BASE+4)

 

#define CONFIG_ETHADDR 08:08:10:12:10:27

#define CONFIG_NETMASK 255.255.255.0

#define CONFIG_IPADDR 192.168.1.253

#define CONFIG_SERVERIP 192.168.1.159

#define CONFIG_GATEWAYIP 192.168.1.1

//=============================================================

#define CONFIG_SERIAL1          1      

 

#define CONFIG_SYS_HUSH_PARSER                 

#ifdef CONFIG_SYS_HUSH_PARSER

#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "

#endif

 

#define CONFIG_CMDLINE_EDITING

 

#define CONFIG_ENV_OVERWRITE

 

#define CONFIG_BAUDRATE          115200

 

#include <config_cmd_default.h>

#define CONFIG_CMD_CACHE

#define CONFIG_CMD_REGINFO

#define CONFIG_CMD_LOADS

#define CONFIG_CMD_LOADB

#define CONFIG_CMD_SAVEENV

#define CONFIG_CMD_NAND

#if defined(CONFIG_BOOT_ONENAND)

#define CONFIG_CMD_ONENAND

#endif

#define CONFIG_CMD_PING

#define CONFIG_CMD_ELF

#define CONFIG_CMD_FAT

#define CONFIG_CMD_EXT2

//===========================================更改部分==================

添加紅色部分

#undef CONFIG_CMD_IMLS

//======================================================================

#define CONFIG_BOOTDELAY 3

 

#define CONFIG_ZERO_BOOTDELAY_CHECK

#if (CONFIG_COMMANDS & CONFIG_CMD_KGDB)

#define CONFIG_KGDB_BAUDRATE      115200 

#define CONFIG_KGDB_SER_INDEX      1    

#endif

#define CONFIG_SYS_LONGHELP                       

下面修改爲自己喜歡的提示字符

//==============================更改部分======================================

//#define CONFIG_SYS_PROMPT          "SMDK6400 # "  

  #define CONFIG_SYS_PROMPT               "TINY6410 # "  

//===========================================================================

#define CONFIG_SYS_CBSIZE         256       

#define CONFIG_SYS_PBSIZE          384       

#define CONFIG_SYS_MAXARGS           16         

#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE 

 

#define CONFIG_SYS_MEMTEST_START      CONFIG_SYS_SDRAM_BASE   

#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_SDRAM_BASE + 0x7e00000)

#define CONFIG_SYS_LOAD_ADDR              CONFIG_SYS_SDRAM_BASE   

#define CONFIG_SYS_HZ                1000

#define CONFIG_SYS_BAUDRATE_TABLE     { 9600, 19200, 38400, 57600, 115200 }

#define CONFIG_STACKSIZE    0x40000             

提高主頻

//===========================================更改部分=====================

  #define CONFIG_CLK_667_133_66

//#define CONFIG_CLK_533_133_66

//=========================================================================

#define CONFIG_NR_DRAM_BANKS     1

#define PHYS_SDRAM_1         CONFIG_SYS_SDRAM_BASE   

#define PHYS_SDRAM_1_SIZE 0x08000000

 

#define CONFIG_SYS_FLASH_BASE              0x10000000

#define CONFIG_SYS_MONITOR_BASE 0x00000000

 

#define CONFIG_SYS_MAX_FLASH_BANKS  1    

#define CONFIG_SYS_MAX_FLASH_SECT     40

#define CONFIG_AMD_LV800

//===================================更改部分=========================

//#define CONFIG_SYS_FLASH_CFI        1    

將上面的換成下面紅色的部分

#define CONFIG_SYS_NO_FLASH          1      

//=================================================================

//=========================更改部分===================================

刪掉下面黃色的

#if 0

#define CONFIG_FLASH_CFI_DRIVER    1

#define CONFIG_SYS_FLASH_CFI_WIDTH    FLASH_CFI_16BIT

#define CONFIG_FLASH_CFI_LEGACY

#define CONFIG_SYS_FLASH_LEGACY_512Kx16

 

#define CONFIG_SYS_FLASH_ERASE_TOUT (5 * CONFIG_SYS_HZ)

#define CONFIG_SYS_FLASH_WRITE_TOUT (5 * CONFIG_SYS_HZ)

#endif

//=======================================================================================

#define CONFIG_ENV_SIZE             0x4000 

 

//=========================================更改部分============================

//#define CONFIG_IDENT_STRING     " for SMDK6400"

將上面的改爲下面的

#define CONFIG_IDENT_STRING " for TINY6410"

//=================================================================================

#define CONFIG_SYS_PHY_UBOOT_BASE    (CONFIG_SYS_SDRAM_BASE + 0x07e00000)

#define CONFIG_SYS_UBOOT_SIZE              (1024 * 1024)

十三:修改include/common.h

ulong     get_OPB_freq (void);

ulong     get_PCI_freq (void);

#endif

#if defined(CONFIG_S3C24X0) || \

    defined(CONFIG_LH7A40X) || \

    defined(CONFIG_S3C6400) || \

    defined(CONFIG_S3C6410) || \     添加紅色的

    defined(CONFIG_EP93XX)

ulong     get_FCLK (void);

ulong     get_HCLK (void);

ulong     get_PCLK (void);

 

ulong     get_UCLK (void);

#endif

十四:修改頂層的MAKEALL

#########################################################################

## ARM11 Systems

#########################################################################

LIST_ARM11="                  \

       cp1136                \

       omap2420h4              \

       apollon                \

       imx31_litekit              \

       imx31_phycore          \

       imx31_phycore_eet   \

       mx31ads                     \

       mx31pdk                    \

       mx31pdk_nand          \

       qong                    \

       smdk6400            \

       tnetv107x_evm          \

添加下面紅色的部分

   tiny6410 \

#########################################################################

 十五:修改頂層的MAINTAINERS

修改下面的爲自己的

Alex Z黳ke <[email protected]>

 

       lart        SA1100

       dnp1110              SA1110

   Wnn168<[email protected]>

   TINT6410 ARM1176JZF-S (S3C6410)

-------------------------------------------------------------------------

Unknown / orphaned boards:

十六:修改   nand_spl/board/samsung/ tiny6410/config.mk

                                             下面的這個沒有改動

# FriendlyARM TINY6410 development board,based on

# Samsung S3C64xx Reference Platform (smdk6400) board

 

# TEXT_BASE for SPL:

#

# On S3C64xx platforms the SPL is located in SRAM at 0.

#

# TEXT_BASE = 0

 

include $(TOPDIR)/board/$(BOARDDIR)/config.mk

 

# PAD_TO used to generate a 4kByte binary needed for the combined image

# -> PAD_TO = TEXT_BASE + 4096

PAD_TO := $(shell expr $(TEXT_BASE) + 4096)

 

ifeq ($(debug),1)

PLATFORM_CPPFLAGS += -DDEBUG

Endif

十七:在nand_sql/board/Samsung/tiny6410 這個tiny6410是仿照上述smdk6410做的內容一樣複製然後修改下面的就   OK

Nand_sql/board/Samsung/tiny6410/Makefile

# from board directory

#=========================更改部分===================================

$(obj)lowlevel_init.S:

       @rm -f $@

#     @ln -s $(TOPDIR)/board/samsung/smdk6400/lowlevel_init.S $@

   @ln -s $(TOPDIR)/board/samsung/tiny6410/lowlevel_init.S $@

#=================================================================

# from nand_spl directory

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章