OPENJTAG调试学习(四):OpenJTAG 来烧写、调试 cortex M3

简介: OPENJTAG调试学习(四):OpenJTAG 来烧写、调试 cortex M3

OpenJTAG 来烧写、调试 cortex M3

1 使用 Eclipse 调试程序:以 S3C2410/S3C2440 的 u-boot 程序为例

注意:调试网上下载的 u-boot 时,需要定义 CONFIG_SKIP_LOWLEVEL_INIT,它表示“跳过底层的初始始化”,就是不要初始化存储控制器,不要再次复制 u-boot 本身到 SDRAM中。对于光盘中的 u-boot,已经增加的自动识别代码,无需定义这个宏。

虽然不能在 Windows 下编译 u-boot,但是只要有 elf 格式的可执行文件和源代码,还是可以在 Eclipse 下调试的。

E:\eclipse_projects\u-boot 目录下的 u-boot.bin、u-boot 是 u-boot-1.1.6_OpenJTAG.tar.bz2 在Linux 下编译好的可执行文件,u-boot.bin 是二进制格式,u-boot 是 elf 格式。

  • 首先,在 E:\eclipse_projects\u-boot 目录下将 u-boot-1.1.6_OpenJTAG.tar.bz2 解压缩。
  • 然后,仿照前面创建 leds 工程的方法创建 u-boot 工程。
  • 最后,为 u-boot 重新配置调试器,配置内容如图 2.62~2.67 所示。

Elf 格式的文件本身包含有路径信息,u-boot 是在 Linux 下编译的,现在要在 Windows 下调试,肯定要更改路径信息──这称为“Path Mapping”。

光盘上 u-boot 可执行文件的编译路径为:

/work/eclipse_projects/u-boot/u-boot-1.1.6_OpenJTAG

在 Windows 下 u-boot 源码路径为

E:/eclipse_projects/u-boot/u-boot-1.1.6_OpenJTAG。

可以使用以下 gdb 命令进行设置,FROM 表示原来的路径,TO 表示修改后的路径。

set substitute-path FROM TO

图 2.64 进行命令设置,命令罗列如下:

set substitute-path /work/eclipse_projects/u-boot/u-boot-1.1.6_OpenJTAG E:/eclipse_projects/u-boot/u-boot-1.1.6_OpenJTAG 
load 
break start_armboot 
c

注 1:以下的命令是进行“Path Mapping”:

set substitute-path /work/eclipse_projects/u-boot/u-boot-1.1.6_OpenJTAG E:/eclipse_projects/u-boot/u-boot-1.1.6_OpenJTAG

注 2:u-boot 执行时调用的第 1 个 C 函数是 start_armboot,它没有 main 函数。

注3:Eclipse查找源文件的默认方式是搜索工程目录下的文件(对于简单的程序,比如leds,可以使用默认方式),由于我们已经在图 2.64 中设置了“Path Mapping”,要把默认方式删除,如图 2.65 所示。

为了让 Eclipse 能正确定位到源文件,还得在图 2.65 中使用“Add” 按钮增加“Path Mapping”──这是个不起作用的“Path Mapping”。原因在于:Linux 下路径名用“/”,而Windows 下路径名用“\”,Eclipse 会把路径名里的“/”强制改为“\”,使得“Path Mapping”不起作用。直正起使用的是图 2.64 中的第 1 个命令。

图 2.66~图 2.67 用来增加一个“不起作用的”“Path Mapping”。在图 2.66 中点“Add”按钮,在出现的对话框中选中“Path Mapping”,再点“OK”。

在图 2.67 中,点击“Add”按钮,在“Compilation path”里填入编译 u-boot 时代码的路径,就是/work/projects/OpenPDA/u-boot-1.1.6_OpenJTAG;在“Local file system path”中选择当前的、本地的、要调试的源码路径,即 E:/eclipse_projects/u-boot/u-boot-1.1.6_OpenJTAG

配置完成后,先启动 OpenOCD,然后启动“u-boot Default”调试器,稍等一会就可以看到如图 2.68 所示的界面,u-boot 停在 start_armboot 函数的第一条指令上。

