社区导航

 

搜索
查看: 6952|回复: 5

[原创] Codeblocks+Qemu——在IDE里面实现U-boot指令级调试

[复制链接]

671

TA的帖子

3

TA的资源

版主

Rank: 6Rank: 6

发表于 2016-1-8 00:13 | 显示全部楼层 |阅读模式
本帖最后由 le062 于 2016-1-8 00:17 编辑

最近开始看一系列嵌入式linux免费教程,其中有个《看懂uboot的神秘面容》,觉得非常不错,当然看视频并不过瘾,准备弄块板子玩玩,用来调试u-boot。当然要真再买块板子就傻瓜了,君不见还有那么多开发板在吃灰么,还要有jtag工具,什么烧写拉,调试脚本拉,还没开始调试,就被烦死了。
所以,这次祭出qemu大杀器,配合Codeblocks,可以带给大家调试单片机般的体验,废话不多说,开始流水帐。

准备

PC环境:intel x64 cpu, fedora 23 64bit

软件安装:

sudo dnf install gcc-arm-linux-gnu qemu codeblocks arm-none-eabi-gdb arm-none-eabi-gcc

一,编译并运行

qemu可以模拟很多开发板,这儿选定了一款vexpress-a9,建立以下工作目录

  1. mkdir ~/qemu
  2. cd ~/qemu
  3. mkdir vexpress-a9
  4. cd vexpress-a9
复制代码

以后,所有基于vexpress-a9板子的实验都会在该目录进行


首先,去ftp://ftp.denx.de/pub/u-boot/下载最新版本U-Boot,u-boot-2015.10.tar.bz2

解压:

  1. tar zxvf u-boot-2015.10.tar.bz2

复制代码

由于使用了gcc-arm-linux-gnu编译器,需要在Makefile中指定ARCH及CROSS_COMPILE

  1. vi Makefile
复制代码

增加以下两行

  1. ARCH ?= arm
  2. CROSS_COMPILE ?= arm-none-eabi-
复制代码


觉得有必要的话,也可以在config.mk文件下增加-ggdb参数:

  1. PLATFORM_CPPFLAGS := -ggdb
复制代码

保存,然后编译

  1. make vexpress_ca9x4_defconfig
  2. make
复制代码

ls的结果如下:

  1. [llp@llp u-boot-2015.10]$ ls
  2. api        disk      include      MAKEALL   snapshot.commit  u-boot.cfg
  3. arch       doc       Kbuild       Makefile  System.map       u-boot.lds
  4. board      drivers   Kconfig      net       test             u-boot.map
  5. common     dts       lib          post      tools            u-boot.srec
  6. config.mk  examples  Licenses     README    u-boot
  7. configs    fs        MAINTAINERS  scripts   u-boot.bin
复制代码

此时,直接执行这条命令就能跑u-boot了

  1. qemu-system-arm -M vexpress-a9 -m 256M -nographic -kernel u-boot
复制代码

二,CodeBlocks图形调试环境

首先启动一个支持gdb的qemu机器

  1. qemu-system-arm -M vexpress-a9 -m 256M -nographic -kernel u-boot -s -S

  2. 增加的几个参数定义:
  3. -S              freeze CPU at startup (use 'c' to start execution)
  4. -s              shorthand for -gdb tcp::1234
复制代码

然后打开codeblocks,配置settings->compiler(可不配置),指向arm-none-eabi-

配置setting->debuger,指向arm-none-eabi-gdb,另外勾选下do not run the debugee,可以防止程序直接运行

接下来新建一个空的工程,将u-boot目录下所有的.c;.h;.s;.S文件导入(有心情可以把没用的删掉,我是懒得烦了)

右击工程名,打开properties,在debugger标签下,配置下remote connection,填入localhost及1234即可。

这样之后,直接点击调试小图标就可以开始调试uboot了,默认暂停在b reset这儿,可以按F7单步。


三,Relocating之后的处理

relocation之后的断点需要重新定位symbols,可以参考http://www.denx.de/wiki/view/DULG/DebuggingUBoot

对于这块a9板,可以用这个命令add-symbol-file u-boot 0x6FF83000,然后就能对上relocating之后的代码了。


linux下截图不宜,放两张效果图把

Screenshot_2016-01-07_10-22-31.png

Screenshot_2016-01-07_10-53-58.png


评分

2

查看全部评分

i.MX RT1010 真香


回复

使用道具 举报

671

TA的帖子

3

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2016-1-8 00:26 | 显示全部楼层
codeblocks IDE调试的关键是:
1,提供GDB执行文件
2,提供symbol
3,提供源码检索路径
4,提供gdb server地址及端口
在满足以上条件后,可以利用codeblocks调试任何使用gcc编译的代码,哈哈,enjoy it.

i.MX RT1010 真香


回复

使用道具 举报

2351

TA的帖子

3

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2016-1-8 08:55 | 显示全部楼层
很给力
曾经看到Qemu模拟stm32开源项目,看来他确实是个神器
电工

回复

使用道具 举报

1187

TA的帖子

3

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2016-1-8 09:04 | 显示全部楼层
神器啊,跟着学习学习来

回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-5-25 11:52 | 显示全部楼层
求《看懂uboot的神秘面容》课程。楼主。。。qq:1213099627@qq.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-5-27 00:45 , Processed in 0.189669 second(s), 26 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表