【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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. 使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图
  2. Fortify 17.10进行源代码安全扫描的方法
  3. python字典如何删除数据库_Python 字典删除元素clear、pop、popitem
  4. Linux下window转unix文件格式
  5. 测试点4错的来:1029 旧键盘 (20分)
  6. QT开发(十)——QT输入组件
  7. 使用AspectCore动态代理
  8. stlink 升级固件以后失败_STM32固件升级的一点经验
  9. 初探 performance – 监控网页与程序性能
  10. react.js学习笔记02
  11. Linux 常用基础命令(入门版)
  12. 利用服务器在家远程登录办公室电脑
  13. SVM-sklearn
  14. 视觉测量—结构光标定1
  15. mac os监听扬声器、麦克风的音量、静音
  16. VB 程序大揭秘(转载)用VB的不得不看的好东西!
  17. 计算机一级wps必背知识点,计算机一级WPSoffice考前复习题
  18. LaTeX 第一页不显示页码
  19. 统信软件:第一份收入破亿的答卷
  20. 毕业设计1-DFROBOT 风速计 调试记录(基于485协议+ STM32Cubemx + STM32F103C8T6)

热门文章

  1. SCOM2012R2 APM系列(三) 配置Java应用程序监控
  2. 质数分布是否随机关乎安全大事
  3. 黄聪:详解 ManualResetEvent(转)
  4. Centos php5.3.3 升级 5.5.26 mysql5.1.73 升级 5.6.25
  5. CLR线程池的作用与原理浅析
  6. 波形捕捉:(8)使用“捕捉缓冲区”
  7. AD 组策略应用与排错(1应用)
  8. 使用QHttp与C#编写的服务端交互(编译环境mingw)
  9. 如果检测到有老版本存在就先卸载老版本才形始新的安装过程
  10. 20140711_类的继承、派生、ACE框架、指针的问题、系统的问题