通用脚本的写法以及命令行的写法

描述

1. 背景

2. 准备工作

2.1 硬件准备

2.2 软件准备

3. PE工具脚本语法介绍

4. 操作实例

4.1 通用脚本的写法

4.2 命令行的写法

4.3 批处理文件的写法

5. 总结:

6. 免责声明:

1. 背景

前段时间,内部同事讨论到使用Umultilink去批量烧录的可能性,想起曾经做过类似的尝试,并被客户批量生产所采用。想来也是一个经济实惠的操作,此处总结下,方便有需求的用户加以应用和扩展。

USB Multilink Universal 是PEmicro的一款简单易用的调试和编程工具,允许通过USB接口与NXP多种处理器进行通信,包括S08、S12、ColdFire、MPC55xx/56xx、Kinetis以及S32K等多款MCU,同时其也支持ST、Cypress、Microchip、Nordic、Renesas等MCU厂商,甚至还支持国产的芯片公司如GD、Auto chips、MindMotion灵动微、Zhixin等。Multilink的速度和可靠性非常适合产品开发阶段,可以与市场上NXP主流的工具链无缝衔接,如CodeWarrior、S32DS、MCUXPresso、IAR、Keil、Cosmic和Mentor Graphics等,价格相对比较便宜(最常用的Multilink FX官网报价199刀),目前在市场上保有量很高。

而在量产阶段,PEmicro也提供了一套工具叫做Cyclone Programmers,提供编程Image的板载存储、为目标提供电源,而且可以通过 PC 进行控制,也可以脱机烧写。在配置完成后产线工作人员只需要按一个启动按钮即可完成程序的烧录。当然Cyclone 编程器也支持开发过程中用作调试器,并受到许多 IDE 的支持,但是鉴于其999刀的价格用来调试程序有点杀鸡用牛刀的意思,所以大都是作为量产工具使用。

那么问题来了, 买不起999刀Cyclone Programmers,能否使用199刀Multilink作为量产工具呢?答案当然是可以的,而且还是无需打开GUI界面悄无声息的那种。本文的目标就是让大家不用拼夕夕,不用京冬冬,更不用淘宝宝,便可立省600美刀(最高立省800美刀),省钱的操作就是这么的朴素无华,却熠熠生辉。

2. 准备工作

2.1 硬件准备

USB Multilink Universal、USB Multilink Universal FX 或者Multilink ACP,相信老Freescale的用户对前面两个不会陌生,最后一个倒是有些默认,简单的来说它是一个cost down版本,只支持ARM Cortex-M 内核产品的烧录。

 

2.2 软件准备

Umultilink 驱动:USB Multilink Resources Install

序列号生成工具(Optional):Serialize Utility

Flash/EEPROM编程软件:PROG Flash Programming Software

要指出的是第3个软件不是完全免费的,如下图,对于DSC和NEXUS内核是免费的,妥妥立省800刀,而对于S08、S12、PowerPC5xx/8xx、Kinetis、LPC及S32K等ARM内核的MCU都是需要额外收费的,价格是统一的199刀,这也就是前文为何说立省600刀的原因。

Note: Flash/EEPROM编程软件 LICENSE是和Umultilink的HW序列号绑定的,也就意味着不能一个软件license不能同时用在多个Umultilink上。如果需要多个License,PE官网按照Quantity是有折扣的,譬如说10个License,价格降到139美刀了;

调试程序

其实对于PROG-HL-ARM版本还是很划算,它涵盖了市场上不同MCU厂家的大部分ARM内核处理器,如NXP、ST、Microchip、Nordic、Renesas等,甚至还有国产的芯片公司如Auto chips、MindMotion灵动微、Zhixin等,可以说是一个License在手,各家MCU编程功能我有,秒变Cyclone,如下截图是已经支持的厂商列表。回想当初,曾几何时,PEmicro的工具基本是Freescale芯片专属,现如今支持的厂商越来越多,可见如今不仅MCU市场卷,工具市场也很卷啊。

调试程序

除此之外,该版本甚至还支持对外部SPI nor Flash的编程,对于如IMXRT系列这类没有内部Flash,需要外挂Nor Flash的芯片来说也是支持的,已经支持的比较常用的vendor包括华邦Winbond、Microchip、ISSI、Microchip、旺宏MXIC、Adesto等,以部分ISSI SPI Nor Flash的支持为例如下图2。

