
本帖最后由 5265325 于 2018-8-17 14:33 编辑 本工具的设计目的是为量产烧录时实现自动化烧录、一拖多烧录、同一芯片烧录多个数据、不同芯片烧录不同数据等负责的功能提供技术基础。说白了就是自己做一个能控制指定J-Link烧录指定数据的工具。工具只实现了选择J-Link序列号、选择芯片信号、选择烧录地址、选择烧录文件的一拖一烧录功能,可以自己扩展实现在一拖多、烧录序列号、烧录出厂配对数据、读取MAC地址等功能。理论上只要J-Link支持的芯片都能烧录,V8、V9和OB都支持,不过实测会有一些无法使用,例如使用外置SPI FLASH的芯片可能无法擦除或烧录。 H& q; ^! D4 @$ S! p: W C/ G3 J 下面只介绍本工具开发所需要的开发环境、库和原理,至于源码你们自己研究,才150多行!!!' E9 l% C) c m! J) r) F 一、工具原理# z' }5 G9 O( Z; h1 ?5 O* L 工具通过调用J-Link驱动JLinkARM.dll文件实现对指定J-Link的控制,只需要一个JLinkARM.dll文件就能控制J-Link,无须另装驱动。很多使用ARM内核的芯片厂商自家的命令行烧录工具也是使用JLinkARM.dll来烧录。本工具已经集成了JLinkARM.dll文件,版本号为V6.20d,如果需要使用其他版本的JLinkARM.dll,请确保版本号在V6.0版本以上。 二、开发环境 工具使用python语言编写,因为& x8 g0 P- y1 N+ W2 I$ H python是世界上最好用的语言!# v; }! p% ]% q: a python是世界上最好用的语言!9 n$ z! d, U. Q5 W4 `2 e4 v python是世界上最好用的语言!% c2 @' L( b( h4 Q3 i' _+ A5 L 建议嵌入式软件工程师们也学习python,python除了生孩子,其他事都能搞定。 本工具在windows10家庭版上开发,理论上windows下都一样,linux请自行尝试。$ |& _5 ]& A6 r N: W k 使用python语言需要安装python,工具使用的是python3.6,其他版本请自行尝试。具体安装过程可以自行百度。 python下载:http://www.python.org/ # E$ q0 O* U, | T6 E, f 开发环境是pycharm,一款用于python开发的IDE,社区版是免费的,安装了就能用。具体安装过程可以自行百度。 pycharm下载:http://www.jetbrains.com/pycharm/download/#section=windows / v4 C6 a' L6 ?7 x 用到的pyhton库除了调用J-Link的pylink-square库和打包exe用的pyinstaller库之外,其他的都是python自带的,无须另外安装。; ^. i, c# W2 a3 x# ^2 Q pylink-square库可通过以下方法安装:1 `6 r3 y7 `) u. |7 N7 ] 1、在pycharm的Settings中搜索安装pylink-square库,目前最新版本是0.1.0,建议安装最新版。7 X- F% T7 k9 y5 M4 g 2、命令行下输入 pip install pylink-square 安装。 3、去pylink-square的github页下载安装,网址:www.github.com/Square/pylink。上面也有库的使用方法。7 e e+ S0 l# m' m* B \/ Z. ^& _. n7 p pyinstaller库可通过以下方法安装:, N$ X$ m5 m8 ], C 1、在pycharm的Settings中搜索安装pylink-square库,目前最新版本是3.3.1,建议安装最新版。, K, O3 x2 n) `1 I( V) l d 2、命令行下输入 pip install pyinstaller 安装。% N _" r$ T2 `: H 3、去pyinstaller的官网下载安装,网址:www.github.com/Square/pylink。 " ^, I$ Y; b% a3 n3 {) O8 L1 a 三、开发和打包& {: C. `' s A, |3 _3 [ 使用pycharm打开源码目录下的JLinkProgramTool.py文件,源码只有150多行,有界面和注释,懂python语言的相信一看就懂,所以这里就不做介绍,有问题的可以留言,我会解答。烧录时需要指定J-Link的序列号,正版J-Link每个都有不同的序列号,可以通过使用多个J-Link实现一拖多烧录。淘宝同一家店买的J-Link基本上都是同一序列号,在后面的帖子里我会教怎么修改V8和V9的序列号。 2 Y$ [! n1 M1 d7 m* V V 开发完成可以使用pyinstaller打包成exe,方便在产线上使用,打包方法是在工程目录下打开命令行使用" Q ]$ v6 E: s/ n% j pyinstaller JLinkProgramTool.py命令打包,打包成功会在工程目录下生成disk文件夹,进入里面找到exe文件就可以打开使用了,打包后建议将JLinkARM.dll文件复制到exe同目录下。' K& V7 Z! I- j0 k3 `9 Q : d8 t4 Z$ U! V8 m t* ]0 ~0 A' _ 工具截图:3 i4 Y' D! _* G: h4 d5 }; P+ _ ![]() 源码下载: ![]() |
第99行,jlink.flash_file(file, addr, on_progress=progress)的回调函数progress中,传进来的percentage值就是进度百分比
调用jlink.erase()方法可实现全片擦除,目前还没有按扇区擦除的功能,你可以更新最新版的pylink-square库看看,进jlink.py文件可以看到所有的方法。
libjaylink 有自己的手册,RTFM 即可。我自己从没直接用过 libjaylink,一直都是用 OpenOCD 间接调用 libjaylink 的。
这个工具是用来DIY扩展成产线上使用的量产工具的,如果只用来做一拖一单固件烧录,那就不需要这个工具了,直接用J-Flash
1 _2 r; n. q8 F& W l5 l1 B( D% O
可以自己定制烧写工具。
已经取消金币