0%

Linux下使用JLink与OpenOCD配合嵌入式开发

OpenOCD安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
~$ apt-get install libhidapi-dev libhidapi-libusb0  libgpiod-dev # CMSIS-DAP 必需要安装HIDAPI
~$ git clone http://repo.or.cz/r/openocd.git
~$ cd openocd
~$ git submodule update --init --recursive
~$ autoreconf -i
~$ mkdir build && cd build
~$ ../configure --enable-cmsis-dap

libjaylink configuration summary:
- Package version ................ 0.2.0
- Library version ................ 1:0:1
- Installation prefix ............ /usr/local
- Building on .................... x86_64-pc-linux-gnu
- Building for ................... x86_64-pc-linux-gnu

Enabled transports:
- USB ............................ yes
- TCP ............................ yes



OpenOCD configuration summary
--------------------------------------------------
MPSSE mode of FTDI based devices yes (auto)
ST-Link Programmer yes (auto)
TI ICDI JTAG Programmer yes (auto)
Keil ULINK JTAG Programmer yes (auto)
Altera USB-Blaster II Compatible yes (auto)
Bitbang mode of FT232R based devices yes (auto)
Versaloon-Link JTAG Programmer yes (auto)
TI XDS110 Debug Probe yes (auto)
CMSIS-DAP v2 Compliant Debugger yes (auto)
OSBDM (JTAG only) Programmer yes (auto)
eStick/opendous JTAG Programmer yes (auto)
Olimex ARM-JTAG-EW Programmer yes (auto)
Raisonance RLink JTAG Programmer yes (auto)
USBProg JTAG Programmer yes (auto)
Andes JTAG Programmer yes (auto)
CMSIS-DAP Compliant Debugger yes (auto)
Nu-Link Programmer yes (auto)
Cypress KitProg Programmer yes (auto)
Altera USB-Blaster Compatible yes (auto)
ASIX Presto Adapter yes (auto)
OpenJTAG Adapter yes (auto)
SEGGER J-Link Programmer yes (auto)
Bus Pirate yes (auto)
Use Capstone disassembly framework yes (auto)

~$ make -j10 && make install

OpenOCD使用

CMSIS-DAP 连接

  • 查看USB的信息
1
2
3
4
5
6
7
8
$ lsusb
[...]
Bus 001 Device 007: ID 03eb:2111 Atmel Corp.
[...]

~$ lsusb -v -s 001:007 | grep "iSerial"
iSerial 3 ATML1803040200001055

  • 添加udev规则
1
2
~$ cat /etc/udev/rules.d/49-cmsis-dap.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2111", MODE:="0666", OWNER="user"
  • 更新udev,创建一个openocd 连接配置文件
1
2
3
4
5
6
7
8
9
~$ sudo udevadm trigger
~$ cat atmel_sam4s_xplained_pro.cfg
interface cmsis-dap
cmsis_dap_vid_pid 0x03eb 0x2111
cmsis_dap_serial ATML1803040200001055
set CHIPNAME ATSAM4SD32C
source [find board/atmel_sam4s_xplained_pro.cfg]

~$ openocd -f atmel_sam4s_xplained_pro.cfg

J-Link使用

  • 假如是J-Link硬件,目标板是STM32F103ZET6带有20Pin的JTAG接口,就直接命令行连接就可以了.
1
2
~$ openocd -f interface/jlink.cfg -f target/stm32f1x.cfg

  • 假如是某宝30元左右,三线JLink-OB硬件,目标板是STM32F103ZET6带有SWD接口,就要用一个配置文件来连接了.
1
2
3
4
5
6
~$ cat jlink-swd.cfg
source [find interface/jlink.cfg]
transport select swd
source [find target/stm32f1x.cfg]

~$ openocd -f jlink-swd.cfg

JLink 恢复

  • 因为某宝上面几十元的JLink在使用大于5.0以上的驱动时,如果不升级是没有问题的.如果选择了自动升级固件,就会提示错误,并且无法使,这时只能重新刷写旧版本的固件才能使用.

擦除固件

  • 如下图所示,打开盖板,会看到两排排针,一个写着**erase,一个写着TST.先把earse**短接,上电10秒以上,断开erase,短接TST
  • 上电几秒,再继开短接.重新上电系统会出现如下设备
1
Bus 009 Device 106: ID 03eb:6124 Atmel Corp. at91sam SAMBA bootloader

SAM-BA烧写

  • sam-ba 是atmel的一个烧写工具,有Linux版与windows版,因为它是用QT开发的,所以两个平台的操作界面与流程是一样的,可以从参考链接下载, 我这里用的Linux
  • 运行sam-ba就会自动识别芯片,Jlink的主控芯片就是AT91SAM7S64, 如图所示

connector

  • 连接之后会出现如下图所示,不用修用参数,直接选一个正解的固件文件,按Send File就可以.

main

  • 烧写过程中会现对话框,要选择UnLock it,选择Yes才能烧写,后一次问你要不要Lock it锁定,选择No这样JLink才可以自动升级.

sam-ba-no-lock

使用JLink原生驱动与工具

  • 使用它的原生驱动会比使用OpenOCD要好很多,比如JLinkGDBServer.exe运行起来会监听localhost的端口,如要想从其它IP来访问不可能,在这里就要使用端口转发.下面就是把localhost2331,2332,2333分别映射为8888,8889,8890供局域网内使用.它本身也是可以支持0.0.0.0.0地址监听.

windows 端口转发

1
2
3
4
5
6
7
8
9
10
11
12
C:\Documents and Settings\Administrator>netsh interface ipv6 install
C:\Documents and Settings\Administrator>netsh interface portproxy add v4tov4 listenport=8889 listenaddress=192.168.1.235 connectport=2332 connectaddress=127.0.0.1
C:\Documents and Settings\Administrator>netsh interface portproxy add v4tov4 listenport=8890 listenaddress=192.168.1.235 connectport=2333 connectaddress=127.0.0.1
C:\Documents and Settings\Administrator>netsh interface portproxy show v4tov4

侦听 IPv4: 连接到 IPv4:

地址 端口 地址 端口
--------------- ---------- --------------- ----------
192.168.1.235 8888 127.0.0.1 2331
192.168.1.235 8889 127.0.0.1 2332
192.168.1.235 8890 127.0.0.1 2333

谢谢支持