你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用Python+JLinkARM.dll自制J-Link烧录工具,可用于量产  

[复制链接]
5265325 发布时间:2018-5-5 18:40
本帖最后由 5265325 于 2018-8-17 14:33 编辑
; v! \9 X9 n5 d+ r1 b6 G0 U! {0 H+ j* D( z+ R; v' [8 v& X2 H$ e2 i
本工具的设计目的是为量产烧录时实现自动化烧录、一拖多烧录、同一芯片烧录多个数据、不同芯片烧录不同数据等负责的功能提供技术基础。说白了就是自己做一个能控制指定J-Link烧录指定数据的工具。工具只实现了选择J-Link序列号、选择芯片信号、选择烧录地址、选择烧录文件的一拖一烧录功能,可以自己扩展实现在一拖多、烧录序列号、烧录出厂配对数据、读取MAC地址等功能。理论上只要J-Link支持的芯片都能烧录,V8、V9和OB都支持,不过实测会有一些无法使用,例如使用外置SPI FLASH的芯片可能无法擦除或烧录。
- i/ J7 x6 e& L$ V3 x- v8 z, E$ l8 {3 F/ V+ ?$ V. J
下面只介绍本工具开发所需要的开发环境、库和原理,至于源码你们自己研究,才150多行!!!
. M. S# |% \& D! b
" x1 _( y; ]; M9 r一、工具原理6 T: o. ?4 h& t% `/ a3 y( `
工具通过调用J-Link驱动JLinkARM.dll文件实现对指定J-Link的控制,只需要一个JLinkARM.dll文件就能控制J-Link,无须另装驱动。很多使用ARM内核的芯片厂商自家的命令行烧录工具也是使用JLinkARM.dll来烧录。本工具已经集成了JLinkARM.dll文件,版本号为V6.20d,如果需要使用其他版本的JLinkARM.dll,请确保版本号在V6.0版本以上。( @, M! _( w* U) C9 C% `4 N

  l  B5 B- H  D9 R二、开发环境0 f9 n$ p8 b' d; ^/ n  t
工具使用python语言编写,因为5 I; m& h/ l: }( `$ T! {+ U0 ~  Y8 _
python是世界上最好用的语言!
0 {$ ], Z: g& F7 o- dpython是世界上最好用的语言!% F  S1 {# F  J; M5 ~
python是世界上最好用的语言!
' a/ Q( D6 x5 Y9 p  S" F" e1 p* `
建议嵌入式软件工程师们也学习python,python除了生孩子,其他事都能搞定。
  |! e( ~6 f  H8 K: f" @# y, m- c, N# ]- S5 y/ y
本工具在windows10家庭版上开发,理论上windows下都一样,linux请自行尝试。
  @! M* \& v' l0 k7 g; `3 Z  r使用python语言需要安装python,工具使用的是python3.6,其他版本请自行尝试。具体安装过程可以自行百度。
  a- x; Y  ^- wpython下载:http://www.python.org/& q: F1 F" f& B% h$ L9 T

2 s" l$ z/ {: y0 F开发环境是pycharm,一款用于python开发的IDE,社区版是免费的,安装了就能用。具体安装过程可以自行百度。
  {5 N4 H. k3 O& Xpycharm下载:http://www.jetbrains.com/pycharm/download/#section=windows
' f8 U0 S) \! O3 L5 V/ ~0 h7 P1 D4 }* h3 F8 d; v8 E& d
用到的pyhton库除了调用J-Link的pylink-square库和打包exe用的pyinstaller库之外,其他的都是python自带的,无须另外安装。
8 V3 h+ V" }$ T# [; Kpylink-square库可通过以下方法安装:
1 T( \0 p7 f  J% T* L3 l, |/ L1、在pycharm的Settings中搜索安装pylink-square库,目前最新版本是0.1.0,建议安装最新版。
5 j. K( R5 W+ X; U7 z2、命令行下输入 pip install pylink-square 安装。
& s* }" x8 L2 L; B3 y3、去pylink-square的github页下载安装,网址:www.github.com/Square/pylink。上面也有库的使用方法。/ A% H& `! w  L$ F- e. F( @' v7 V

2 P% Q  q, ]" m1 e! X7 d" [* Rpyinstaller库可通过以下方法安装:4 z- e: w, l$ I! ^6 {' z
1、在pycharm的Settings中搜索安装pylink-square库,目前最新版本是3.3.1,建议安装最新版。, h* h6 i6 ^& I  H" t- B
2、命令行下输入 pip install pyinstaller 安装。
, u2 ]* m& e# e9 h3、去pyinstaller的官网下载安装,网址:www.github.com/Square/pylink. P1 W7 [- R' h- c- B2 Z$ K
" i6 H9 i: @& ?4 P9 X5 S
、开发和打包/ m* z/ V% r- s$ s6 Q5 g$ s+ u% M: a
使用pycharm打开源码目录下的JLinkProgramTool.py文件,源码只有150多行,有界面和注释,懂python语言的相信一看就懂,所以这里就不做介绍,有问题的可以留言,我会解答。烧录时需要指定J-Link的序列号,正版J-Link每个都有不同的序列号,可以通过使用多个J-Link实现一拖多烧录。淘宝同一家店买的J-Link基本上都是同一序列号,在后面的帖子里我会教怎么修改V8和V9的序列号。
7 ?5 k0 f. l" P* s6 P2 {* \
6 H& P2 A7 f- W2 x4 V8 a开发完成可以使用pyinstaller打包成exe,方便在产线上使用,打包方法是在工程目录下打开命令行使用
) U& H5 ^4 a* j/ N6 a: b8 }. bpyinstaller JLinkProgramTool.py命令打包,打包成功会在工程目录下生成disk文件夹,进入里面找到exe文件就可以打开使用了,打包后建议将JLinkARM.dll文件复制到exe同目录下。
6 J. u# V$ a4 W( T* e; L  u0 q9 S" Y1 B- N1 d1 w  P
工具截图:
2 l( ~+ a7 T' o* k0 D TIM截图20180505184525.png : Y9 \( Q# P$ k, z

  J" d- M& h. t  e6 g8 D* D源码下载:+ J8 i$ e  ^1 n, R
JLinkProgramTool.part1.rar (15 MB, 下载次数: 2444)
2 收藏 22 评论106 发布时间:2018-5-5 18:40

举报

106个回答
5265325 回答时间:2018-8-17 14:30:17
imzhujun 发表于 2018-7-24 17:43* o2 i/ S: k2 w8 h' U4 e( v3 H, x
怎么能获取FLASH ERASE的进度呢,看了pylink的源码,好像不支持。楼主有什么办法吗? ...

, i7 ]) p/ m& z) u8 R: J- L第99行,jlink.flash_file(file, addr, on_progress=progress)的回调函数progress中,传进来的percentage值就是进度百分比
5265325 回答时间:2018-10-8 15:07:18
zengjiawei 发表于 2018-9-18 09:53
5 k( o, T5 I# K5 K3 E3 N( P. v& K请问一下单纯的erase能实现么?我的好像擦除不了

; q1 A/ h2 Z) \; t' D& k' u5 s调用jlink.erase()方法可实现全片擦除,目前还没有按扇区擦除的功能,你可以更新最新版的pylink-square库看看,进jlink.py文件可以看到所有的方法。
maxtch 回答时间:2020-5-15 21:56:41
Veiko 发表于 2020-5-14 15:28
  ]8 O" w& o' ]( O* H& k3 P; W' q  R能细说一下吗,我也准备调用JLinkArm.dll来写工具,用作公司的烧录软件

. w" f( i8 p2 J! Q5 z5 o5 D5 m5 Flibjaylink 有自己的手册,RTFM 即可。我自己从没直接用过 libjaylink,一直都是用 OpenOCD 间接调用 libjaylink 的。
wm20031015 回答时间:2018-5-5 20:22:41
建议加个指定地址写入自加的序列号功能,
maxtch 回答时间:2018-5-6 12:38:04
有没有用过 J-Flash?
5265325 回答时间:2018-5-7 09:53:32
maxtch 发表于 2018-5-6 12:38/ w  y1 x- n/ N, L
有没有用过 J-Flash?
% x; w) P3 a' l1 D; \* T3 Z( ~( Q3 b
这个工具是用来DIY扩展成产线上使用的量产工具的,如果只用来做一拖一单固件烧录,那就不需要这个工具了,直接用J-Flash
post2003 回答时间:2018-5-10 21:52:25
非常好的东西。1 j" |8 T2 I/ y% l% j
  e. Q7 d3 n# t" b) f3 P- w) O
可以自己定制烧写工具。
Keshawn 回答时间:2018-5-15 16:08:39
额,实在是没金币啊,又特别需要....
合肥·宝 回答时间:2018-5-15 16:14:09
仰望大牛
18623236045 回答时间:2018-5-16 17:18:39
金币不够,我就看看。
往事尘封 回答时间:2018-5-19 20:14:34
赚一下金币,下载用。
5265325 回答时间:2018-5-24 17:35:58
Keshawn 发表于 2018-5-15 16:089 {4 e* G) b" W2 w8 M1 w7 j
额,实在是没金币啊,又特别需要....
- A; |1 `1 @# t: G; z
已经取消金币
1543425877 回答时间:2018-5-24 21:56:00
我现在需要在Ubuntu下开发类似这样一个软件,Jlink在Ubuntu下是否有可以操作的API
90houyidai 回答时间:2018-5-28 21:59:53
改天来学习哈
shuolang126 回答时间:2018-5-29 08:52:42
牛,赞一个。
zhao.zhao 回答时间:2018-5-29 09:43:54
谢谢
$ E" ~3 T4 C0 m3 r6 _2 V+ O$ @
sx_1508448759 回答时间:2018-5-30 10:14:02
学习学习!

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版