调试程序

当然,鉴于不同Norflash厂家的Feature,譬如是否支持SFDP,是否支持8线,是否支持DDR,是否需要Byte Swap,QE位位置的差异等,其算法完全无缝支持市场上所有的Nor Flash型号也不现实(笔者在里面吃过不少苦头,心累),所以PEmicro也承诺可以帮用户去做定制,而且是免费的,甚至可以提供源代码让客户自己修改。

调试程序

3. PE工具脚本语法介绍

在安装完以上软件后,下一步就可以开始去编写自动化烧录的控制脚本程序了,在此之前还是需要了解下P&E工具脚本语法,本章节期望对关键信息点能够简明扼要的进行介绍,需要进一步扩展应用的可以参考PROGXXX_User_Manual。

P&E常用的调试工具包括Umultilink、Cyclone等, 但其脚本语法总体类似,如下以DSC内核的MWCT1003为例做一介绍,其语法格式如下:

 

CPROGDSC [?] [filename] [/PARAMn=s] [v] [reset_delay n] [bdm_speed n][hideapp] [Interface=x] [port=y] [showports] [-usebyteaddr] [/logfile logfilename]示例: 
CPROGDSC:ENGINE.CFG INTERFACE=USBMULTILINK PORT=PE5650030 //烧录DSC内核器件
CPROGARM:ENGINE.CFG INTERFACE=USBMULTILINK PORT=PE5650030  //烧录ARM内核器件

 

可以看到其包含很多参数,对应每个参数的含义如下:

[filename]-- 包含编程命令的配置脚本;default = prog.cfg,一个简单的配置脚本的写法如下。该脚本对于以前使用过999美刀的Cyclone或者Cyclone FX的用户或许不会陌生,其和Cyclone GUI配置界面的操作步骤完全一样。

调试程序

[/PARAMn=s]-- 指定命令行参数,用于替代可执行脚本.CFG中的特殊标号,譬如说芯片的型号,S19文件的位置,以及.CFG脚本中需要执行的BM(Blank Check)/EM(Erase Flash)/VM(Verify)等步骤;

[v]-- 指示编程器在programming 或者verify之前不需要检查S19文件的地址范围,这个选项可以加快用户编程速度,该选项不建议打开;

[reset_delay n]-- 指定在Reset MCU后多长时间去查看芯片是否进入background debug,单位是ms。这个参数主要是用在外部有类似UM803/UM805等的延时复位芯片的场合,编程器需要等待这些延时复位芯片完全释放才能尝试去编程,否则会出错;

[bdm_speed n]-- 指定BDM shift clock speed速度, 计算公式: USB Multilink (includes Universal): (1000000/(N+1)) Hz

[INTERFACE=x]-- X 可以是USBMULTILINK/CYCLONE/PARALLEL 三个参数中的一个,其中PARALLEL 并口下载很陈旧,很少再用到,对于本文来说UMULTILINK 就选择USBMULTILINK;

[PORT=y]-- y代表USBx,此处的x =1,2,3... 主要用于同时连接Cyclone, Tracelink, 或者 Multilink的场景,如果只连接其中一种硬件,就只有USB1。举例来说,如果PC端只连接一种debug硬件,配置可以是:  INTERFACE=USBMULTILINK PORT=USB1

[showports]-- 用于显示PC端已连接的Debug端口,会保存在ports.txt并存储在CPROG文件目录中;

[?]-- 用于暂停命令行执行,并显示编程结果,使用时需要把该选项作为第一个参数;

[hideapp]-- 指定是否显示命令行窗口,通常在调试阶段建议打开,方便查看错误信息,量产时无需打开;

[-usebyteaddr]-- 指定S19文件时字节对齐还是word对齐,通常默认word对齐方式 ;

[/logfile logfilename]-- 打开log输出,使能该选项后可以把调试过程中执行的命令以及错误信息全部打印到名称为logfilename的文件中,方便分析改进;

4. 操作实例

