[U-Boot-Users] u-boot and linux-2.6.9
George G. Davis
gdavis at mvista.com
Wed Dec 22 06:32:58 CET 2004
On Tue, Dec 21, 2004 at 11:40:28AM +0100, jean-paul.saman at philips.com wrote:
> On my ARM integrator AP board with ARM920T u-boot CvS does not start the
> Linux kernel. Maybe it is a configuration or toolchain problem?
>
> I use gcc 2.95.3 from www.arm.linux.org.uk to compile u-boot and load
> u-boot.bin on the ARM Integrator AP flash.
I tested u-boot built using that very same toolchain and did not notice
any problems here. However, it is worth noting that U-Boot support for the
Integrator/AP currently assumes use of an ARM926 processor module. But I
don't see any obvious use of ARM926 features which would cause problems
for ARM920T processor module, i.e. it should work.
> The kernel is a uImage and works with the u-boot bootloader from ARM Ltd.
That's odd, I wonder what magic the ARM Ltd. U-Boot has that current CVS
lacks? : P
>
> I found that gcc release-3.4.0 from codesourcery is unable to compile
> u-boot..
Because it includes gcc-4 command line switch changes related to ARM ABI
changes, IIUC. It's been reported on these lists already.
> What compiler are you guys using?
Various. Other than the gcc-4 related ARM ABI changes included in the above
CSL toolchain, I haven't noticed any toolchain related problems. FWIW, I've
recently used gcc 2.95.3 and 3.3.1 and do not see any problems here.
> What additional configuration did you do after: make ARCH=arm
> CROSS_COMPILE=arm-linux- integratorap_config?
The "ARCH=arm" is not needed. Otherwise, I use the same command as you
have above with no changes to CVS current. Works for me. : )
Hmm... I just tested autobooting U-Boot, S1-1 ON and S1-4 OFF, and in this
case I get:
Integrator-AP # bootm 0x800000
## Booting image at 00800000 ...
Image Name: Linux-2.6.10-rc3
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1193108 Bytes = 1.1 MB
Load Address: 00008000
Entry Point: 00008000
OK
No initrd
## Transferring control to Linux (at address 00008000) ...
Starting kernel ...
Uncompressing Linux.................................................................................. done, booting the kernel.
Linux version 2.6.10-rc3 (gdavis at davisg.ne.client2.attbi.com) (gcc version 3.3.1 (MontaVista 3.3.1-3.0.10.0300532 2003-12-24)) #9 Tue Dec 21 14:50:36 EST 2004
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
CPU: D VIVT write-back cache
CPU: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Machine: ARM-Integrator
Memory policy: ECC disabled, Data cache writeback
<7>On node 0 totalpages: 8192
<7> DMA zone: 8192 pages, LIFO batch:2
<7> Normal zone: 0 pages, LIFO batch:1
<7> HighMem zone: 0 pages, LIFO batch:1
Built 1 zonelists
Kernel command line: console=ttyAM0,38400n8 root=/dev/nfs ip=bootp mem=32M
<7>Relocating machine vectors to 0xffff0000
PID hash table entries: 256 (order: 8, 4096 bytes)
<1>Unhandled fault: external abort on non-linefetch (0x02a) at 0xee0003da
<1>Unable to handle kernel NULL pointer dereference at virtual address 00000000
<1>pgd = c0004000
<1>[00000000] *pgd=00000000
Internal error: Oops: 5 [#1]
Modules linked in:
CPU: 0
PC is at kmem_cache_alloc+0x18/0x48
LR is at __sigqueue_alloc+0x38/0xa4
pc : [<c008e94c>] lr : [<c0074694>] Not tainted
sp : c0225e7c ip : c0225e90 fp : c0225e8c
r10: 00000001 r9 : 600000d3 r8 : 200000d3
r7 : c0226c7c r6 : 00000007 r5 : 00000000 r4 : 800000d3
r3 : c02836b8 r2 : 800000d3 r1 : 00000020 r0 : 00000000
Flags: Nzcv IRQs off FIQs off Mode SVC_32 Segment kernel
Control: C000717F Table: 00004000 DAC: 0000001D
Process swapper (pid: 0, stack limit = 0xc0224190)
Stack: (0xc0225e7c to 0xc0226000)
5e60: c0226a6c
5e80: c0225ea0 c0225e90 c0074694 c008e944 00000001 c0225ec0 c0225ea4 c00750d8
5ea0: c007466c 00000001 c0226a6c 00000007 00000000 c0225ee0 c0225ec4 c007528c
5ec0: c00750b8 00000007 c0226a6c 00000006 00000023 c0225f08 c0225ee4 c0075374
5ee0: c007520c 0000002a c0224000 c02274b0 ee0003da c0225f30 000228ac c0225f2c
5f00: c0225f0c c005ca04 c00752e8 c027c300 c0225f64 c027c368 c0227204 c028f51c
5f20: c0225f98 c0225f30 c00552e4 c005c9a4 00000000 00000000 ee0003c0 ee0003da
5f40: c020a39c 00000000 c027c368 c0227204 c028f51c 41129200 000228ac c0225f98
5f60: c0228220 c0225f78 c0228238 c001aa28 600000d3 ffffffff c0022dc0 00000000
5f80: c027c368 00000000 c0226fac c0225fc0 c0225f9c c001d040 c001a88c c0145c8c
5fa0: c0022dc0 c0022dc4 c027c368 c027c32c c0226fac c0225fd8 c0225fc4 c001c72c
5fc0: c001d01c c0297cd8 c0297cd8 c0225ffc c0225fdc c00088c0 c001c70c c0008548
5fe0: c027c378 c0297cd8 c0297cd8 c027c368 00000000 c0226000 c0008080 c0008834
Backtrace:
[<c008e934>] (kmem_cache_alloc+0x0/0x48) from [<c0074694>] (__sigqueue_alloc+0x38/0xa4)
r4 = C0226A6C
[<c007465c>] (__sigqueue_alloc+0x0/0xa4) from [<c00750d8>] (send_signal+0x30/0x154)
r4 = 00000001
[<c00750a8>] (send_signal+0x0/0x154) from [<c007528c>] (specific_send_sig_info+0x90/0xdc)
r7 = 00000000 r6 = 00000007 r5 = C0226A6C r4 = 00000001
[<c00751fc>] (specific_send_sig_info+0x0/0xdc) from [<c0075374>] (force_sig_info+0x9c/0xa4)
r7 = 00000023 r6 = 00000006 r5 = C0226A6C r4 = 00000007
[<c00752d8>] (force_sig_info+0x0/0xa4) from [<c005ca04>] (do_DataAbort+0x70/0xa0)
[<c005c994>] (do_DataAbort+0x0/0xa0) from [<c00552e4>] (__dabt_svc+0x44/0x60)
r8 = C028F51C r7 = C0227204 r6 = C027C368 r5 = C0225F64
r4 = C027C300
[<c001a87c>] (vgacon_startup+0x0/0x3cc) from [<c001d040>] (con_init+0x34/0x288)
r8 = C0226FAC r7 = 00000000 r6 = C027C368 r5 = 00000000
r4 = C0022DC0
[<c001d00c>] (con_init+0x0/0x288) from [<c001c72c>] (console_init+0x30/0x48)
r8 = C0226FAC r7 = C027C32C r6 = C027C368 r5 = C0022DC4
r4 = C0022DC0
[<c001c6fc>] (console_init+0x0/0x48) from [<c00088c0>] (start_kernel+0x9c/0x1b4)
r5 = C0297CD8 r4 = C0297CD8
[<c0008824>] (start_kernel+0x0/0x1b4) from [<c0008080>] (__mmap_switched+0x0/0x40)
r6 = C027C368 r5 = C0297CD8 r4 = C0297CD8
Code: e24cb004 e10f4000 e3842080 e121f002 (e5902000)
<0>Kernel panic - not syncing: Attempted to kill the idle task!
Oops! 8 )
This appears to be due to the fact that the ARM bootMonitor is not fully
initialising the PCI subsystem for the autoboot case. Hence, Linux oopses
touching the VGA console because it does not fully initialise PCI either,
I guess.
FWIW, the kernel oops above is resolved by enabling Integrator PCI support
in U-Boot. Here's what I did to enable Integrator PCI support in U-Boot:
Index: u-boot/include/configs/integratorap.h
===================================================================
--- u-boot.orig/include/configs/integratorap.h
+++ u-boot/include/configs/integratorap.h
@@ -65,18 +65,14 @@
#define CFG_SERIAL0 0x16000000
#define CFG_SERIAL1 0x17000000
-/*#define CONFIG_COMMANDS (CFG_CMD_DHCP | CFG_CMD_IMI | CFG_CMD_NET | CFG_CMD_PING | CFG_CMD_BDI | CFG_CMD_PCI) */
-/*#define CONFIG_NET_MULTI */
-/*#define CONFIG_BOOTP_MASK CONFIG_BOOTP_DEFAULT */
-
-#define CONFIG_COMMANDS (CFG_CMD_IMI | CFG_CMD_BDI | CFG_CMD_MEMORY)
-
+#define CONFIG_COMMANDS (CONFIG_CMD_DFL | CFG_CMD_DHCP | CFG_CMD_PING | CFG_CMD_PCI)
+#define CONFIG_NET_MULTI
/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
#include <cmd_confdefs.h>
#define CONFIG_BOOTDELAY 2
-#define CONFIG_BOOTARGS "root=/dev/mtdblock0 mem=32M console=ttyAM0 console=tty"
+#define CONFIG_BOOTARGS "root=/dev/mtdblock0 console=ttyAM0 console=tty"
#define CONFIG_BOOTCOMMAND ""
/*
@@ -131,10 +136,9 @@
* PCI definitions
*/
-/*#define CONFIG_PCI /--* include pci support */
-#undef CONFIG_PCI_PNP
+#define CONFIG_PCI
+#define CONFIG_PCI_PNP
#define CONFIG_PCI_SCAN_SHOW 1 /* show pci devices on startup */
-#define DEBUG
#define CONFIG_EEPRO100
#define CFG_RX_ETH_BUFFER 8 /* use 8 rx buffer on eepro100 */
--
Regards,
George
More information about the U-Boot
mailing list