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”。

目录
相关文章
|
网络协议 Unix Linux
OpenOCD(五):调试适配器配置
OpenOCD(五):调试适配器配置
1614 0
|
NoSQL 网络协议 Linux
OpenOCD(二):Jim-Tcl&运行&OpenOCD项目设置
OpenOCD(二):Jim-Tcl&运行&OpenOCD项目设置
821 1
|
监控 NoSQL
JLink + GDB 调试方法
本节主要介绍嵌入式开发中常用的JLink+GDB调试方法。 调试所需软件 J-link,可以从https://www.segger.com下载对应操作系统的软件包,然后安装(注意:segger是仿真器的名字,相当常用的一款,仿真器的接口也是固定的,一般开发版上都会带有这个调试接口,如图) 运行JLinkGDBServer 按照上图中的配置,配置GDBServer,然后点击OK,进入下一个界面 注意,如果硬件连接没有问题,那么上图中的J-Link和 Device栏中显示绿色,GDB显示为红色,因为我们还没有运行GDB软件。
9241 46
|
NoSQL IDE 开发工具
OPENJTAG调试学习(一):嵌入式软件的交叉开发系统
OPENJTAG调试学习(一):嵌入式软件的交叉开发系统
897 0
|
4月前
|
NoSQL 算法 Linux
OpenOCD下载安装保姆级教程(附安装包,非常详细)
OpenOCD是一款开源片上调试工具,支持JTAG/SWD接口,提供GDB Server、TCL脚本自动化等功能,可实现断点调试、Flash烧录、FPGA编程等,广泛应用于嵌入式开发与量产测试,被誉为“穷人的Lauterbach”。跨平台且免费,配置灵活但稍复杂,是嵌入式工程师的高效调试利器。
|
人工智能 算法
大模型不会推理,为什么也能有思路?有人把原理搞明白了
大模型(LLMs)在推理任务上表现出与人类不同的问题解决思路。最新研究《Procedural Knowledge in Pretraining Drives Reasoning in Large Language Models》发现,大模型通过合成程序性知识来完成推理任务,而非简单检索答案。这为理解其推理能力提供了新视角,并指出了改进方向,如设计更有效的算法和使用更大规模数据。论文链接:https://arxiv.org/abs/2411.12580。
478 3
|
API 开发工具
langchain 入门指南(一)- 准备 API KEY
langchain 入门指南(一)- 准备 API KEY
2960 0
|
小程序 存储控制器 Android开发
OPENJTAG调试学习(二):OpenOCD、OpenJTAG 烧写程序、调试程序
OPENJTAG调试学习(二):OpenOCD、OpenJTAG 烧写程序、调试程序
2248 0
|
开发工具 芯片 Perl
【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置
【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置
4062 0