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

有了上面的skyeye环境,我们可以自己在上面进行测试和学习了。很多学习嵌入式linux的朋友都会涉及到u-boot的移植问题。但是u-boot调试是非常困难的,你能用到的方法不是点灯就是打印。但是有了skyeye之后,完全可以帮我们进行源码级别的调试。要进行u-boot调试,最主要的就是配置一个skyeye 文件和 编译u-boot。

(1)配置skyeye.conf文件

cpu:  arm920t
mach: s3c2410x#physical memory
#mem_bank: map=M, type=RW, addr=0x20000000, size=0x01000000
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00800000
mem_bank: map=M, type=RW, addr=0x30000000, size=0x10000000
mem_bank: map=M, type=RW, addr=0xc0000000, size=0x01000000
mem_bank: map=M, type=RW, addr=0xc1000000, size=0x00600000
mem_bank: map=M, type=RW, addr=0xc1600000, size=0x00a00000
#all peripherals I/O mapping area
#mem_bank: map=I, type=RW, addr=0xfefa0000, size=0x00060000
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020
net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1
lcd:type=s3c2410x,mod=gtk
#dbct:state=on

(2)编译u-boot, 我们使用的版本为u-boot-1.3.2.tar.bz2,

a) 将arm交叉编译环境加入到PATH中;

b)tar xjvf u-boot-1.3.2.tar.bz2;

c)cd u-boot-1.3.2;

d) make smdk2410_config;

e) make, 编译在时候会有两个错误, 这和编译器有关, 只需要把_udivsi3.S:67, _umodsi3.S:79对应的代码直接用@注释就可以了;

f)在目录下可以看到生成了u-boot、u-boot.bin两个文件。

(3)将u-boot、skyeye.conf拷贝到一个目录下,在命令行下直接输入skyeye -e u-boot, 你就可以看到下面的内容

realsil@hp-6531s:~/Desktop/exer/arm_uboot$ skyeye -e u-boot
Your elf file is little endian.
arch: arm
cpu info: armv4, arm920t, 41009200, ff00fff0, 2
mach info: name s3c2410x, mach_init addr 0x806dc30
ethmod num=1, mac addr=0:4:3:2:1:f, hostip=10.0.0.1
failed to setup_module (name:net, type:cs8900a)
tapif_init: icotl TUNSETIFF erroruart_mod:0, desc_in:, desc_out:, converter:
SKYEYE: use arm920t mmu ops
start addr is set to 0x33f80000 by exec file.
ERROR: s3c2410x_io_write_word(0x4c000000) = 0x00ffffff
ERROR: s3c2410x_io_write_word(0x4c000008) = 0x00048032U-Boot 1.3.2 (Jan 12 2014 - 11:37:08)DRAM:  64 MB
Flash: 512 kB
*** Warning - bad CRC, using default environmentIn:    serial
Out:   serial
Err:   serial
ERROR: s3c2410x_io_write_word(0x1900030a) = 0x00000000
SMDK2410 # bdinfo
arch_number = 0x000000C1
env_t       = 0x00000000
boot_params = 0x30000100
DRAM bank   = 0x00000000
-> start    = 0x30000000
-> size     = 0x04000000
ethaddr     = 00:00:00:00:00:00
ip_addr     = 10.0.0.110
baudrate    = 115200 bps
SMDK2410 #

(4)调试u-boot

a) 打开一个窗口, 输入skyeye -e u-boot -d;

b) 再打开一个窗口, 输入gdb的相关调试命令即可。

