woshi_ziyu
发表于: 2016-7-7 22:09:06 | 显示全部楼层

意法半导体的STM32F103 NUCLEO开发板自带了ST-LINK电路,可以在线调试开发板。该电路与飞思卡尔开发板的OpenSDA电路类似。与飞思卡尔OpenSDA不同的是,ST-LINK仅仅是ST-LINK:它不能在接口上使用 P&E Multilink或者Segger J-Link。幸运的是,ST-LINK预留了一个SWD接口,但不是标准接口。那么,如何使用GNU ARM Eclipse开发环境以及Segger J-Link来调试该开发板呢?

connected-j-link-with-nucleo-board.png


本篇文章主要介绍了如何使用基于Eclipse Mars的发布版和Segger J-LINK调试STM32F103 NUCLEO开发板。使用Segeer J-LINk调试NUCLEO开发板,需要将其连接到开发板的ST-LINK部分的SWD接口。这里描述的步骤适用于其他任何的NUCLEO开发板,因为他们具有相同的SWD接口。

NUCLEO开发板的ST-LINK部分有一个6脚的插头(CN4),可以用来调试NUCLEO开发板上的 STM32F103RB。

stm32f103-nucleo-board-with-cn4-swd-header.png

CN4接口的引脚定义如下:

nucleo-cn4-swd-connector.png

Segger J-Link使用标准20针的接口(具体可以看https://www.segger.com/interface-description.html):

segger-j-link-pinout.png

根据以下的连接方式将Segger J-LINK与STM32开发板相连:

Segger Nucleo
1 VTref 白色1 VDD_Target
4 GND 黄色3 GND
7 TMS 灰色4 SWDIO
9 TCK 绿色2 SWCKL
13 TDO 蓝色 6 SWO
15 Reset 桔黄色 5 NRST

j-link-connector.png

1脚位于右上角。接口的下排与地相连(除了第一个引脚,2脚)。上图的黄色线缆是将地连接到NUCLEO开发板,所以可以使用下排的任何引脚(除了第一个引脚,2脚)。


swd-connector-on-the-nucleo-board-connected-to-j-link.png

目前为止一切顺利。我们需要让Segger J-LINK知道CPU已经上电(VDD_Target):J-LINK通过VTref引脚来感知目标设备的电源。NUCLEO开发板的CN4插头的引脚没有供电:开发板上的电阻R9没有焊接。

cn4-swd-connector-schematic.png

我想这主要是考虑到想让ST-LINK使用AIN_1信号来控制电源,但并没有相连。最简单的方法是从Ardunio插头的3.3V引脚提供3.3V电源:

routing-3-3v-to-vdd_target.png


创建工程

使用File > New > Project创建一个基于STM32F103的新工程。

file-new-project.png

可以选择“C++ Project”或者“‘C Project”。

c-project.png

给项目命名,然后选择该器件的工具链(toolchain):

new-stm32f103-project1.png

在接下来的对话框可以选择默认值,所以点击Finish并创建工程。

编译工程,并提示没有错误。

project-created.png

调试

打开debug configurations,并新建一个配置信息Segger J-Link。在Device Name使用STM32F103RB。

debug-configuration-for-stm32f103rb1.png

通过这样,就可以调试了。终于可以使用Segger J-LINK调试NUCLEO开发板了。调试结果如下:

debugging-nucleo-board-with-segger-j-link.png


参考链接:

STM32 Nucleo 64参考手册:

http://www.st.com/web/en/resource/technical/document/user_manual/DM00105823.pdf

STM32F103RB原理图

http://www.st.com/st-web-ui/static/active/en/resource/technical/layouts_and_diagrams/schematic_pack/nucleo_64pins_sch.zip

跳转到指定楼层
huaiqiao
发表于: 2016-7-8 09:18:18 | 显示全部楼层

楼主用的Eclipse?这个跟keil有啥区别啊?

另外,jlink的sw方式也可以调试吧。就是接swdio,swclk
回复

使用道具 举报

woshi_ziyu
发表于: 2016-7-8 11:40:23 | 显示全部楼层

Eclipse功能比Keil强大的多 支持很多第三方插件

文中描述的J-LINK用的就是SWD方式(swdio和swclk),NUCELO没有引出JTAG,所以无法使用JTAG的方式进行调试。
如果你能看到我的世界里那些渐渐消逝的美好,你就能体会到现在所拥有的幸福。
回复

使用道具 举报

huaiqiao
发表于: 2016-7-13 09:08:45 | 显示全部楼层

woshi_ziyu 发表于 2016-7-8 11:40
Eclipse功能比Keil强大的多 支持很多第三方插件

文中描述的J-LINK用的就是SWD方式(swdio和swclk),NUCEL ...

恩恩,期待楼主出Eclipse有关stm32的教程呢。详细点更好啦。
我也想玩玩Eclipse看看呢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 28 | 回复: 50



手机版|

GMT+8, 2024-12-21 20:46 , Processed in 0.052281 second(s), 9 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表