通过脚本命令控制Umultilink作为量产工具在实现上有两种思路:一种是把所有对芯片的Selection、Reset、Flash algorithm selection、erase、blank check、待烧录S19文件的选择都手动添加到.CFG脚本中,另外一种是使用一套通用的带默认参数的.CFG脚本,然后在执行命令时传入参数。

显然第二种方式更加灵活,用户可以直接在命令行中灵活替换通用脚本中的参数,从而支持更多的芯片型号,选择烧写算法以及指定烧录文件位置,避免重复造轮子的工作。除此之外,第一种方式还一个缺点是CFG脚本中只支持绝对路径,不支持相对路径,更换电脑或者目录都可能导致原有的配置无法工作,所以第二种方法是比较建议的,下文就以第二种方法进行讲解。

4.1 通用脚本的写法

 

:DEVICE /PARAM1;Select target device to program
RE ;Reset the MCU
CM /PARAM2;Choose Flash Module
EM ;Erase the module
BM ;Blank Check the module
SS /PARAM3 ;Specify the S19 to use
PM ;Program the module with the S19
/PARAM4 ;Verify the module again

 

4.2 命令行的写法

一个完整的示例如下,具体每个参数的含义可以参考上面的表述,只能说”很显然“()

 

C:PEMICROCPROGDSC INTERFACE=CYCLONE PORT=USB1 BDM_SPEED 1 C:PROJECTGENERIC.CFG /PARAM1=MWCT1013A /PARAM2=C:PEMICROfreescale_mwct1013a_1x16x144k_all.dsp “/PARAM3=C:PEMICROEXAMPLE FILESTEST.S19” /PARAM4=VM

 

Note:1. 以上整个command是连续的,每个参数之间只有空格,不能有行break;  2. 如果其中参数有空格,需要引号引起来,例如 “/PARAM3=C:PEMICROEXAMPLE FILESTEST.S19"

4.3 批处理文件的写法

对于产线来说,如果每次敲入命令行是比较繁琐的,所以可以保存成.bat批处理文件,这样就可以被产线自动化测试的FCT站直接调用,悄无声息的完成烧录和验证的流程。

如下批处理文件的写法,其中errorlevel是USBMULTILINK的返回值,用于判断命令行是否正确执行;

 

C:PEMicroPROGDSCcprogdsc.exe INTERFACE=USBMULTILINK PORT=USB1 D:YU_CustomerXXXGENERIC.CFG /PARAM1=MWCT1013A /PARAM2=C:PEMicroPROGDSCAlgorithmsfreescale_mwct1013a_1x16x144k_all.dsp /PARAM3=D:YU_CustomerXXXTEST.elf.S /PARAM4=VMif errorlevel 1 goto bad
goto good
:bad
ECHO BAD BAD BAD BAD BAD BAD BAD BAD
ECHO %errorlevel%
:good
ECHO done
pause

 

完成以上步骤后,在电脑端可以直接执行双击第三步的.bat文件即可实现对目标板的烧录,整个过程都是在后台自动执行的(前提是在命令行中配置了hideapp选项),可以很方便的集成到自动化生产线的FCT站中。当然,考虑到程序烧录的健壮性,建议额外加入一些错误处理机制,如4.3章节中的批处理文件,就会对errorlevel返回值进行判断。如下是上面脚本出错时的执行结果(没有使能hideapp选项),可以看到会有出错的提示信息。

调试程序

5. 总结:

上文讲解了Multilink作为量产工具所需要做的准备工作,支持的器件,P&E工具脚本语法,并结合一个具体实例介绍了通用脚本的写法、命令行的写法以及批处理文件的写法,方便有需要的用户以Multilink作为量产工具,实现低成本的量产工具。除去离线烧录和加密存储之外,Cyclone能实现的基本功能U-Multilink大都能够实现,真正的实现低成本。当然,如果不差钱,Cyclone还是优先推荐,毕竟其支持加密文件存储这点还是很强大的,可以把binary文件生成加密的SAP格式,防止知识产权被非法窃取。

原文标题:如何巧用U-Multilink作为量产工具最高立省800刀

文章出处:【微信公众号:痞子衡嵌入式】欢迎添加关注!文章转载请注明出处。 

      审核编辑:彭静

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分