chl00100 发表于 2005-8-4 23:43:22

skyeye下跑uclinux出问题...

请教:偶在redhat9上跑uclinux,以前实验那个demon程序成功了,今天又编译了一遍,与上次步骤一样,编译过程错误也和上次一样排除了,可是在skyeye下跑的时候,一直死循环输出,于是我把为demon加入的东西全部删除,但此时连uclinux也不能跑了,死循环症状一样,下面有我的截图,有没有哪位遇到过这个问题呀~~~~~


Script started on 2005年08月04日 星期四 20时32分50秒
# ./skyenye 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秒

chl00100 发表于 2005-8-5 21:37:38

:? 今天从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]
查看完整版本: skyeye下跑uclinux出问题...