除调试器的设置不同外,u-boot 工程的调试方法与 leds 工程的基本一样,不再赘述。

2 使用 OpenOCD 烧写 cortex M3

把 OpenJTAG 的 JTAG 线与 cortex M3 连接好后,上电。

启动 OpenJTAG GUI,在“target”里选择“stm32”,然后点击“connect”,即可识别出cortex M3。如图 2.85 所示。

点击“telnet”按钮,即可在 telnet 界面使用 openocd 本身的命令烧写 Flash:

  • ① 执行以下命令识别 Flash,如图 2.86 所示:
halt 
flash probe 0

  • ② 执行以下命令擦除烧写 Flash,如图 2.87 所示:
flash write_image erase STM3210B.bin 0x08000000 
verify_image STM3210B.bin 0x08000000
  • 第一条命令的含义为:烧写 STM3210B.bin 文件到的 0x08000000 地址──这是 Flash 的开始地址,“erase”表示自动擦除。
  • 第二条命令是较验。

注意:如果第一条命令不成功,多执行几次就可以了;最后再用 verify_image 命令较验一下。

可以执行“help”命令查看更多的命令,或者“help 命令”查看这个命令的详细用法。比如“help flash”。

目录
相关文章
|
数据采集 机器学习/深度学习 监控
Arm Coresight 介绍
Coresight 是 ARM 架构上的一款嵌入式系统监控和调试工具,能够为系统管理员和开发人员提供便捷的系统监控和调试功能。该平台可以实时追踪和分析处理器上的活动,以深入了解潜在的性能瓶颈和问题。本文将介绍Coresight的概念、优势及其安装、配置、故障排除和调试等方面的内容,并探讨其未来发展方向和重要性。
2134 1
|
NoSQL IDE 开发工具
OPENJTAG调试学习(一):嵌入式软件的交叉开发系统
OPENJTAG调试学习(一):嵌入式软件的交叉开发系统
521 0
|
小程序 存储控制器 Android开发
OPENJTAG调试学习(二):OpenOCD、OpenJTAG 烧写程序、调试程序
OPENJTAG调试学习(二):OpenOCD、OpenJTAG 烧写程序、调试程序
1400 0
Vue3走马灯(Carousel)
这是一个基于 Vue2 的走马灯(Carousel)组件,支持丰富的自定义配置。主要属性包括图片数组、宽度、高度、自动切换、暂停轮播、过渡效果、轮播间隔、箭头和指示点等。组件提供了多种过渡效果(如滑动和渐变)及动画时长设置,并允许自定义箭头和指示点的样式。此外,还支持通过键盘方向键进行切换,提供了灵活的使用方法。
575 2
Vue3走马灯(Carousel)
|
SQL 域名解析 安全
RaspberryPi(树莓派)安装 MariaDB / MySQL 数据库
本文主要为大家讲解如何在RaspberryPi(树莓派)系统上安装 MariaDB / MySQL 数据库。
3678 0
RaspberryPi(树莓派)安装 MariaDB / MySQL 数据库
|
开发工具 芯片 Perl
【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置
【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置
2900 0
|
NoSQL Linux Android开发
OPENJTAG调试学习(三):使用 gdb 命令行进行调试
OPENJTAG调试学习(三):使用 gdb 命令行进行调试
240 0
|
存储 NoSQL Linux
OpenOCD(一):什么是OpenOCD&调试适配器硬件
OpenOCD(一):什么是OpenOCD&调试适配器硬件
1159 0
|
测试技术 芯片
深入理解jtag接口协议
                        JTAG相关的理论基础 理论基础内容来源于中国芯动力网站论坛:http://socvista.com/bbs/viewthread.php?tid=1468,经过了本人的重新组织。
4980 0
|
编解码 监控 物联网
【学员源鑫笔记】韦东山物联网流媒体实战项目-智慧家居视频监控系统(值得收藏)
【学员源鑫笔记】韦东山物联网流媒体实战项目-智慧家居视频监控系统(值得收藏)
1008 0