skyeye下跑uclinux出问题...
请教:偶在redhat9上跑uclinux,以前实验那个demon程序成功了,今天又编译了一遍,与上次步骤一样,编译过程错误也和上次一样排除了,可是在skyeye下跑的时候,一直死循环输出,于是我把为demon加入的东西全部删除,但此时连uclinux也不能跑了,死循环症状一样,下面有我的截图,有没有哪位遇到过这个问题呀~~~~~Script started on 2005年08月04日 星期四 20时32分50秒
# ./skyen[Kye linux-2.4.x/linux
***************************************************************
**** ****
**** SkyEye Simulator Ver 0.8.0 with GDB 5.3 Interface ****
**** ****
***************************************************************
GNU gdb 5.3
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This SkyEye was configured as "--host=i686-pc-linux-gnu --target=arm-elf"...
(SkyEye) tar sim
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name s3c4510b, mach_init addr 0x813e884
SKYEYE: use arm7100 mmu ops
Connected to the simulator.
(SkyEye) load
Loading section .init, size 0xa000 vma 0x8000
Loading section .text, size 0x1a5c88 vma 0x12000
Loading section .data, size 0x7bdc vma 0x1b8000
Start address 0x8000
Transfer rate: 14402336 bits/sec.
(SkyEye) r
Starting program: /home/chl/qianru/uClinux-dist/linux-2.4.x/linux
Linux version 2.4.24-uc0 (root@localhost) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(-msep-data patches)) #3 四 8月 4 19:43:48 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... 20.78 BogoMIPS
Memory: 8MB = 8MB total
Memory: 6176KB available (1687K code, 156K 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
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: C6088-1B7C87 (RO)
RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 512 bind 512)
VFS: Mounted root (romfs filesystem) readonly.
Freeing init memory: 40K;此处开始死循环
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr, CPnum is 0, instr ec0000a9, addr 7bfe14
Program received signal SIGINT, Interrupt.
collect_signal (sig=4, list=0x7f6340, info=0x7f7ee0) at signal.c:213
213 pp = &list->head;
(SkyEye) q
The program is running. Exit anyway? (y or n) y
# exit
Script done on 2005年08月04日 星期四 20时33分51秒 :? 今天从http://www.lumit.org/上下载了了编译好的uclinux内核,在skyeye上跑没问题,可见skyeye没问题,但令人纳闷的是我自己编译的uclinux内核也没提示错误呀, :cry: 下面是我在skyeye上跟踪uclinux的过程,当跟踪到switch-to时即使是step命令也发生死循环,跟踪不进去了,偶是今天才学用gdb,实在不知道下面该怎么办了,望斑竹或哪位大虾指点:)~~~~
Breakpoint 1, cpu_idle ()
at /home/chl/qianru/uClinux-dist/linux-2.4.x/include/asm/current.h:9
9 return (struct task_struct *)(sp & ~0x1fff);
(SkyEye) step n
87 current->nice = 20;
(SkyEye)
88 current->counter = -100;
(SkyEye)
90 while (1) {
(SkyEye)
88 current->counter = -100;
(SkyEye)
91 void (*idle)(void) = pm_idle;
(SkyEye)
95 while (!current->need_resched)
(SkyEye)
92 if (!idle)
(SkyEye)
95 while (!current->need_resched)
(SkyEye)
98 schedule();
(SkyEye) s
schedule ()
at /home/chl/qianru/uClinux-dist/linux-2.4.x/include/asm/current.h:9
9 return (struct task_struct *)(sp & ~0x1fff);
(SkyEye) n
562 BUG_ON(!current->active_mm);
(SkyEye)
567 if (unlikely(in_interrupt())) {
(SkyEye)
565 this_cpu = prev->processor;
(SkyEye)
567 if (unlikely(in_interrupt())) {
(SkyEye)
578 sched_data = & aligned_data.schedule_data;
(SkyEye)
580 spin_lock_irq(&runqueue_lock);
(SkyEye)
583 if (unlikely(prev->policy == SCHED_RR))
(SkyEye)
589 switch (prev->state) {
(SkyEye)
599 prev->need_resched = 0;
(SkyEye)
609 next = idle_task(this_cpu);
(SkyEye)
610 c = -1000;
(SkyEye)
611 list_for_each(tmp, &runqueue_head) {
(SkyEye)
610 c = -1000;
(SkyEye)
611 list_for_each(tmp, &runqueue_head) {
(SkyEye)
612 p = list_entry(tmp, struct task_struct, run_list);
(SkyEye)
154 if (p->policy & SCHED_YIELD)
(SkyEye)
153 weight = -1;
(SkyEye)
154 if (p->policy & SCHED_YIELD)
(SkyEye)
160 if (p->policy == SCHED_OTHER) {
(SkyEye)
168 weight = p->counter;
(SkyEye)
169 if (!weight)
(SkyEye)
180 if (p->mm == this_mm || !p->mm)
(SkyEye)
181 weight += 1;
(SkyEye)
182 weight += 20 - p->nice;
(SkyEye)
183 goto out;
(SkyEye)
615 if (weight > c)
(SkyEye)
616 c = weight, next = p;
(SkyEye)
617 }
(SkyEye)
618 }
(SkyEye)
621 if (unlikely(!c)) {
(SkyEye)
638 sched_data->curr = next;
(SkyEye)
629 tsk->cpus_runnable = 1UL << cpu;
(SkyEye)
628 tsk->processor = cpu;
(SkyEye)
629 tsk->cpus_runnable = 1UL << cpu;
(SkyEye)
640 spin_unlock_irq(&runqueue_lock);
(SkyEye)
642 if (unlikely(prev == next)) {
(SkyEye)
644 prev->policy &= ~SCHED_YIELD;
(SkyEye)
645 goto same_process;
(SkyEye)
666 kstat.context_swtch++;
(SkyEye)
678 struct mm_struct *mm = next->mm;
(SkyEye)
680 if (!mm) {
(SkyEye)
679 struct mm_struct *oldmm = prev->active_mm;
(SkyEye)
680 if (!mm) {
(SkyEye)
681 BUG_ON(next->active_mm);
(SkyEye)
682 next->active_mm = oldmm;
(SkyEye)
61 __save_flags_cli(flags);
(SkyEye)
62 v->counter += 1;
(SkyEye)
63 __restore_flags(flags);
(SkyEye)
685 } else {
(SkyEye)
690 if (!prev->mm) {
(SkyEye)
691 prev->active_mm = NULL;
(SkyEye)
80 __save_flags_cli(flags);
(SkyEye)
81 v->counter -= 1;
(SkyEye)
82 result = (v->counter == 0);
(SkyEye)
83 __restore_flags(flags);
(SkyEye)
830 if (atomic_dec_and_test(&mm->mm_count))
(SkyEye)
703 switch_to(prev, next, prev);
就是此处,只能跟踪到这里,而且我通过上下文用grep也没找到703 switch_to(prev, next, prev);这一句所在的文件.....
(SkyEye) step
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
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: C6088-1B7C87 (RO)
RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 512 bind 512)
VFS: Mounted root (romfs filesystem) readonly.
Freeing init memory: 40K
SKYEYE ARMul_STC,CANT, undefinstr,CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr,CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr,CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr,CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr,CPnum is 0, instr ec0000a9, addr 7bfe14
SKYEYE ARMul_STC,CANT, undefinstr,CPnum is 0, instr ec0000a9, addr 7bfe14
页:
[1]