⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u-boot-lpc2294.patch

📁 将U-boot1.1.4移植到了MagicARM2200平台。Nor_Flash_SST39VF1601检测正常。网络芯片DM9000E工作正常。没有能够实现Nand_Flash的驱动。
💻 PATCH
📖 第 1 页 / 共 5 页
字号:
+#endif+++void bad_mode (void)+{+	panic ("Resetting CPU ...\n");+	reset_cpu (0);+}++void show_regs (struct pt_regs *regs)+{+	unsigned long flags;+	const char *processor_modes[] =+		{ "USER_26", "FIQ_26", "IRQ_26", "SVC_26", "UK4_26", "UK5_26",+				"UK6_26", "UK7_26",+		"UK8_26", "UK9_26", "UK10_26", "UK11_26", "UK12_26", "UK13_26",+				"UK14_26", "UK15_26",+		"USER_32", "FIQ_32", "IRQ_32", "SVC_32", "UK4_32", "UK5_32",+				"UK6_32", "ABT_32",+		"UK8_32", "UK9_32", "UK10_32", "UND_32", "UK12_32", "UK13_32",+				"UK14_32", "SYS_32"+	};++	flags = condition_codes (regs);++	printf ("pc : [<%08lx>]    lr : [<%08lx>]\n"+			"sp : %08lx  ip : %08lx  fp : %08lx\n",+			instruction_pointer (regs),+			regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp);+	printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n",+			regs->ARM_r10, regs->ARM_r9, regs->ARM_r8);+	printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n",+			regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4);+	printf ("r3 : %08lx  r2 : %08lx  r1 : %08lx  r0 : %08lx\n",+			regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0);+	printf ("Flags: %c%c%c%c",+			flags & CC_N_BIT ? 'N' : 'n',+			flags & CC_Z_BIT ? 'Z' : 'z',+			flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v');+	printf ("  IRQs %s  FIQs %s  Mode %s%s\n",+			interrupts_enabled (regs) ? "on" : "off",+			fast_interrupts_enabled (regs) ? "on" : "off",+			processor_modes[processor_mode (regs)],+			thumb_mode (regs) ? " (T)" : "");+}++void do_undefined_instruction (struct pt_regs *pt_regs)+{+	printf ("undefined instruction\n");+	show_regs (pt_regs);+	bad_mode ();+}++void do_software_interrupt (struct pt_regs *pt_regs)+{+	printf ("software interrupt\n");+	show_regs (pt_regs);+	bad_mode ();+}++void do_prefetch_abort (struct pt_regs *pt_regs)+{+	printf ("prefetch abort\n");+	show_regs (pt_regs);+	bad_mode ();+}++void do_data_abort (struct pt_regs *pt_regs)+{+	printf ("data abort\n");+	show_regs (pt_regs);+	bad_mode ();+}++void do_not_used (struct pt_regs *pt_regs)+{+	printf ("not used\n");+	show_regs (pt_regs);+	bad_mode ();+}++void do_fiq (struct pt_regs *pt_regs)+{+	printf ("fast interrupt request\n");+	show_regs (pt_regs);+	bad_mode ();+}++void do_irq (struct pt_regs *pt_regs)+{+	printf ("interrupt request\n");+	show_regs (pt_regs);+	bad_mode ();+}++static ulong timestamp;+static ulong lastdec;++int interrupt_init (void)+{+	T0PR=0x000003e7;+	T0MR0=0x0000ffff;+	T0MCR=0x00000002;+	T0TCR=0x00000003;+	T0TCR=0x00000001;++	lastdec = TIMER_LOAD_VAL;+	timestamp = 0;+	return 0;+}++/*+ * timer without interrupts+ */++void reset_timer (void)+{+	reset_timer_masked ();+}++ulong get_timer (ulong base)+{+	return get_timer_masked () - base;+}++void set_timer (ulong t)+{+	timestamp = t;+}++void udelay (unsigned long usec)+{+	ulong tmo;++	tmo = usec / 1000;+	tmo *= CFG_HZ;+	tmo /= 1000;++	tmo += get_timer (0);++	while (get_timer_masked () < tmo)+		/*NOP*/;+}++void reset_timer_masked (void)+{+	/* reset time */+	lastdec = READ_TIMER;+	timestamp = 0;+}++ulong get_timer_masked (void)+{+	ulong now = READ_TIMER;++	if (now >= lastdec) {+		/* normal mode */+		timestamp += now - lastdec;+	} else {+		/* we have an overflow ... */+		timestamp += now + TIMER_LOAD_VAL - lastdec;+	}+	lastdec = now;++	return timestamp;+}++void udelay_masked (unsigned long usec)+{+	ulong tmo;++	tmo = usec / 1000;+	tmo *= CFG_HZ;+	tmo /= 1000;++	tmo += get_timer (0);++	reset_timer_masked ();++	while (get_timer_masked () < tmo)+		/*NOP*/;+}diff -Naur u-boot-origin/cpu/arm7tdmi/Makefile u-boot-1.1.3/cpu/arm7tdmi/Makefile--- u-boot-origin/cpu/arm7tdmi/Makefile	1970-01-01 07:00:00.000000000 +0700+++ u-boot-1.1.3/cpu/arm7tdmi/Makefile	2005-09-07 09:43:36.000000000 +0800@@ -0,0 +1,43 @@+#+# (C) Copyright 2000-2004+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.+#+# See file CREDITS for list of people who contributed to this+# project.+#+# This program is free software; you can redistribute it and/or+# modify it under the terms of the GNU General Public License as+# published by the Free Software Foundation; either version 2 of+# the License, or (at your option) any later version.+#+# This program is distributed in the hope that it will be useful,+# but WITHOUT ANY WARRANTY; without even the implied warranty of+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+# GNU General Public License for more details.+#+# You should have received a copy of the GNU General Public License+# along with this program; if not, write to the Free Software+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,+# MA 02111-1307 USA+#++include $(TOPDIR)/config.mk++LIB	= lib$(CPU).a++START	= start.o+OBJS	= serial.o interrupts.o cpu.o++all:	.depend $(START) $(LIB)++$(LIB):	$(OBJS)+	$(AR) crv $@ $(OBJS)++#########################################################################++.depend:	Makefile $(START:.o=.S) $(OBJS:.o=.c)+		$(CC) -M $(CFLAGS) $(START:.o=.S) $(OBJS:.o=.c) > $@++sinclude .depend++#########################################################################diff -Naur u-boot-origin/cpu/arm7tdmi/serial.c u-boot-1.1.3/cpu/arm7tdmi/serial.c--- u-boot-origin/cpu/arm7tdmi/serial.c	1970-01-01 07:00:00.000000000 +0700+++ u-boot-1.1.3/cpu/arm7tdmi/serial.c	2005-09-07 09:43:36.000000000 +0800@@ -0,0 +1,193 @@+/*+ * (C) Copyright 2004+ * DAVE Srl+ * http://www.dave-tech.it+ * http://www.wawnet.biz+ * mailto:info@wawnet.biz+ *+ * (C) Copyright 2002-2004+ * Wolfgang Denk, DENX Software Engineering, <wd@denx.de>+ *+ * (C) Copyright 2002+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>+ * Marius Groeger <mgroeger@sysgo.de>+ *+ * (C) Copyright 2002+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>+ * Alex Zuepke <azu@sysgo.de>+ *+ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl)+ *+ * This program is free software; you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation; either version 2 of the License, or+ * (at your option) any later version.+ *+ * This program is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with this program; if not, write to the Free Software+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA+ *+ */++#include <common.h>+#include <asm/hardware.h>++#define	USRRxData      	(1 << 0)+#define	USRTxHoldEmpty 	(1 << 6)+#define GET_CHAR(p)	p+#define PUT_CHAR(p,c)  	(p= (unsigned )(c))+#define TX_READY(s)    	((s) & USRTxHoldEmpty)+#define RX_DATA(s)     	((s) & USRRxData)++/* flush serial input queue. returns 0 on success or negative error+ * number otherwise+ */+static int serial_flush_input(void)+{+	volatile u32 tmp;++	/* keep on reading as long as the receiver is not empty */+	while(RX_DATA(U0LSR)) {+		tmp = GET_CHAR(U0RBR);+	}++	return 0;+}+++/* flush output queue. returns 0 on success or negative error number+ * otherwise+ */+static int serial_flush_output(void)+{+	/* wait until the transmitter is no longer busy */+	while(TX_READY(U0LSR)==0) {+	}++	return 0;+}+++void serial_setbrg (void)+{+	DECLARE_GLOBAL_DATA_PTR;++	u32 divisor = 0;++	/* get correct divisor */+	switch(gd->baudrate) {++	case 1200:+    divisor = 520; +		break;++	case 9600:+    divisor = 65;+		break;++	case 19200:+    divisor = 32;+		break;++	case 38400:+    divisor = 16;+++	case 57600:+    divisor = 10;+++	case 115200:+    divisor = 5;++	}+	U0LCR = 0x83;+	if(divisor==520)+		{+			U0DLL = 0x08;+			U0DLM = 0x02;+			}+	else+		U0DLL = divisor;+	U0LCR = 0x03;+	U0IER = 0x00000007;+	U0FCR = 0x00000081;+	serial_flush_output();+	serial_flush_input();+	+	for(divisor=0; divisor<100; divisor++) {+		/* NOP */+	}+}+++/*+ * Initialise the serial port with the given baudrate. The settings+ * are always 8 data bits, no parity, 1 stop bit, no start bits.+ *+ */+int serial_init (void)+{+	serial_setbrg ();++	return (0);+}+++/*+ * Output a single byte to the serial port.+ */+void serial_putc (const char c)+{+	/* wait for room in the transmit FIFO */+	while(TX_READY(U0LSR)==0);++	PUT_CHAR(U0THR,c);++	/*+		to be polite with serial console add a line feed+		to the carriage return character+	*/+	if (c=='\n')+		serial_putc('\r');+}++/*+ * Read a single byte from the serial port. Returns 1 on success, 0+ * otherwise. When the function is succesfull, the character read is+ * written into its argument c.+ */+int serial_tstc (void)+{+	return (RX_DATA(U0LSR));+}++/*+ * Read a single byte from the serial port. Returns 1 on success, 0+ * otherwise. When the function is succesfull, the character read is+ * written into its argument c.+ */+int serial_getc (void)+{+	int rv;++	for(;;) {+		rv = serial_tstc();++		if(rv > 0)+			return (GET_CHAR(U0RBR));+	}+}++void+serial_puts (const char *s)+{+	while (*s != 0) {+		serial_putc (*s++);+	}+}diff -Naur u-boot-origin/cpu/arm7tdmi/start.S u-boot-1.1.3/cpu/arm7tdmi/start.S--- u-boot-origin/cpu/arm7tdmi/start.S	1970-01-01 07:00:00.000000000 +0700+++ u-boot-1.1.3/cpu/arm7tdmi/start.S	2005-09-08 14:08:38.000000000 +0800@@ -0,0 +1,331 @@+/*+ * Startup Code for lpc2294 CPU-core+ *+ * (C) Copyright 2005+ * jay+ *+ * See file CREDITS for list of people who contributed to this+ * project.+ *+ * This program is free software; you can redistribute it and/or+ * modify it under the terms of the GNU General Public License as+ * published by the Free Software Foundation; either version 2 of+ * the License, or (at your option) any later version.+ *+ * This program is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with this program; if not, write to the Free Software+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ * MA 02111-1307 USA+ */+++#include <config.h>+#include <version.h>+++/*+ * Jump vector table+ */+++.globl _start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -