keil+Jlink GD32调试记录

一、简介

        公司的GD32项目,第一次接触GD32的调试,遇到了很多问题,把这些问题和调试过程简单地记录下来,作为分享。有些地方可能不准确,说错了请在评论指出。

二、硬件与Keil连接

1. 硬件介绍

        板子使用的是GD32芯片,型号为GD32F407ZK(型号一定要弄清楚),公司产品,图片我就不拍了。Jlink,不用多说,直接将电脑和板子连接。

        板子记得上电,否则使用时Keil找不到设备。

2. keil配置

        在这一步出现了很多问题,有很多要注意的地方。

        首先,打开keil工程,如果没有建,就新建一个,教程可以去找,我没研究,直接使用的是项目提供的工程。当存在一个工程的时候,菜单栏 Project -> open project,选择keil的工程文件。

        这样就打开了一个工程。

        下一步就是修改配置了。点击上图中的魔法棒,进入配置界面。

        先看device,找到对应的型号,我的板子是GD32F407ZK,如果没有找到,可以去keil官网下载相应的设备驱动,并安装。板子的型号一定不能选错!

        然后看target,上图圈中的部分是板子rom的起始地址,keil一般默认程序会从这个地址开始读 ,即0x8000000,可以修改,但我目前还没研究。

        接下来看Linker,我没有勾选上面的Use Memory Layout from Target Dialog,一开始我勾选了,结果没想到这个工程的MDK有后缀为 *.sct 的分散加载文件,配置了节区地址,导致我调试时一直卡死在0xFFFFFFFE的位置。后面我就添加了需要的sct文件,然后,另一个坑出现了,sct文件里配置的地址时从0x8010000开始,而之前说的Keil默认地址是从0x8000000开始,还是卡死在0xFFFFFFFE,只有把sct文件里的地址修改成0x8000000才解决。

         最后是dubug,选择使用j-link调试,点击settings。

        我使用的是SWD来连接,如果前面的device选择没错,右侧会自动识别出连接的GD32设备。

        到这里基本的配置就已经配好了,可以进行编译,如果编译成功,就下载程序,最后调试。

        这就是调试界面 (打个码),怎么调试有很多教程,就不细说了。

三、调试 

         现在,我有遇到了一个keil调试的经典问题,就是调试时,在程序走到引脚初始化那里会出现报错“Could not stop Cortex-M device”。

        破案了,看门狗没有关,关掉后就不会报这个错误。


        新的问题,程序可以单步调试,但多步调试就卡死,显示如下错误:

        问题已解决,在程序初始化的时候加了一个地址的偏移,导致调试step over时出现T-bit of XPSR is 0 but should be 1. Changed to 1. 这个错误。

        关于为什么单步调试(step)可以进行,而多步调试(step over)卡死的原因,个人推测是因为step over是根据中断向量表去找要执行程序的地址,执行到哪一步了;而step则是根据当前地址去寻找下一步的执行地址(可能说的不准确,就是这个意思)。所以地址的偏移不会影响step而会影响step over。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值