请教一个关于uclinux启动的问题
我的板子是4Mflash,16M SDRAM ,4510的CPU,一个COM1口,两个8201链接两个网口,我编译了一个uClinux的内核,但是放到SDRAM中一直启动不了,一个问题:告诉page_alloc.c有bug,第二个问题:当初始化网口的时候,AXD里面报错有内部断点,哪位能告诉我问题可能在什么地方,或者哪位大侠能给一个移植的详细方案啊(包括哪些文件需要修改,哪些文件和硬件电路有关什么的),我折腾这个内核都半个月了,还没有成效,我的配置如下:CPU:S3C4510B;Flash:MBM29LV160 2片,32位,4M; SDRAM:HY57V6416202片,32位,16M;
串口:一个COM1,MAX232;网口:两个,两片RTL8201,物理地址通过其连接的LED设定,分别为00001、00010;
JTAG:20脚;复位电路:74HC04
先谢过了! 这个是以前写的 for ARM Evaluator-7T 板子的移植,都是 4510 的芯片,应该差不多。
供你参考。你的 uclinux 已经能从串口输出了么?
3.2 uClinux 的内核配置
在编译 uClinux 的内核之前,首先需要通过 make menuconfig 来配置内核。为了能够使得最后生成的内核在 512k 的 RAM 中运行,这里只能保留那些必须的编译选项,而将其他可有可无的删去。uClinux 在 Evaluator-7T 上的配置如下:
1) 在 System Type 中,选定
(Samsung) ARM system type
[ ] Generate big endian code
[*] Set flash/sdram size and base addr
(00000000) (S)DRAM Base Address
(00080000) (S)DRAM Size
(01800000) FLASH Base Address
(00080000) FLASH Size
这里,选择了 Samsung 芯片,编译时生成 little endian code,以及设置了flash/sdram 相应的起始地址和大小。
2) 在 File systems 中,选定
[*] ROM file system support
这里,选择了 ROM fs 的文件系统支持,其他的文件系统暂时不选。
3) 在 Character devices 中,选定
[*] Samsung serial port support
[*] Support for console on Samsung serial port
这里,选择了 Samsung 串口支持,这样就可以通过串口将内核打印的信息传递给主机。
上面的这些选项可以说是一个能够让 uClinux 运行起来的最小配置了。 我的串口确认有打印信息,因为uclinux启动的一部分信息是打印出来了的,但是我的make menuconfig中没有
[ ] Generate big endian code
[*] Set flash/sdram size and base addr
(00000000) (S)DRAM Base Address
(00080000) (S)DRAM Size
(01800000) FLASH Base Address
(00080000) FLASH Size
只有
(Samsung) ARM system type 啊,我编译生成image.ram后,通过仿真器直接把这个文件down到0x8000的地址中(sdram),然后把pc指向0x8000,直接运行就没有通过bootloader了。同时,我修改了linux-2.4.x/include/asm-armnommu/arch-samsung/hardware.h中关于DRAM、Flash的地址和大小的。 把启动的信息贴出来看看,不然谁知道问题出在哪儿啊? :evil: 我的出错信息为Linux version 2.4.17-uc0 ([email protected]) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #2 Thu Jun 2 10:13:11 CST 2005
Processor: Samsung S3C4510B revision 6
Architecture: SNDS100
On node 0 totalpages: 2048
zone(0): 0 pages.
zone(1): 2048 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
Calibrating delay loop... 49.86 BogoMIPS
Memory: 8MB = 8MB total
Memory: 6268KB available (1555K code, 153K data, 40K init)
Dentry-cache hash table entries: 1024 (order: 1, 8192 bytes)
Inode-cache hash table entries: 512 (order: 0, 4096 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 2048 (order: 1, 8192 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Samsung S3C4510 Serial driver version 0.9 (2001-12-27) with no serial options enabled
ttyS00 at 0x3ffd000 (irq = 5) is a S3C4510B
ttyS01 at 0x3ffe000 (irq = 7) is a S3C4510B
block: 64 slots per queue, batch=16
RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: C2310-196F0F (RO)
Samsung S3C4510 Ethernet driver version 0.1 (2002-02-20) <[email protected]>
eth0: 00:40:95:36:35:34
就不动了,然后AXD里报错:
DBE Warning 00256:Execution stopped,because of an unknown breakpoint(this indicates an internal error),
这是什么原因呢,我没有设断点啊 我重新找了个文件编译了一次,又有另外的错了,但是我没有改什么东西,只是把过程从新做了一次:
Linux version 2.4.17-uc0 ([email protected]) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #2 Thu Jun 2 10:13:11 CST 2005
Processor: Samsung S3C4510B revision 6
Architecture: SNDS100
On node 0 totalpages: 2048
zone(0): 0 pages.
zone(1): 2048 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
Calibrating delay loop... 49.86 BogoMIPS
Memory: 8MB = 8MB total
Memory: 6268KB available (1555K code, 153K data, 40K init)
Dentry-cache hash table entries: 1024 (order: 1, 8192 bytes)
Inode-cache hash table entries: 512 (order: 0, 4096 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 2048 (order: 1, 8192 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Unhandled fault: alignment exception (13) at 0x00000001
fault-common.c 96
Internal error: Oops: 0
CPU: 0
pc : [<00019e44>] lr : [<00019dc8>] Not tainted
sp : 001fdedcip : 00000000fp : 001fdf2c
r10: 00010f00r9 : fffffff5r8 : 001fc000
r7 : 001fc000r6 : 0019ff0cr5 : 001f0000r4 : 001fc000
r3 : 0a00000er2 : 001a280cr1 : 00000005r0 : 001a17ec
Flags: nzCvIRQs onFIQs onMode SVC_32Segment kernel
Control: 0
Process swapper (pid: 1, stackpage=001fd000)
Stack:
001fdec0: 00019dc800019e44 20000013 ffffffff 40000013
001fdee0: ffffffff 00000009 00000000 001fdf4800199ef8 00013314 00010f00 00000000
001fdf00: 00010e00 00010e00 00010ec0 0019ff0c001fc000 00012c80 00000078 00000009
001fdf20: 001fdf3c 001fdf30 0001649c 00019d7000000000 001fdf40 00012ae0 00016490
001fdf40: 00010e00 00018230 00010f00 0000000000010e00 00031610 00010e00 00010ec0
001fdf60: 0019ff0c 0019d92c 001bd578 0019ff0800000009 001fdf9c 00010ec0 00199ef8
001fdf80: 00060154 00013e8c 20000013 00010f00001fdfb4 001fdfa0 0000bfa4 00013e7c
001fdfa0: 000110b0 000110f8 001fdfcc 001fdfb800008874 0000bf74 00000800 001bd578
001fdfc0: 001fdfdc 001fdfd0 000088b4 00008868001fdffc 001fdfe0 00012064 0000889c
001fdfe0: 00000800 001bd578 0019ff0c 0019d92c00000000 001fe000 00013ea4 00012064
Backtrace:
Function entered at [<00019d60>] from [<0001649c>]
Function entered at [<00016480>] from [<00012ae0>]
Code: e3530000 0a00000e (e5930024) e3500000 0a00000b
Kernel panic: Attempted to kill init!
大侠,你一定帮帮我啊,我都搞得想哭了! 不好意思,我忘了输入我的名字了,上面的帖子都是我发的,谢谢! Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: C2310-196F0F (RO)
Samsung S3C4510 Ethernet driver version 0.1 (2002-02-20) <[email protected]>
eth0: 00:40:95:36:35:34
就不动了,然后AXD里报错:
根据这里的情况看,你先试试把 network support 部分在 make menuconfig 的时候不选,看看能否启动到 shell 里面? 我重新找了个文件编译了一次,又有另外的错了,但是我没有改什么东西,只是把过程从新做了一次:
Linux version 2.4.17-uc0 ([email protected]) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #2 Thu Jun 2 10:13:11 CST 2005
Processor: Samsung S3C4510B revision 6
Architecture: SNDS100
On node 0 totalpages: 2048
zone(0): 0 pages.
zone(1): 2048 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
Calibrating delay loop... 49.86 BogoMIPS
Memory: 8MB = 8MB total
Memory: 6268KB available (1555K code, 153K data, 40K init)
Dentry-cache hash table entries: 1024 (order: 1, 8192 bytes)
Inode-cache hash table entries: 512 (order: 0, 4096 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 2048 (order: 1, 8192 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Unhandled fault: alignment exception (13) at 0x00000001
fault-common.c 96
Internal error: Oops: 0
CPU: 0
pc : [<00019e44>] lr : [<00019dc8>] Not tainted
sp : 001fdedcip : 00000000fp : 001fdf2c
r10: 00010f00r9 : fffffff5r8 : 001fc000
r7 : 001fc000r6 : 0019ff0cr5 : 001f0000r4 : 001fc000
r3 : 0a00000er2 : 001a280cr1 : 00000005r0 : 001a17ec
Flags: nzCvIRQs onFIQs onMode SVC_32Segment kernel
Control: 0
Process swapper (pid: 1, stackpage=001fd000)
Stack:
001fdec0: 00019dc800019e44 20000013 ffffffff 40000013
001fdee0: ffffffff 00000009 00000000 001fdf4800199ef8 00013314 00010f00 00000000
001fdf00: 00010e00 00010e00 00010ec0 0019ff0c001fc000 00012c80 00000078 00000009
001fdf20: 001fdf3c 001fdf30 0001649c 00019d7000000000 001fdf40 00012ae0 00016490
001fdf40: 00010e00 00018230 00010f00 0000000000010e00 00031610 00010e00 00010ec0
001fdf60: 0019ff0c 0019d92c 001bd578 0019ff0800000009 001fdf9c 00010ec0 00199ef8
001fdf80: 00060154 00013e8c 20000013 00010f00001fdfb4 001fdfa0 0000bfa4 00013e7c
001fdfa0: 000110b0 000110f8 001fdfcc 001fdfb800008874 0000bf74 00000800 001bd578
001fdfc0: 001fdfdc 001fdfd0 000088b4 00008868001fdffc 001fdfe0 00012064 0000889c
001fdfe0: 00000800 001bd578 0019ff0c 0019d92c00000000 001fe000 00013ea4 00012064
Backtrace:
Function entered at [<00019d60>] from [<0001649c>]
Function entered at [<00016480>] from [<00012ae0>]
Code: e3530000 0a00000e (e5930024) e3500000 0a00000b
Kernel panic: Attempted to kill init!
大侠,你一定帮帮我啊,我都搞得想哭了! 如果连接串口,系统就复位可能是什么原因?
请教大侠 S3C4510B只提供了一个网络接口,而你却需要操作两个网络口,这本身就有问题
页:
[1]