10059|4

750

帖子

3

TA的资源

版主

楼主
 

Codeblocks+Qemu——在IDE里面实现U-boot指令级调试 [复制链接]

本帖最后由 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下截图不宜,放两张效果图把


最新回复

求《看懂uboot的神秘面容》课程。楼主。。。qq:1213099627@qq.com  详情 回复 发表于 2018-5-25 11:52

赞赏

2

查看全部赞赏

点赞 关注(1)
个人签名

要666


回复
举报

750

帖子

3

TA的资源

版主

沙发
 
codeblocks IDE调试的关键是:
1,提供GDB执行文件
2,提供symbol
3,提供源码检索路径
4,提供gdb server地址及端口
在满足以上条件后,可以利用codeblocks调试任何使用gcc编译的代码,哈哈,enjoy it.
 
个人签名

要666

 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

板凳
 
很给力
曾经看到Qemu模拟stm32开源项目,看来他确实是个神器
 
个人签名电工
 
 

回复

1173

帖子

3

TA的资源

五彩晶圆(初级)

4
 
神器啊,跟着学习学习来
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
求《看懂uboot的神秘面容》课程。楼主。。。qq:1213099627@qq.com
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表