一、 設計要求
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,可升級至 256M;MLC NAND Flash(2GB)
3) 其他資源:具有三LCD接口、 4線電阻觸摸屏接口、100M 標準網絡接口、標準DB9 五線串口、Mini USB 2.0 接口、USB Host 1.1、3.5mm音頻輸入輸出口、標準TV-OUT 接口、SD卡座、紅外接收等常用接口;另外還引出4路TTL串口,另 1 路 TV-OUT、SDIO2 接口(可接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