QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3578|回复: 12

用skyeye仿真arm运行linux之问答

[复制链接]
发表于 2004-11-8 22:40:24 | 显示全部楼层 |阅读模式
以下是Skyeye项目专栏版主chyyuu对我不清楚的一些问题的解答

问:
这本书(指《源码开发的嵌入式系统软件分析与实践--基于SkyEye和ARM开发平台》)我也买了,大至翻了一下,确实值得一读。不过,恕我直言,skyeye(至0.8版本)用起来却感觉很不爽。其实,支持多少硬件平台、多少外设、加快仿真速度等等都不是最重要的,最重要的是让大家体验到linux是怎样在ARM上面跑起来的。

答:
wxzhuhua,多谢建议,不知你觉得如何能够让大家体验到linux是怎样在ARM上面跑起来的?是skyeye命令行的界面使用不方便,还是其它什么原因?
希望得到你的回答。

问:
比如说,我按你们书上238~242页所述,编译出一个带debug信息的uclinux的elf文件,然后用skyeye运行它,我希望从头开始单步运行(最好从boot开始),那么,在run之前我得设断点:
b main,答曰:not define;
list,显示了linux/arch/arm/kernel/init_task.c的程序,共28行
b 15, 答曰: no line
b 1~28,均答曰:no line
怎样才能如我希望那样运行呢?

答:试试 b start_kernel
 楼主| 发表于 2004-11-8 22:48:23 | 显示全部楼层
多谢版主指点。
回复

使用道具 举报

发表于 2004-11-12 15:03:44 | 显示全部楼层
内核没有main函数。
你可以通过skyeye的信息察看启动的首地址。然后用"b *<首地址>"设置断点。然后可以用si单步运行。另外。b start_kernel也是一种方法。
回复

使用道具 举报

 楼主| 发表于 2004-11-14 02:25:35 | 显示全部楼层
多谢,期待你们早日推出emacs版本。
回复

使用道具 举报

发表于 2004-11-19 22:23:59 | 显示全部楼层
emacs版本是什么意思?
回复

使用道具 举报

 楼主| 发表于 2004-11-22 11:13:38 | 显示全部楼层
skyeye计划利用emacs实现gdb图形界面,故称emacs版本。

skyeye似乎用skyeye.conf取代了arm的boot硬件设置,希望也可以不用skyeye.conf而直接进行raw boot。
回复

使用道具 举报

 楼主| 发表于 2004-11-23 10:19:51 | 显示全部楼层
我的意思是,虽然skyeye需要知道用户的硬件设置,但boot部分还是应该支持用户仿真。
回复

使用道具 举报

发表于 2004-11-23 10:43:58 | 显示全部楼层
关于这个问题,我想讨论一下. 您说的用户boot设置包括cpu寄存器设置,sdram初始化,flash程序的copy,mmu和cache的初始化,堆栈的初始化. 是这些吗?
    无论如何,skyeye必须知道用户的memory和device的地址空间是如何分配的,这就是skyeye的作用. 至于flash和sdram的模拟,目前skyeye还没有.
回复

使用道具 举报

 楼主| 发表于 2004-11-23 11:18:04 | 显示全部楼层
可是这不需要skyeye仿真flash和sdram,skyeye只要知道这些东东的地址即可。

我觉得应该这样,用户告诉skyeye其外围设备的地址(或更准确一点,外围设备与arm芯片的引脚连接),然后skyeye据此信息仿真用户的boot程序,如果boot与地址信息不符,skyeye就按实际情况输出不符的结果(比如黑屏,无反应等等,有提示哪里出错当然更好)就行了。

其实数字电路的仿真,应该比较容易,许多芯片都提供IBIS模型,而skyeye连这个都不需要(目前),只要按理想状况考虑1、0和时序就行了(当然目前恐怕也未支持),主要是速度问题。
回复

使用道具 举报

发表于 2005-2-20 22:57:03 | 显示全部楼层
[quote:57472e9477="walimis"]内核没有main函数。
你可以通过skyeye的信息察看启动的首地址。然后用"b *<首地址>"设置断点。然后可以用si单步运行。另外。b start_kernel也是一种方法。[/quote]

这个?"b *<首地址>"怎么不好用啊?是偶的使用方法错了吗?本人新手,望大家给偶指点~

(SkyEye) load
Loading section .init, size 0xa000 vma 0x1000000
Loading section .text, size 0xc5c60 vma 0x100a000
Loading section .data, size 0x8320 vma 0x10d0000
Start address 0x1000000
Transfer rate: 7076864 bits/sec.
(SkyEye) b *<0x1000000>
A parse error in expression, near `<0x1000000>'.
(SkyEye) "b *<0x1000000>"
Undefined command: "".  Try "help".
(SkyEye) b *<0x10d0000>
A parse error in expression, near `<0x10d0000>'.
(SkyEye) b start_kernel
Breakpoint 1 at 0x1000570: file init/main.c, line 363.
(SkyEye) b *<0x10d8321>
A parse error in expression, near `<0x10d8321>'.
(SkyEye) b *<0x10e0000>
A parse error in expression, near `<0x10e0000>'
回复

使用道具 举报

发表于 2005-2-21 16:12:12 | 显示全部楼层
sorry,可能是表述有些歧义。"b *<首地址>",使用的时候,不需要<>。如应该“b *0x10e0000”。
回复

使用道具 举报

发表于 2005-2-21 16:29:18 | 显示全部楼层
呵呵,知道了,多谢斑竹。怪偶没有经验~     
回复

使用道具 举报

发表于 2005-2-26 11:04:09 | 显示全部楼层
再提一个问题~
用skyeye模拟时用什么命令可以观察arm中寄存器的内容?可以吗?
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-22 20:00 , Processed in 0.061177 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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