shot the softgun--使用softgun仿真ARM
 
- UID
- 1029342
- 性别
- 男
|

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来完成。 |
|
|
|
|
|