📄 tmp
字号:
diff -urN u-boot-1.2.0.orig/Makefile u-boot-1.2.0/Makefile--- u-boot-1.2.0.orig/Makefile 2007-01-07 07:13:11.000000000 +0800+++ u-boot-1.2.0/Makefile 2007-09-19 12:56:04.000000000 +0800@@ -125,7 +125,7 @@ CROSS_COMPILE = powerpc-linux- endif ifeq ($(ARCH),arm)-CROSS_COMPILE = arm-linux-+CROSS_COMPILE = /usr/local/arm/arm-2007q1/bin/arm-none-linux-gnueabi- endif ifeq ($(ARCH),i386) ifeq ($(HOSTARCH),i386)@@ -2350,3 +2350,10 @@ gtar --force-local -zcvf `date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F #########################################################################++#+# make {your board}+#++%: distclean %_config+ $(MAKE) && echo "^_^ Succeed!"diff -urN u-boot-1.2.0.orig/board/smdk2410/Makefile u-boot-1.2.0/board/smdk2410/Makefile--- u-boot-1.2.0.orig/board/smdk2410/Makefile 2007-01-07 07:13:11.000000000 +0800+++ u-boot-1.2.0/board/smdk2410/Makefile 2007-09-19 13:48:33.000000000 +0800@@ -25,7 +25,7 @@ LIB = $(obj)lib$(BOARD).a -COBJS := smdk2410.o flash.o+COBJS := smdk2410.o nand_read.o SOBJS := lowlevel_init.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)diff -urN u-boot-1.2.0.orig/board/smdk2410/lowlevel_init.S u-boot-1.2.0/board/smdk2410/lowlevel_init.S--- u-boot-1.2.0.orig/board/smdk2410/lowlevel_init.S 2007-01-07 07:13:11.000000000 +0800+++ u-boot-1.2.0/board/smdk2410/lowlevel_init.S 2007-09-19 12:22:08.000000000 +0800@@ -123,7 +123,7 @@ #define Trp 0x0 /* 2clk */ #define Trc 0x3 /* 7clk */ #define Tchr 0x2 /* 3clk */-#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */+#define REFCNT 1268 /* period=7.8125us, HCLK=100Mhz, (2048+1-7.8125*100) */ /**************************************/ _TEXT_BASE:diff -urN u-boot-1.2.0.orig/board/smdk2410/nand_read.c u-boot-1.2.0/board/smdk2410/nand_read.c--- u-boot-1.2.0.orig/board/smdk2410/nand_read.c 1970-01-01 08:00:00.000000000 +0800+++ u-boot-1.2.0/board/smdk2410/nand_read.c 2007-09-19 12:24:13.000000000 +0800@@ -0,0 +1,77 @@+/* + * vivi/s3c2410/nand_read.c: Simple NAND read functions for booting from NAND+ *+ * This is used by cpu/arm920/start.S assembler code,+ * and the board-specific linker script must make sure this+ * file is linked within the first 4kB of NAND flash.+ *+ * Taken from GPLv2 licensed vivi bootloader,+ * Copyright (C) 2002 MIZI Research, Inc.+ *+ * Author: Hwang, Chideok <hwang@mizi.com>+ * Date : $Date: 2002/08/14 10:26:47 $+ */++#include <config.h>++#ifdef CONFIG_S3C2410_NAND_BOOT++#define __REGb(x) (*(volatile unsigned char *)(x))+#define __REGi(x) (*(volatile unsigned int *)(x))+#define NF_BASE 0x4e000000+#define NFCONF __REGi(NF_BASE + 0x0)+#define NFCMD __REGb(NF_BASE + 0x4)+#define NFADDR __REGb(NF_BASE + 0x8)+#define NFDATA __REGb(NF_BASE + 0xc)+#define NFSTAT __REGb(NF_BASE + 0x10)++#define BUSY 1+inline void wait_idle(void) {+ int i;++ while(!(NFSTAT & BUSY))+ for(i=0; i<10; i++);+}++#define NAND_SECTOR_SIZE 512+#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1)++/* low level nand read function */+int+nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)+{+ int i, j;++ if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) {+ return -1; /* invalid alignment */+ }++ /* chip Enable */+ NFCONF &= ~0x800;+ for(i=0; i<10; i++);++ for(i=start_addr; i < (start_addr + size);) {+ /* READ0 */+ NFCMD = 0;++ /* Write Address */+ NFADDR = i & 0xff;+ NFADDR = (i >> 9) & 0xff;+ NFADDR = (i >> 17) & 0xff;+ NFADDR = (i >> 25) & 0xff;++ wait_idle();++ for(j=0; j < NAND_SECTOR_SIZE; j++, i++) {+ *buf = (NFDATA & 0xff);+ buf++;+ }+ }++ /* chip Disable */+ NFCONF |= 0x800; /* chip disable */++ return 0;+}++#endif /* CONFIG_S3C2410_NAND_BOOT */diff -urN u-boot-1.2.0.orig/board/smdk2410/smdk2410.c u-boot-1.2.0/board/smdk2410/smdk2410.c--- u-boot-1.2.0.orig/board/smdk2410/smdk2410.c 2007-01-07 07:13:11.000000000 +0800+++ u-boot-1.2.0/board/smdk2410/smdk2410.c 2007-09-19 12:21:39.000000000 +0800@@ -36,10 +36,10 @@ #define M_MDIV 0xC3 #define M_PDIV 0x4 #define M_SDIV 0x1-#elif FCLK_SPEED==1 /* Fout = 202.8MHz */-#define M_MDIV 0xA1-#define M_PDIV 0x3-#define M_SDIV 0x1+#elif FCLK_SPEED==1 /* Fout = 200MHz */+#define M_MDIV 0x5C+#define M_PDIV 0x4+#define M_SDIV 0x0 #endif #define USB_CLOCK 1@@ -87,7 +87,7 @@ /* set up the I/O ports */ gpio->GPACON = 0x007FFFFF;- gpio->GPBCON = 0x00044555;+ gpio->GPBCON = 0x000055A; gpio->GPBUP = 0x000007FF; gpio->GPCCON = 0xAAAAAAAA; gpio->GPCUP = 0x0000FFFF;@@ -99,7 +99,7 @@ gpio->GPFUP = 0x000000FF; gpio->GPGCON = 0xFF95FFBA; gpio->GPGUP = 0x0000FFFF;- gpio->GPHCON = 0x002AFAAA;+ gpio->GPHCON = 0x0016FAAA; gpio->GPHUP = 0x000007FF; /* arch number of SMDK2410-Board */diff -urN u-boot-1.2.0.orig/common/env_common.c u-boot-1.2.0/common/env_common.c--- u-boot-1.2.0.orig/common/env_common.c 2007-01-07 07:13:11.000000000 +0800+++ u-boot-1.2.0/common/env_common.c 2007-09-19 13:43:39.000000000 +0800@@ -198,6 +198,25 @@ } } +void default_env(void)+{+ if (sizeof(default_environment) > ENV_SIZE)+ {+ puts ("*** Error - default environment is too large\n\n");+ return;+ }++ memset (env_ptr, 0, sizeof(env_t));+ memcpy (env_ptr->data,+ default_environment,+ sizeof(default_environment));+#ifdef CFG_REDUNDAND_ENVIRONMENT+ env_ptr->flags = 0xFF;+#endif+ env_crc_update ();+ gd->env_valid = 1;+}+ void env_relocate (void) { DEBUGF ("%s[%d] offset = 0x%lx\n", __FUNCTION__,__LINE__,@@ -228,28 +247,7 @@ env_get_char = env_get_char_memory; if (gd->env_valid == 0) {-#if defined(CONFIG_GTH) || defined(CFG_ENV_IS_NOWHERE) /* Environment not changable */- puts ("Using default environment\n\n");-#else- puts ("*** Warning - bad CRC, using default environment\n\n");- SHOW_BOOT_PROGRESS (-1);-#endif-- if (sizeof(default_environment) > ENV_SIZE)- {- puts ("*** Error - default environment is too large\n\n");- return;- }-- memset (env_ptr, 0, sizeof(env_t));- memcpy (env_ptr->data,- default_environment,- sizeof(default_environment));-#ifdef CFG_REDUNDAND_ENVIRONMENT- env_ptr->flags = 0xFF;-#endif- env_crc_update ();- gd->env_valid = 1;+ default_env(); } else { env_relocate_spec ();diff -urN u-boot-1.2.0.orig/common/env_nand.c u-boot-1.2.0/common/env_nand.c--- u-boot-1.2.0.orig/common/env_nand.c 2007-01-07 07:13:11.000000000 +0800+++ u-boot-1.2.0/common/env_nand.c 2007-09-19 13:53:55.000000000 +0800@@ -57,8 +57,15 @@ size_t start, size_t len, size_t * retlen, u_char * buf); +#ifdef CFG_NAND_LEGACY+extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];+extern int nand_legacy_erase(struct nand_chip *nand, size_t ofs,+ size_t len, int clean);+nand_info_t nand_info[CFG_MAX_NAND_DEVICE];+#else /* info for NAND chips, defined in drivers/nand/nand.c */ extern nand_info_t nand_info[];+#endif /* references to names in env_common.c */ extern uchar default_environment[];@@ -76,9 +83,7 @@ /* local functions */-#if !defined(ENV_IS_EMBEDDED) static void use_default(void);-#endif DECLARE_GLOBAL_DATA_PTR; @@ -192,12 +197,23 @@ int ret = 0; puts ("Erasing Nand...");+ #if (CFG_NAND_LEGACY)+ if (nand_legacy_erase(nand_dev_desc + 0, CFG_ENV_OFFSET, CFG_ENV_SIZE, 0))+ return 1;+ #else if (nand_erase(&nand_info[0], CFG_ENV_OFFSET, CFG_ENV_SIZE)) return 1;+ #endif puts ("Writing to Nand... "); total = CFG_ENV_SIZE;+ #if (CFG_NAND_LEGACY)+ ret = nand_legacy_rw(nand_dev_desc + 0,+ 0x00 | 0x02, CFG_ENV_OFFSET, CFG_ENV_SIZE,+ &total, (u_char*)env_ptr);+ #else ret = nand_write(&nand_info[0], CFG_ENV_OFFSET, &total, (u_char*)env_ptr);+ #endif if (ret || total != CFG_ENV_SIZE) return 1; @@ -272,7 +288,12 @@ int ret; total = CFG_ENV_SIZE;- ret = nand_read(&nand_info[0], CFG_ENV_OFFSET, &total, (u_char*)env_ptr);+ #if (CFG_NAND_LEGACY)+ ret = nand_legacy_rw(nand_dev_desc + 0, 0x01 | 0x02, CFG_ENV_OFFSET, + CFG_ENV_SIZE, &total, (u_char*)env_ptr);+ #else+ ret = nand_read(&nand_info[0], CFG_ENV_OFFSET, &total, (u_char*)env_ptr);+ #endif if (ret || total != CFG_ENV_SIZE) return use_default(); @@ -282,24 +303,11 @@ } #endif /* CFG_ENV_OFFSET_REDUND */ -#if !defined(ENV_IS_EMBEDDED) static void use_default() { puts ("*** Warning - bad CRC or NAND, using default environment\n\n"); - if (default_environment_size > CFG_ENV_SIZE){- puts ("*** Error - default environment is too large\n\n");- return;- }-- memset (env_ptr, 0, sizeof(env_t));- memcpy (env_ptr->data,- default_environment,- default_environment_size);- env_ptr->crc = crc32(0, env_ptr->data, ENV_SIZE);- gd->env_valid = 1;-+ default_env(); }-#endif #endif /* CFG_ENV_IS_IN_NAND */diff -urN u-boot-1.2.0.orig/cpu/arm920t/start.S u-boot-1.2.0/cpu/arm920t/start.S--- u-boot-1.2.0.orig/cpu/arm920t/start.S 2007-01-07 07:13:11.000000000 +0800+++ u-boot-1.2.0/cpu/arm920t/start.S 2007-09-19 12:37:00.000000000 +0800@@ -27,7 +27,7 @@ #include <config.h> #include <version.h>-+#include <s3c2410.h> /* *************************************************************************@@ -140,7 +140,7 @@ ldr r0, =INTMSK str r1, [r0] # if defined(CONFIG_S3C2410)- ldr r1, =0x3ff+ ldr r1, =0x7ff /* not necessary */ ldr r0, =INTSUBMSK str r1, [r0] # endif@@ -161,6 +161,7 @@ #endif #ifndef CONFIG_SKIP_RELOCATE_UBOOT+#ifndef CONFIG_S3C2410_NAND_BOOT relocate: /* relocate U-Boot to RAM */ adr r0, _start /* r0 <- current position of code */ ldr r1, _TEXT_BASE /* test if we run from flash or RAM */@@ -177,8 +178,67 @@ stmia r1!, {r3-r10} /* copy to target address [r1] */ cmp r0, r2 /* until source end addreee [r2] */ ble copy_loop+#else /* NAND BOOT */+relocate:+copy_myself:+ @ reset NAND+ mov r1, #S3C2410_NAND_BASE+ ldr r2, =0xf830 @ initial value enable+ str r2, [r1, #oNFCONF]+ ldr r2, [r1, #oNFCONF]+ bic r2, r2, #0x800 @ enable chip+ str r2, [r1, #oNFCONF]+ mov r2, #0xff @ RESET command+ strb r2, [r1, #oNFCMD]+ mov r3, #0 @ wait+1: add r3, r3, #0x1+ cmp r3, #0xa+ blt 1b+2: ldr r2, [r1, #oNFSTAT] @ wait ready+ tst r2, #0x1+ beq 2b+ ldr r2, [r1, #oNFCONF]+ orr r2, r2, #0x800 @ disable chip+ str r2, [r1, #oNFCONF]++ /* stack setup */+ ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */+ sub r0, r0, #CFG_MALLOC_LEN /* malloc area */+ sub r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo */+#ifdef CONFIG_USE_IRQ+ sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)+#endif+ sub sp, r0, #12 /* leave 3 words for abort-stack */++ @ copy u-boot to RAM+ ldr r0, _TEXT_BASE+ mov r1, #0x0+ mov r2, #CFG_UBOOT_SIZE+ bl nand_read_ll++ tst r0, #0x0+ beq ok_nand_read+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -