【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

skyeye这个虚拟机工具,虽然之前听说过,但是很少使用。这次借着ubuntu环境,正好可以练习一下。基本的步骤也比较简单,无非就是搭建skyeye环境,下载arm编译环境,编译工程,加载等等。

a)编译skyeye

此次我选择的版本是1.2.6版本。当然,如果你觉得麻烦也可以sudo apt-get install skyeye,但是一般下载的都是1.2.5版本。因为我想使用s3c2440作为我的测试平台,所以选择了高阶的版本。编译的过程也很简单,. /confiigure && make && make install。当中编译nandflash_smallblock.c可能有错误,只需要在519行的添加一个open的参数就可以了,一般为0666。

b)获取编译环境

搭建交叉编译环境是我们的基本工作。一方面,大家可以用buildroot工具自己编译,另一方面大家可以从www.arm9.net这边下载。

c) 获取工程代码

代码如果从头写,比较麻烦。我们可以借用skyeye1.3.5中的demo工程,四个文件,分别为汇编、c、makefile和linkfile。汇编如下,

 #define MODE_SVC 0x13
#define I_BIT   0x80.text.align 4.global begin.type begin, functionbegin:/*disable I-bit*/mov     r0, #I_BIT|MODE_SVCmsr     cpsr_c, r0mov  r1,#0xd2sub r2,r0,r1ldr sp, =irq_stack           @ set sp_irq = irq_stackbl  hellob  begin.data.align  4
irq_stack:.space    4096

C语言如下,

#define BOGO_MIPS 1000000void hello(void)
{   int i;char * hellostr="helloworld";long* paddr=(long*)0xfffd001c;int timeout ;i = *hellostr - 'h';while(1){timeout = 0;while(++timeout != BOGO_MIPS);for(i=0;i<10;i++){* paddr=hellostr[i];}}return;
}

Makefile如下,

CC=arm-elf-gcc
LD=arm-elf-ld
CFLAGS= -c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -pipe -g -mapcs-32 -march=armv4 -mtune=arm7tdmi
LDFLAGS= -N -p -X -Thello.ldsLIB=all: hello hello: start.o hello.o$(LD) $(LDFLAGS)  start.o hello.o -o helloarm-elf-objdump -xS hello > hello.sarm-elf-readelf -a hello > hello.rarm-elf-nm hello > hello.nstart.o:start.S$(CC) $(CFLAGS) start.S     hello.o:hello.c$(CC) $(CFLAGS) hello.cclean:rm -rf *.o *.elf *.gdb hello *.r *.n *.s

链接文件如下,

OUTPUT_ARCH(arm)
ENTRY(begin)
SECTIONS
{. = 0x1000000;.text : {*(.text) *(.rodata)}. = ALIGN(8192);.data : {*(.data)}.bss : {*(.bss)}/* Stabs debugging sections.    */.stab 0 : { *(.stab) }.stabstr 0 : { *(.stabstr) }.stab.excl 0 : { *(.stab.excl) }.stab.exclstr 0 : { *(.stab.exclstr) }.stab.index 0 : { *(.stab.index) }.stab.indexstr 0 : { *(.stab.indexstr) }.comment 0 : { *(.comment) }.debug_abbrev 0 : { *(.debug_abbrev) }.debug_info 0 : { *(.debug_info) }.debug_line 0 : { *(.debug_line) }.debug_pubnames 0 : { *(.debug_pubnames) }.debug_aranges 0 : { *(.debug_aranges) }}

e) skyeye脚本,保存为skyeye.conf文件

#skyeye config file sample
arch:arm
cpu: arm7tdmi
mach: at91mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000
uart:mod=term
#log: logon=0, logfile=./sk1.log, start=0, end=200000

f)执行,运行

有了工程和skyeye,一切都准备就绪。你要做的就是make工程, 然手skyeye -e hello就可以了。当然,如果你愿意,可以自己去编译一个gdb调试工具,这样可以和skyeye一起调试使用,效率更高。

