首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

shot the softgun--使用softgun仿真ARM

shot the softgun--使用softgun仿真ARM

玩了两个星期,把softgun怎么用终于弄通了,也编译出来一个imx21 的ucos image.虽然ucos还有bug,但可能暂时没时间继续了,总结一下做点记录吧!.
    LINUX下玩交叉编译基本都是那一套,用ARM-ELF 交叉编译工具把你写的操作系统或linux kernel编译成elf image.如果玩过skyeye,找个过程估计没有太大难度。我就是在ucos for skyeye的基础上把代码编写出 imx21的prot的,部分代码摘自imx21的BSP!
    softgun仿真了AMD系列的NOR flash,但为了仿真方便,可以把变异的程序起始地址放在内存中,通过命令使softgun从该地址执行,我就把程序编译到0xc0000000的内存中。
    arm-elf编译出来的elf不能直接被softgun识别,需要转成srecord或intel hex。但我自己的试验srecord格式不能正确加载,intel hex就没有遇到麻烦。可以通过arm-elf-objcopy -O ihex XXX.ELF XXX.HEX命令把ELF image转成 intel hex格式的image.
    softgun默认会到你的home目录下读取一个隐藏的配置文件,因此最好还是通过参数为不同的仿真指定配置文件。我把映像文件和配置文件放到同一目录下。配置文件softgun有详细的解释,同时其各式像window下的ini文件,也很容易看明白。其中有个起始地址的设置你需要修改为跟你编译时的设置一致。另外还有一个gdbwait选项,softgun的作者在0.15中加入了,但说明中还没有给出,gdbwait=1时,softgun会在起始地址停住等待gdb连接。
    现在来启动softgun:
    softgun -l 0xc0000000 xxx.hex -c imx21ads.sg -g 0xc0000000
    -l指定加载的地址和映像文件,-c指定配置文件, -g指定了开始执行的地址。然后再另一个console下执行gdb
    gdb xx.elf
    target remote localhost:4711
    gdb就连接到softgun,可以开始执行仿真了。
有几个不好的地方:
    1 gdb不能使用断点来调试操作系统,不知道skyeye1.2是否也有这个麻烦。
    2 关闭softgun只能通过关闭console或kill来完成。
继承事业,薪火相传
返回列表