QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2066|回复: 5

skyeye仿真xscale,没有任何输出!

[复制链接]
发表于 2004-7-21 14:17:23 | 显示全部楼层 |阅读模式
内核源代码: linux-2.4.19
patch:            patch-2.4.19-rmk6 和 diff-2.4.19-rmk6-pxa1
1. patch -p1 <  patch-2.4.19-rmk6
2. patch -p1 <  diff-2.4.19-rmk6-pxa1
3. make lubbock_config
4 .make oldconfig
5. make dep
6. make zImage
7. 将顶层目录中的vmlinux copy到skyeye的测试目录:
    testsuits/xscale/xs_only_imagekernel_1/中,skyeye.conf没有做任何改动
8. 运行skyeye
9. 进入skyeye后,执行file=vmlinux
10. 执行target=sim
11. 执行load
12. 执行run
skyeye显示:
Starting program: /usr/src/myEmdOs/testsuits/xscale/xs_only_imagekernel_1/vmlinux

就停在那里了.怎么回事啊
 楼主| 发表于 2004-7-21 16:54:22 | 显示全部楼层
自己恢复一下把.
刚才有做了一些实验,所有进展啊.
按照 精华版中的"skyeye xscale 仿真错误"一文,又做了实验, 终于可以看到输出了.
但奇怪的是在运行到

Kernel command line: mem=64M root=/dev/ram ramdisk=8192 ramdisk_start=0xc1000000 console=ttyS0,115200
Console: colour dummy device 80x30

这一行时, 又停在那里不动了. 正在调试跟踪呢.

对了,我在编译内核的时候,因为出现一个链接错误,所以把顶层Makefile中的
DRIVERS-y += drivers/serial/serial.o \
        drivers/char/char.o \
        drivers/block/block.o \
        drivers/misc/misc.o \
        drivers/net/net.o \
#        drivers/media/media.o
的最后一行 "drivers/media/media.o" 给注释掉了,也就是说内核没有把
media.o文件链接进去. 这里提到的问题是不是跟这点有关啊
回复

使用道具 举报

发表于 2004-7-26 12:09:52 | 显示全部楼层
我用skyeye跑pxa linux,kernel用zImage形式时,可以运行。用vmlinux时,就没有输出,而且安ctrl+c,发现运行的地址也不对,0xc12bc440!
    这是不可能出现的地址,虚拟地址到不了那里。
    我用的是skyeye-0.7.4,linux-2.4.19-rmk7-pxa2。
    请问qqsky是怎么用的呢?能否将你的kernel .config和skyeye.conf发给我参考一下?
    非常感谢,[email protected]


(SkyEye) target sim
cpu info: xscale, xscale, 69052100, fffffff0, 2
mach info: name pxa_lubbock, mach_init addr 0x814166c
lcd info: turn off lcd!
SKYEYE: use xscale mmu ops
load
r
Loaded ROM ./initrd.img
Connected to the simulator.
(SkyEye) load
Loading section .init, size 0x13000 vma 0xc0008000
Loading section .text, size 0x120da4 vma 0xc001b000
Loading section .kstrtab, size 0x447c vma 0xc013bda4
Loading section __ex_table, size 0x860 vma 0xc0140220
Loading section __ksymtab, size 0x2168 vma 0xc0140a80
Loading section .data, size 0x10d70 vma 0xc0144000
Start address 0xc0008000
Transfer rate: 10865344 bits/sec.
(SkyEye) r
Starting program: /root/pxaLinux/vmlinux

Program received signal SIGINT, Interrupt.
0xc12bc440 in ?? ()
(SkyEye)
回复

使用道具 举报

发表于 2004-7-26 16:41:22 | 显示全部楼层
目前,不能直接只用vmlinux调试。需要zImage和vmlinux配合才行。
因为生成vmlinux用到的ld命令文件中,指定的是虚拟地址0Xc.......,而不是
物理地址0Xa.... 但生成zImage的ld命令文件,指定的是物理地址0Xa....

在MMU和CACHE没有enable之前,是不能直接执行vmlinux的。

比如你编译出了zImage和vmlinux,
skyeye.conf不变(注意有zImage的一行要加boot=yes),然后执行如下命令
$skyeye /somepath/vmlinux
(SkyEye)tar s
(SkyEye)run
等有linux的输出出来以后,按ctrl+c
就可以看到执行到什么地方的源码了。
回复

使用道具 举报

发表于 2004-7-26 17:17:09 | 显示全部楼层
哦,ep7312那个vmlinux可以直接执行和跟踪调试,是因为那是uclinux!!!
它的Start address 0xc0028000,就是物理地址。

那对于我的pxa的vmlinux,只要让skyeye从物理地址0xa0008000开始执行不就可以了吗?物理地址0xa0008000对应kernel mmu起来后的0xc0008000虚拟地址。
可是,如何让skyeye从0xa0008000开始执行呢?
回复

使用道具 举报

 楼主| 发表于 2004-7-29 12:10:18 | 显示全部楼层
首先,声明一下在"很多问题不明白,请高手解答一下吧, 感激不尽!"一文中提到的内核编译问题已经解决了,需要使用binutils-2.12.1版本,而不能用binutils-2.11或者是bintutils-2.13版本. gcc使用gcc-3.2版本,glibc用glibc-2.2.5. 就可以编译了.

然后,我做了几次实验,发现一个奇怪的问题:

1)用上面的编译器进行内核编译后,生成一个vmlinux和boot目录下的zImage文件.直接用zImage进行仿真,skyeye提示说"not in executable format: File format not recognized".

2)然后,用vmlinux进行仿真,如果用下面的步骤的话,就没有任何输出:
(SkyEye) file vmlinux
(SkyEye) target sim
(SkyEye) load
(SkyEye) run

但是如果用下面的步骤的话,就会有输出:
  (SkyEye) file vmlinux
(SkyEye) target sim
(SkyEye) run
这时skyeye提示:
Starting program: /usr/src/myEmdOs/testsuits/xscale/xs_only_imagekernel_1/vmlinux
warning: No program loaded.

然后,按ctrl+c, 再执行load,最后执行run. 就会出现上面的输出,但到了
Kernel command line: mem=64M root=/dev/ram ramdisk=8192 ramdisk_start=0xc1000000 console=ttyS0,115200
Console: colour dummy device 80x30

这一行后,就停在那里不动了.

查看源代码,问题好像是出在控制台初始化部分con_init()中,具体还不知道是不是?

我的疑问是为什么在skyeye中用不同的执行步骤,会有不同的结果呢?

最后,dengyl,我已经给你发过去了,请多多指正吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-24 02:45 , Processed in 0.158345 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表