从skyeye学习arm(开篇)相关推荐

  1. 从skyeye学习arm( 工具篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在前面的一篇文章中,我们介绍了如何利用skyeye启动最简单的arm程序代码.今天,我们可以从 ...

  2. 从skyeye学习arm( u-boot篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 有了上面的skyeye环境,我们可以自己在上面进行测试和学习了.很多学习嵌入式linux的朋友 ...

  3. 从skyeye学习arm(文件系统篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 本来这个系列的blog是在春节前准备的,因为过年耽误了一段时间.没有关系,今天我们继续补上.前 ...

  4. 从skyeye学习arm( linux篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面一章,我们说到了u-boot的仿真.作为现代的嵌入式系统来说,u-boot的主要作用其实就 ...

  5. 使用 SkyEye 模拟 ARM Linux

    对于希望学习 ARM 汇编的同学而言, 购买 ARM 开发板进行板上实测无疑是一个有效的方法,不过购买 ARM 开发板需要一笔费用,而且每次测试都需要连接开发板,比较麻烦.这里介绍一个 ARM 模拟器 ...

  6. 学习ARM开发01-09

    /***********************************  *作者:蔡军生  *出处:http://blog.csdn.net/caimouse/  ***************** ...

  7. 学习ARM开发(11)

    学习ARM开发(11) 昨天又是星期天,在家里又可以对那块开发板进行软件研究了. 由于前几次,把编译好的UBOOT写到FLASH老是运行不了.那么怎么办呢?思考了很久,也查看 了源程序,还是没有发现问 ...

  8. 学习ARM开发(2)

    学习ARM开发(2) 今天是星期天,刚好在家里休息.又是学习ARM的大好时机了. 早上起得很早,因为都想着怎么样搞好这个ARM开发环境,总是心急的.搞得睡觉,也睡不好.立即把电脑打开,为了更加快点,把 ...

  9. ACM竞赛学习整理开篇之01背包问题

    ACM竞赛学习整理开篇之01背包问题. 最近,偶然的一次机会让我关注信息奥赛的一些内容.发现其中的内容很有趣,是学习编程的一条很好的路径,又能很好地将数学和编程联系到一起.在csdn里看到了不少同好也 ...

最新文章

  1. C++对象赋值的四种方式
  2. python文件操作和集合(三)
  3. 技术干货 | jsAPI 方式下的导航栏的动态化修改
  4. UITabBarController详解
  5. JS容易犯错的this和作用域
  6. php having,having方法
  7. 如何限制创建子网站时只能使用指定的模板
  8. python绝对值函数fabs_Python中abs()和math.fabs()区别
  9. java从Object类型转换成double,int类型
  10. java页面左右飘窗_页面飘窗设计
  11. 谷歌相机镜像翻转_Google快速翻转:有用还是没用?
  12. 408计算机考研后期规划-10月起
  13. java单元测试异步不进去方法_java单元测试之如何实现异步接口的测试案例
  14. SwiftUI之HStack和VStack的切换
  15. 湖南师范学院大学计算机等级考试,湖南师范大学计算机等级考试时间
  16. 基于c语言图像边缘检测的程序,图像边缘检测之拉普拉斯(Laplacian)C++实现
  17. 云服务器端口和防火墙端口配置
  18. 乱码 Linux,linux中文乱码【图文教程】
  19. 使用CSS3制作一个简单的商品列表、浮动布局
  20. 破解行Android apk 逆向工程研究﹣破解 MyTV HD 機種限制手記

热门文章

  1. iOS动画:带时分秒指针的时钟动画(上)
  2. 使用swiftenv管理swift版本
  3. ios自定义UITextView 支持placeholder的方法
  4. Oracle八大性能视图之v$transaction
  5. Web安全实践(6)web应用剖析之信息提炼
  6. vc picture控件的分类总结(转载)
  7. Error:(1, 1) java: 非法字符: ‘\ufeff’
  8. day5 ---- 数据类型及常用方法(字符串、列表)
  9. Vim 使用教程(搬运)
  10. EasyUI加载树控件自动展开所有目录