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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TrustZone_Hcoco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值