[embeded] Port u-boot to mini2440 (1)
Step one -> Make fold for mini2440:1.cp board/sbc2410 board/mini2440
2.touch board/mini2440/nand_read.c
/* * 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* Date : $Date: 2004/02/04 10:37:37 $ * * u-boot integration and bad-block skipping (C) 2006 by OpenMoko, Inc. * Author: Harald Welte */ #include <common.h> #include <linux/mtd/nand.h> #define __REGb(x) (*(volatile unsigned char *)(x)) #define __REGw(x) (*(volatile unsigned short *)(x)) #define __REGi(x) (*(volatile unsigned int *)(x)) #define NF_BASE 0x4e000000 #if defined(CONFIG_S3C2410) #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 NFSTAT_BUSY 1 #define nand_select() (NFCONF &= ~0x800) #define nand_deselect() (NFCONF |= 0x800) #define nand_clear_RnB() do {} while (0) #elif defined(CONFIG_S3C2440) || defined(CONFIG_S3C2442) #define NFCONF __REGi(NF_BASE + 0x0) #define NFCONT __REGi(NF_BASE + 0x4) #define NFCMD __REGb(NF_BASE + 0x8) #define NFADDR __REGb(NF_BASE + 0xc) #define NFDATA __REGb(NF_BASE + 0x10) #define NFDATA16 __REGw(NF_BASE + 0x10) #define NFSTAT __REGb(NF_BASE + 0x20) #define NFSTAT_BUSY 1 #define nand_select() (NFCONT &= ~(1 << 1)) #define nand_deselect() (NFCONT |= (1 << 1)) #define nand_clear_RnB() (NFSTAT |= (1 << 2)) #endif static inline void nand_wait(void) { int i; while (!(NFSTAT & NFSTAT_BUSY)) for (i=0; i<10; i++); } struct boot_nand_t { int page_size; int block_size; int bad_block_offset; // unsigned long size; }; #if 0 #if defined(CONFIG_S3C2410) || defined(CONFIG_MINI2440) /* configuration for 2410 with 512byte sized flash */ #define NAND_PAGE_SIZE 512 #define BAD_BLOCK_OFFSET 5 #define NAND_BLOCK_MASK (NAND_PAGE_SIZE - 1) #define NAND_BLOCK_SIZE 0x4000 #else /* configuration for 2440 with 2048byte sized flash */ #define NAND_5_ADDR_CYCLE #define NAND_PAGE_SIZE 2048 #define BAD_BLOCK_OFFSET NAND_PAGE_SIZE #define NAND_BLOCK_MASK (NAND_PAGE_SIZE - 1) #define NAND_BLOCK_SIZE (NAND_PAGE_SIZE * 64) #endif /* compile time failure in case of an invalid configuration */ #if defined(CONFIG_S3C2410) && (NAND_PAGE_SIZE != 512) #error "S3C2410 does not support nand page size != 512" #endif #endif static int is_bad_block(struct boot_nand_t * nand, unsigned long i) { unsigned char data; unsigned long page_num; nand_clear_RnB(); if (nand->page_size == 512) { NFCMD = NAND_CMD_READOOB; /* 0x50 */ NFADDR = nand->bad_block_offset & 0xf; NFADDR = (i >> 9) & 0xff; NFADDR = (i >> 17) & 0xff; NFADDR = (i >> 25) & 0xff; } else if (nand->page_size == 2048) { page_num = i >> 11; /* addr / 2048 */ NFCMD = NAND_CMD_READ0; NFADDR = nand->bad_block_offset & 0xff; NFADDR = (nand->bad_block_offset >> 8) & 0xff; NFADDR = page_num & 0xff; NFADDR = (page_num >> 8) & 0xff; NFADDR = (page_num >> 16) & 0xff; NFCMD = NAND_CMD_READSTART; } else { return -1; } nand_wait(); data = (NFDATA & 0xff); if (data != 0xff) return 1; return 0; } static int nand_read_page_ll(struct boot_nand_t * nand, unsigned char *buf, unsigned long addr) { unsigned short *ptr16 = (unsigned short *)buf; unsigned int i, page_num; nand_clear_RnB(); NFCMD = NAND_CMD_READ0; if (nand->page_size == 512) { /* Write Address */ NFADDR = addr & 0xff; NFADDR = (addr >> 9) & 0xff; NFADDR = (addr >> 17) & 0xff; NFADDR = (addr >> 25) & 0xff; } else if (nand->page_size == 2048) { page_num = addr >> 11; /* addr / 2048 */ /* Write Address */ NFADDR = 0; NFADDR = 0; NFADDR = page_num & 0xff; NFADDR = (page_num >> 8) & 0xff; NFADDR = (page_num >> 16) & 0xff; NFCMD = NAND_CMD_READSTART; } else { return -1; } nand_wait(); #if defined(CONFIG_S3C2410) for (i = 0; i < nand->page_size; i++) { *buf = (NFDATA & 0xff); buf++; } #elif defined(CONFIG_S3C2440) || defined(CONFIG_S3C2442) for (i = 0; i < (nand->page_size>>1); i++) { *ptr16 = NFDATA16; ptr16++; } #endif return nand->page_size; } static unsigned short nand_read_id() { unsigned short res = 0; NFCMD = NAND_CMD_READID; NFADDR = 0; res = NFDATA; res = (res << 8) | NFDATA; return res; } extern unsigned int dynpart_size[]; /* low level nand read function */ int nand_read_ll(unsigned char *buf, unsigned long start_addr, int size) { int i, j; unsigned short nand_id; struct boot_nand_t nand; /* chip Enable */ nand_select(); nand_clear_RnB(); for (i = 0; i < 10; i++) ; nand_id = nand_read_id(); if (0) { /* dirty little hack to detect if nand id is misread */ unsigned short * nid = (unsigned short *)0x31fffff0; *nid = nand_id; } if (nand_id == 0xec76 || /* Samsung K91208 */ nand_id == 0xad76 ) { /*Hynix HY27US08121A*/ nand.page_size = 512; nand.block_size = 16 * 1024; nand.bad_block_offset = 5; // nand.size = 0x4000000; } else if (nand_id == 0xecf1 || /* Samsung K9F1G08U0B */ nand_id == 0xecda || /* Samsung K9F2G08U0B */ nand_id == 0xecd3 ) { /* Samsung K9K8G08 */ nand.page_size = 2048; nand.block_size = 128 * 1024; nand.bad_block_offset = nand.page_size; // nand.size = 0x8000000; } else { return -1; // hang } if ((start_addr & (nand.block_size-1)) || (size & ((nand.block_size-1)))) return -1; /* invalid alignment */ for (i=start_addr; i < (start_addr + size);) { #ifdef CONFIG_S3C2410_NAND_SKIP_BAD if (i & (nand.block_size-1)== 0) { if (is_bad_block(&nand, i) || is_bad_block(&nand, i + nand.page_size)) { /* Bad block */ i += nand.block_size; size += nand.block_size; continue; } } #endif j = nand_read_page_ll(&nand, buf, i); i += j; buf += j; } /* chip Disable */ nand_deselect(); return 0; } 
3.Edit files of here.Change "sbc2410" to "mini2440" in files.
Makefile must include "nand_read.o".
Let "gd->bd->bi_arch_number = MACH_TYPE_MINI2440;" in mini2440.c
Step two -> Edit files:
1.Makefile
Add cross compile define.
Add define of mini2440.
--- u-boot-2009.08/Makefile 2009-09-01 01:57:42.000000000 +0800 +++ u-boot-2009.08_ok/Makefile 2016-02-26 11:21:17.358675492 +0800 @@ -158,6 +158,8 @@ sinclude $(obj)include/autoconf.mk include $(obj)include/config.mk export ARCH CPU BOARD VENDOR SOC +CROSS_COMPILE = arm-linux- + # set default to nothing for native builds ifeq ($(HOSTARCH),$(ARCH)) CROSS_COMPILE ?= @@ -2997,6 +2999,10 @@ smdk2400_config : unconfig smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0 +mini2440_config : unconfig + @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s3c24x0 + + SX1_stdout_serial_config \ SX1_config: unconfig @mkdir -p $(obj)include
2.cpu/arm920t/start.S
Edit as cpu sheet.
Set CPU as SVC mode;
Close watchdog;
Set Clock.
--- u-boot-2009.08/cpu/arm920t/start.S	2009-09-01 01:57:42.000000000 +0800
+++ u-boot-2009.08_ok/cpu/arm920t/start.S	2016-02-26 12:16:14.230812065 +0800
@@ -114,8 +114,8 @@ start_code:
 	orr	r0,r0,#0xd3
 	msr	cpsr,r0
 
