[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