
On Tue, Dec 21, 2004 at 11:40:28AM +0100, jean-paul.saman@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@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