-	bl coloured_LED_init
-	bl red_LED_on
+@	bl coloured_LED_init
+@	bl red_LED_on
 
 #if	defined(CONFIG_AT91RM9200DK) || defined(CONFIG_AT91RM9200EK)
 	/*
@@ -131,7 +131,7 @@ copyex:
 	bne	copyex
 #endif
 
-#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)
+#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
 	/* turn off the watchdog */
 
 # if defined(CONFIG_S3C2400)
@@ -145,6 +145,14 @@ copyex:
 #  define CLKDIVN	0x4C000014	/* clock divisor register */
 # endif
 
+#if defined(CONFIG_S3C2440)
+#define CLK_CTL_BASE		0x4c000000
+#define MDIV_405		0x7f<<12
+#define PSDIV_405		0x21
+#define MDIV_200		0xa1<<12
+#define PSDIV_200		0x31
+#endif
+
 	ldr     r0, =pWTCON
 	mov     r1, #0x0
 	str     r1, [r0]
@@ -161,12 +169,43 @@ copyex:
 	str	r1, [r0]
 # endif
 
+# if defined(CONFIG_S3C2440)
+	ldr	r1, =0x7fff
+	ldr	r0, =INTSUBMSK
+	str	r1, [r0]
+# endif
+
+#if defined(CONFIG_S3C2440)
+	/* FCLK:HCLK:PCLK=1:4:8 */
+	ldr	r0, =CLKDIVN
+	mov	r1, #5
+	str	r1, [r0]
+
+	mrc	p15, 0, r1, c1, c0, 0
+	orr	r1, r1, #0xc0000000
+	mcr	p15, 0, r1, c1, c0, 0
+
+	mov 	r1, #CLK_CTL_BASE
+	mov	r2, #MDIV_405
+	add	r2, r2, #PSDIV_405
+	str	r2, [r1, #0x04]
+#else
 	/* FCLK:HCLK:PCLK = 1:2:4 */
 	/* default FCLK is 120 MHz ! */
 	ldr	r0, =CLKDIVN
 	mov	r1, #3
 	str	r1, [r0]
-#endif	/* CONFIG_S3C2400 || CONFIG_S3C2410 */
+
+	mrc	p15, 0, r1, c1, c0, 0
+	orr	r1, r1, #0xc0000000
+	mcr	p15, 0, r1, c1, c0, 0
+
+	mov	r1, #CLK_CTL_BASE
+	mov	r2, #MDIV_200
+	add	r2, r2, #PSDIV_200
+	str	r2, [r1,#0x04]
+#endif
+#endif	/* CONFIG_S3C2400 || CONFIG_S3C2410 || CONFIG_S3C2440 */
 
 	/*
 	 * we do sys-critical inits only at reboot,
@@ -176,13 +215,124 @@ copyex:
 	bl	cpu_init_crit
 #endif
 
-#ifndef CONFIG_SKIP_RELOCATE_UBOOT
-relocate:				/* relocate U-Boot to RAM	    */
+
+/***************** CHECK_CODE_POSITION ********************************/
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
 	cmp     r0, r1                  /* don't reloc during debug         */
 	beq     stack_setup
+/****************** CHECK_CODE_POSTION end *****************/
+
+/***************** CHECK_BOOT_FLASH *********************/
+	ldr	r1, =( (4<<28)|(3<<4)|(3<<2) )
+	mov	r0, #0
+	str	r0, [r1]
+
+	mov	r1, #0x3c
+	ldr	r0, [r1]
+	cmp	r0, #0
+	bne	relocate
+
+	/* recovery */
+	ldr	r0, =(0xdeadbeef)
+	ldr	r1, =( (4<<28)|(3<<4)|(3<<2) )
+	str	r0, [r1]
+/***************** CHECK_BOOT_FLASH  end*********************/
+
+
+/****************  NAND_BOOT***************************/
+#define LENGTH_UBOOT	0x60000
+#define	NAND_CTL_BASE	0x4e000000
+
+#ifdef	CONFIG_S3C2440
+/* Offset */
+#define	oNFCONF	0x00
+#define	oNFCONT	0x04
+#define	oNFCMD	0x08
+#define	oNFSTAT	0x20
+
+	@ reset NAND
+	mov	r1, #NAND_CTL_BASE
+	ldr	r2, =( (7<<12)|(7<<8)|(7<<4)|(0<<0) )
+	str	r2, [r1, #oNFCONF]
+	ldr	r2, [r1, #oNFCONF]
+
+	ldr	r2, =( (1<<4)|(0<<1)|(1<<0) )
+	str	r2, [r1, #oNFCONT]
+	ldr	r2, [r1, #oNFCONT]
+
+	ldr	r2, =(0x6)
+	str	r2, [r1, #oNFSTAT]
+	ldr	r2, [r1, #oNFSTAT]
+
+	mov	r2, #0xff @RESET command
+	strb	r2, [r1, #oNFCMD]
+
+	mov	r3, #0    @wait
+
+nand1:
+	add	r3, r3, #0x1
+	cmp	r3, #0xa
+	blt	nand1
+
+nand2:
+	ldr	r2, [r1, #oNFSTAT]
+	tst	r2, #0x4
+	beq	nand2
+
+	ldr	r2, [r1, #oNFCONT]
+	orr	r2, r2, #0x2
+	str	r2, [r1, #oNFCONT]
+
+	@get read to call C function (for nand_read())
+	ldr	sp, DW_STACK_START
+	mov	fp, #0
+
+	@copy U-BOOT to RAW
+	ldr	r0, =TEXT_BASE
+	mov	r1, #0x0
+	mov	r2, #LENGTH_UBOOT
+	bl	nand_read_ll
+	tst	r0, #0x0
+	beq	ok_nand_read
+
+bad_nand_read:
+loop2:
+	b	loop2
+
+ok_nand_read:
+	@verify
+	mov	r0, #0
+	ldr	r1, =TEXT_BASE
+	mov	r2, #0x400
 
+go_next:
+	ldr	r3, [r0], #4
+	ldr	r4, [r1], #4
+	teq	r3, r4
+	bne	notmatch
+	subs	r2, r2, #4
+	beq	stack_setup
+	bne	go_next
+
+notmatch:
+loop3:
+	b	loop3
+#endif /* CONFIG_S3C2440 */
+
+/****************  NAND_BOOT end ***************************/
+
+
+
+/**************  NOR_BOOT   *********************/
+relocate:
+	/******** CHECK_FOR_MAGIC_NUMBER *************/
+	ldr	r1, =(0xdeadbeef)
+	cmp	r0, r1
+	bne	loop3
+	/******** CHECK_FOR_MAGIC_NUMBER end *************/
+	adr	r0, _start
+	ldr	r1, _TEXT_BASE
 	ldr	r2, _armboot_start
 	ldr	r3, _bss_start
 	sub	r2, r3, r2		/* r2 <- size of armboot            */
@@ -193,7 +343,12 @@ copy_loop:
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	ble	copy_loop
-#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
+
+/***************** NOR_BOOT end  *******************************/
+
+
+
+
 
 	/* Set up the stack						    */
 stack_setup:
@@ -217,8 +372,31 @@ clbss_l:str	r2, [r0]		/* clear loop...
 
 	ldr	pc, _start_armboot
 
+#if defined(CONFIG_MINI2440_LED)
+#define	GPIO_CTL_BASE	0x56000000
+#define	oGPIO_B		0x10
+#define	oGPIO_CON	0x0
+/* R/W, Configures the pins of the port */
+#define	oGPIO_DAT	0x4
+#define	oGPIO_UP	0x8
+/* R/W, Pull-up disable register */
+	mov	r1, #GPIO_CTL_BASE
+	add	r1, r1, #oGPIO_B
+	ldr	r2, =0x295551
+	str	r2, [r1, #oGPIO_CON]
+	mov	r2, #0xff
+	str	r2, [r1, #oGPIO_UP]
+	ldr	r2, =0x1c1
+	str	r2, [r1, #oGPIO_DAT]
+#endif
+
 _start_armboot:	.word start_armboot
 
+#define STACK_BASE	0x33f00000
+#define	STACK_SIZE	0x10000
+	.align	2
+DW_STACK_START:	.WORD	STACK_BASE+STACK_SIZE-4
+
 
 /*
  *************************************************************************
3.lib_arm/board.c
	
--- u-boot-2009.08/lib_arm/board.c	2009-09-01 01:57:42.000000000 +0800
+++ u-boot-2009.08_ok/lib_arm/board.c	2016-02-26 13:22:06.102975772 +0800
@@ -49,6 +49,7 @@
 #include <nand.h>
 #include <onenand_uboot.h>
 #include <mmc.h>
+#include <s3c2410.h>
 
 #ifdef CONFIG_DRIVER_SMC91111
 #include "../drivers/net/smc91111.h"
@@ -118,6 +119,7 @@ void *sbrk (ptrdiff_t increment)
 }
 
 
+#if 0
 /************************************************************************
  * Coloured LED functionality
  ************************************************************************
@@ -141,6 +143,7 @@ void inline __blue_LED_on(void) {}
 void inline blue_LED_on(void)__attribute__((weak, alias("__blue_LED_on")));
 void inline __blue_LED_off(void) {}
 void inline blue_LED_off(void)__attribute__((weak, alias("__blue_LED_off")));
+#endif
 
 /************************************************************************
  * Init Utilities							*
@@ -166,7 +169,13 @@ static int init_baudrate (void)
 
 static int display_banner (void)
 {
-	printf ("\n\n%s\n\n", version_string);
+#if defined(CONFIG_MINI2440_LED)
+	struct s3c24x0_gpio * const gpio = s3c24x0_get_base_gpio();
+	gpio->GPBDAT = 0x101;
+#endif
+	printf("\n\n%s\n\n", version_string);
+	printf("modified by nicholas (nicholas@anycle.com)");
+	printf("Love Linux forever \n\n");
 	debug ("U-Boot code: %08lX -> %08lX  BSS: -> %08lX\n",
 	       _armboot_start, _bss_start, _bss_end);
 #ifdef CONFIG_MODEM_SUPPORT
@@ -304,6 +313,9 @@ void start_armboot (void)
 	unsigned long addr;
 #endif
 
+#if defined(CONFIG_MINI2440_LED)
+	struct s3c24x0_gpio * const gpio = s3c24x0_get_base_gpio();
+#endif
 	/* Pointer is writable since we allocated a register for it */
 	gd = (gd_t*)(_armboot_start - CONFIG_SYS_MALLOC_LEN - sizeof(gd_t));
 	/* compiler optimization barrier needed for GCC >= 3.4 */
@@ -466,6 +478,16 @@ extern void davinci_eth_set_mac_addr (co
 	reset_phy();
 #endif
 #endif
+
+#if defined(CONFIG_MINI2440_LED)
+	gpio->GPBDAT = 0x0;
+#endif
+
+#if defined(CONFIG_CFB_CONSOLE)
+	printf("%s\n", version_string);
+	printf("Modified by nicholas \n (nicholas@anycle.com)\n");
+	printf("Why I am here\n");
+#endif
 	/* main_loop() can return to retry autoboot, if so just run it again. */
 	for (;;) {
 		main_loop ();
	
4.board/mini2440/lowlevel_init.S
	
--- u-boot-2009.08/board/sbc2410x/lowlevel_init.S 2009-09-01 01:57:42.000000000 +0800 +++ u-boot-2009.08_ok/board/mini2440/lowlevel_init.S 2016-02-26 14:42:31.151175651 +0800 @@ -116,10 +116,17 @@ /* REFRESH parameter */ #define REFEN 0x1 /* Refresh enable */ #define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */ -#define Trp 0x0 /* 2clk */ #define Trc 0x3 /* 7clk */ #define Tchr 0x2 /* 3clk */ + +#if defined(CONFIG_S3C2440) +#define Trp 0x2 /* 2clk */ +#define REFCNT 0x1012 +#else +#define Trp 0x0 /* 2clk */ #define REFCNT 0x0459 +#endif + /**************************************/ _TEXT_BASE: @@ -131,8 +138,10 @@ lowlevel_init: /* make r0 relative the current location so that it */ /* reads SMRDATA out of FLASH rather than memory ! */ ldr r0, =SMRDATA - ldr r1, _TEXT_BASE + ldr r1, =lowlevel_init sub r0, r0, r1 + adr r3, lowlevel_init + add r0, r0, r3 ldr r1, =BWSCON /* Bus Width Status Controller */ add r2, r0, #13*4 0:
	
5.cpu/arm920t/s3c24x0/speed.c
	
--- u-boot-2009.08/cpu/arm920t/s3c24x0/speed.c	2009-09-01 01:57:42.000000000 +0800
+++ u-boot-2009.08_ok/cpu/arm920t/s3c24x0/speed.c	2016-02-26 13:56:55.975062346 +0800
@@ -30,11 +30,11 @@
  */
 
 #include <common.h>
-#if defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) || defined (CONFIG_TRAB)
+#if defined(CONFIG_S3C2400) || defined (CONFIG_S3C2410) || defined(CONFIG_S3C2440) || defined (CONFIG_TRAB)
 
 #if defined(CONFIG_S3C2400)
 #include <s3c2400.h>
-#elif defined(CONFIG_S3C2410)
+#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
 #include <s3c2410.h>
 #endif
 
@@ -67,6 +67,13 @@ static ulong get_PLLCLK(int pllreg)
     p = ((r & 0x003F0) >> 4) + 2;
     s = r & 0x3;
 
+#if defined(CONFIG_S3C2440)
+    if(pllreg == MPLL){
+        return((CONFIG_SYS_CLK_FREQ * m * 2) / (p << s));
+    }else if(pllreg == UPLL){
+    }
+#endif
+
     return((CONFIG_SYS_CLK_FREQ * m) / (p << s));
 }
 
@@ -81,7 +88,21 @@ ulong get_HCLK(void)
 {
     S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
 
+#if defined(CONFIG_S3C2440)
+    if( (clk_power->CLKDIVN & 0x6) == 2 ){
+        return(get_FCLK()/2);
+    }
+    if( (clk_power->CLKDIVN & 0x6) == 6 ){
+        return( (clk_power->CLKDIVN & 0x100)?get_FCLK()/6 : get_FCLK()/3 );
+    }
+    if( (clk_power->CLKDIVN & 0x6) == 4 ){
+        return( (clk_power->CLKDIVN & 0x200)?get_FCLK()/8 : get_FCLK()/4 );
+    }
+    return(get_FCLK());
+
+#else
     return((clk_power->CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK());
+#endif
 }
 
 /* return PCLK frequency */
	
6.cpu/arm920t/u-boot.lds
	
--- u-boot-2009.08/cpu/arm920t/u-boot.lds	2009-09-01 01:57:42.000000000 +0800
+++ u-boot-2009.08_ok/cpu/arm920t/u-boot.lds	2016-02-26 14:52:55.295201507 +0800
@@ -40,6 +40,8 @@ SECTIONS
 	.text :
 	{
 		cpu/arm920t/start.o	(.text)
+		board/mini2440/lowlevel_init.o	(.text)
+		board/mini2440/nand_read.o	(.text)
 		*(.text)
 	}
 
	
7.Enable for s3c2440 the same as s3c2410 in these follow files.
cpu/arm920t/s3c24x0/interrupts.c
cpu/arm920t/s3c24x0/timer.c
include/s3c24x0.h
drivers/serial/serial_s3c24x0.c
drivers/rtc/s3c24x0_rtc.c
8.cpu/arm920t/config.mk
Maybe delete the build options "-msoft-float".
Step three ->Make config file for mini2440:
1.cp include/configs/sbc2410.h include/configs/mini2440.h
2.Edit it.Change configs 2410 to 2440.
CONFIG_S3C2440,CONFIG_MINI2440
By nicholas@anycle.com
	
标签: embedded
评论:
			肖 
2016-02-26 17:07
			2016-02-26 17:07
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
.text :
{
cpu/arm920t/start.o (.text)
board/mini2440/lowlevel_init.o (.text)
board/mini2440/nand_read.o (.text)
*(.text)
}
. = ALIGN(4);
.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
			
		OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
.text :
{
cpu/arm920t/start.o (.text)
board/mini2440/lowlevel_init.o (.text)
board/mini2440/nand_read.o (.text)
*(.text)
}
. = ALIGN(4);
.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
日历
最新微语
- 有的时候,会站在分叉路口,不知道向左还是右
2023-12-26 15:34
 - 繁花乱开,鸟雀逐风。心自宁静,纷扰不闻。
2023-03-14 09:56
 - 对于不可控的事,我们保持乐观,对于可控的事情,我们保持谨慎。
2023-02-09 11:03
 - 小时候,
暑假意味着无忧无虑地玩很长一段时间,
节假意味着好吃好喝还有很多长期不见的小朋友来玩...
长大后,
这是女儿第一个暑假,
一个半月...
2022-07-11 08:54
 - Watching the autumn leaves falling as you grow older together
2018-10-25 09:45
 
分类
最新评论
- Goonog	
i get it now :) - 萧	
@Fluzak:The web host... - Fluzak	
Nice blog here! Also... - Albertarive	
In my opinion you co... - ChesterHep	
What does it plan? - ChesterHep	
No, opposite. - mojoheadz	
Everything is OK!... - Josephmaigh	
I just want to say t... - ChesterHep	
What good topic - AnthonyBub	
Certainly, never it ... 
2016-02-29 12:34