OpenOCD仿真uboot(二):imx6仿真方法

一、前言

在arm嵌入式开发中,uboot作为bootloader是必须移植的。在基本了解u-boot同时也编译生成了u-boot后,如果是简单的应用,可以直接下载到sd或emmc中并在开发板上运行,能启动内核即可。如果对u-boot添加了一些较为复杂的代码,遇到问题时需要调试,如果只是单纯通过串口打印信息来调试非常不便,因此需要对程序进行在线调试。另外对于想深入了解uboot源码运行流程及实现的同学,用可设断点的方式在线调试对理解uboot运行原理也有很大帮助。

本文所用平台为NXP的imx6q,该平台仿真方式主要有以下几种:

  • trace32
  • printk
  • OpenOCD

二、TRACE32

在文官文档i.MX_BSP_Porting_Guide中3.3节有这样的阐述:

image

可见,官方建议调试用两种方法:

  • 一种是在初期开发时实时调试,这时需要选取支持cortex-a9等内核的JTAG工具,官方建议用TRACE32工具。
  • 另一种就是用printf来打印debug信息调试了。

上网查了下trace32这个工具,是收费的,仿真器也比较贵,不过功能强大,可以调试linux内核。不适合个人学习者。

三、OpenOCD

另外有一种开源的方案,那就是openOCD+gdb+eclipse+jlink的方式。是适合个人学习者的理想方案。通过官网OpenOCD我们可以下载到OpenOCD的说明文档。

OpenOCD全名叫做Open On-Chip Debugger ,即开源芯片在线调试器 ,旨在为嵌入式目标设备提供调试、系统内编程和边界扫描测试。OpenOCD的起源是一个叫Dominic Rath的人,openocd是他在奥格斯堡应用科学大学毕业时毕业论文中的一部分,牛人啊。

安装了OpenOCD之后,OpenOCD会根据配置文件通过仿真器等设备连接相关芯片。此时,连接到硬件后,会提供telnet及gdb的接口,可以通过这些接口连接到OpenOCD,从而对硬件进行操作。如下图:

编程IDE
GDB
OpenOCD
Jlink/Ulink...
芯片

四、总结

本节主要介绍了对imx6芯片在线调试的方法,本文选用eclipse+GDB+OpenOCD+jlink的方式来进行imx6调试,以下几节中将对OpenOCD具体环境配置及使用进行详细描述。