realsil@hp-6531s:~/Desktop/exer/gdb-7.1/gdb$ ./gdb ../../u-boot-1.3.2/u-boot
GNU gdb (GDB) 7.1
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/realsil/Desktop/exer/u-boot-1.3.2/u-boot...done.
Setting up the environment for debugging gdb.
Function "internal_error" not defined.
Make breakpoint pending on future shared library load? (y or [n]) [answered N; input not from terminal]
Function "info_command" not defined.
Make breakpoint pending on future shared library load? (y or [n]) [answered N; input not from terminal]
/home/realsil/Desktop/exer/gdb-7.1/gdb/.gdbinit:8: Error in sourced command file:
No breakpoint number 0.
(gdb) target remote :12345
Remote debugging using :12345
_start () at start.S:42
42  _start: b       start_code
(gdb) b  board_init
Breakpoint 1 at 0x33f909d4: file smdk2410.c, line 74.
(gdb) c
Continuing.Breakpoint 1, board_init () at smdk2410.c:74
74      clk_power->LOCKTIME = 0xFFFFFF;
(gdb) bt
#0  board_init () at smdk2410.c:74
During symbol reading, incomplete CFI data; unspecified registers (e.g., r0) at 0x33f909d4.
#1  0x33f805cc in start_armboot () at board.c:300
#2  0x33f8009c in start_code () at start.S:178
#3  0x33f8009c in start_code () at start.S:178
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) 

如果大家身边没有一块真实的arm开发板,完全可以用skyeye来进行相关的调试工作,非常方便。

从skyeye学习arm( u-boot篇)相关推荐

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

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

  2. 从skyeye学习arm( linux篇)

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

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

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

  4. 从skyeye学习arm(开篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] skyeye这个虚拟机工具,虽然之前听说过,但是很少使用.这次借着ubuntu环境,正好可以练 ...

  5. 深度学习arm MMU一篇就够了

    快速链接: .

  6. 使用 SkyEye 模拟 ARM Linux

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

  7. 学习ARM开发01-09

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

  8. 树莓派4B学习笔记——IO通信篇(UART)

    文章目录 UART简介 树莓派使用UART与串口屏通信 串口屏简介 硬件连接 配置串口接口 树莓派打开UART接口 树莓派安装串口调试助手 编程实现 wiringSerial.h Serial简介 C ...

  9. 学习ARM开发(11)

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

最新文章

  1. Error: Could not access the Package Manager. Is the system running?
  2. bootstrap4 左侧导航栏 优秀 大气_志愿服务嘉年华|“持志隽永 赴愿奔行优秀志愿服务项目展示第六期...
  3. 母亲的牛奶 Mother's Milk
  4. 奇怪的问题,.Net 2.0发送邮件失败...
  5. Django从理论到实战(part8)--URL中添加参数
  6. C#基础 基本语法4
  7. 计算机网络操作系统课件,计算机网络操作系统课件(张浩军版).ppt
  8. 网址收藏 2020.12.11
  9. eclipse svn设置忽略文件
  10. 7-7 mmh学长的大数模板 (20分)
  11. MQL5 COOKBOOK - 以 MQL5 编写的多币种 EA,利用限价订单工作
  12. java实现对接建行支付及其回调
  13. CUDA的旋转R ROI Align的OPENCL实现1(原理理解)
  14. 更多:Racket系统编程
  15. 电脑使用者必备的文本编辑器,哪款适合你?
  16. oracle匹配excel数据,ORACLE与excel的数据互传方法
  17. luogu P1724 东风谷早苗
  18. iOS6正式版不完美越狱教程(附安装讯飞输入法)
  19. 双耳节拍 枕头_枕头的故事
  20. 《Loy解说SpringCloud之Zuul》

热门文章

  1. quickServer介绍
  2. SQL Server自动化运维系列——监控磁盘剩余空间及SQL Server错误日志(Power Shell)...
  3. 怎样对待一个延期的项目
  4. RADIO控件变量添加
  5. OpenCV2.3.1 VS 安装
  6. Math类的三个方法比较: floor() ceil() round()
  7. Hyperledger Fabric、Corda和以太坊对比
  8. Oracle使用小结
  9. PHP去除顽固空格和编码问题
  10. JQUERY1.9学习笔记 之内容过滤器(三) has选择器