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(五):调试适配器配置
1516 0
|
NoSQL 网络协议 Linux
OpenOCD(二):Jim-Tcl&运行&OpenOCD项目设置
OpenOCD(二):Jim-Tcl&运行&OpenOCD项目设置
770 1
|
IDE 调度 开发工具
如何在S32DS中使用SystemView分析FreeRTOS
如何在S32DS中使用SystemView分析FreeRTOS
如何在S32DS中使用SystemView分析FreeRTOS
|
监控 NoSQL
JLink + GDB 调试方法
本节主要介绍嵌入式开发中常用的JLink+GDB调试方法。 调试所需软件 J-link,可以从https://www.segger.com下载对应操作系统的软件包,然后安装(注意:segger是仿真器的名字,相当常用的一款,仿真器的接口也是固定的,一般开发版上都会带有这个调试接口,如图) 运行JLinkGDBServer 按照上图中的配置,配置GDBServer,然后点击OK,进入下一个界面 注意,如果硬件连接没有问题,那么上图中的J-Link和 Device栏中显示绿色,GDB显示为红色,因为我们还没有运行GDB软件。
9124 46
|
NoSQL IDE 开发工具
OPENJTAG调试学习(一):嵌入式软件的交叉开发系统
OPENJTAG调试学习(一):嵌入式软件的交叉开发系统
856 0
|
3月前
|
NoSQL 算法 Linux
OpenOCD下载安装保姆级教程(附安装包,非常详细)
OpenOCD是一款开源片上调试工具,支持JTAG/SWD接口,提供GDB Server、TCL脚本自动化等功能,可实现断点调试、Flash烧录、FPGA编程等,广泛应用于嵌入式开发与量产测试,被誉为“穷人的Lauterbach”。跨平台且免费,配置灵活但稍复杂,是嵌入式工程师的高效调试利器。
|
数据挖掘 测试技术 项目管理
2025年测试用例管理看这一篇就够了 ----Codes 开源免费、全面的测试管理解决方案
Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对 30 人以下团队免费。它通过整合迭代、看板、度量和自动化等功能,简化测试协同工作,使敏捷测试更易于实施。并提供低成本的敏捷测试解决方案,如同步在线离线测试用例、流程化管理缺陷、低代码接口自动化测试和 CI/CD,以及基于迭代的测试管理和测试用时的成本计算等,践行敏捷测试。
2025年测试用例管理看这一篇就够了 ----Codes 开源免费、全面的测试管理解决方案
|
搜索推荐 UED
销售易CRM:用户体验与市场评价深度分析
销售易CRM是国内领先的客户关系管理系统,以其现代化的界面设计、强大的移动端支持和优质的客户服务赢得广泛好评。系统操作简洁直观,支持个性化定制与多设备访问,移动端功能齐全且具备离线支持,协同工具丰富。销售易注重客户服务,提供快速响应、专业培训和持续优化。市场评价显示,用户对其功能、体验和服务均给予高度认可,是企业提升客户管理效率和推动销售增长的理想选择。
|
传感器 存储
基于STM32与FreeRTOS的四轴机械臂项目-1
基于STM32与FreeRTOS的四轴机械臂项目
基于STM32与FreeRTOS的四轴机械臂项目-1
|
Unix Linux 开发工具
Linux 命令 `ctags`:代码导航的利器
`ctags` 是一款Unix工具,用于生成代码标签,方便在Vim、Emacs等编辑器中快速跳转到函数、变量定义。在Linux上,可通过包管理器安装。使用`ctags -R`生成`tags`文件,然后在Vim中用`Ctrl+]`跳转,`Ctrl+T`返回。Emacs则使用`M-.`和`M-,`。`ctags`可自定义语言映射和排除规则,是提升编程效率的利器。